スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

44番情報公開1 ソフトウェア構成

44番のプログラムはとってもわかりやすくて高機能。

それを支えるのが使いやすく高機能な関数群。

違うハードウェアでもその差を関数が吸収するため違うロボットでも同じ動きをさせることができる。

全部Arduino用





motor() 開発名motor
宣言 void motor(int power , int dir , int turnpower)
戻り値 なし
依存 なし
機能 powerは力(0-255)、dirは方向(0-359)、turnpowerは回転方向と力(-255-255)。
   4輪のオムニホイールを制御しやすくするために作った。
   コート上のロボットの動きは平面2軸の直行座標と地面からの垂直方向を軸とする回転(ヨー)で示すことができる。
   というわけでこれら3つの情報だけでオムニ台車のロボットを制御することができる。
   ただ、人間にはx,yからなる直交座標で進む方向を指定するよりも方向と長さ(この場合なら方向と力)からなる極座標で指定したほうがやりやすいので極座標を採用。
   進む力と回転する力を足すことで合成し、モーターを動かす。
   大会では胡蝶が使用。

motor() 開発名intmotor
宣言 void motor(int power,int dir,int turnpower)
戻り値 なし
依存 なし
機能 上記のmotorは浮動小数点数を大量に使用していたため計算速度を早くしようとその計算をすべて整数(int)でやってみようとしたもの。
   結果、4倍早くなったがあまり変わらないなということで使用しなかった。
   進む力と回転の合成を足すのではなく回転を優先し、その余った力で進むようにしたため走行中は回転が遅くなるという欠陥が解消されている。

motor() 開発名dmotor
宣言 void motor(int power,int dir,int turnpower)
戻り値 なし
依存 なし
機能 motorとintmotorをあわせて作った。motorの進む力と回転の合成部分をintmotorのものに取り替えた。
   大会では不動が使用。大会直前に作ったため安定性を求める胡蝶には採用されていない。

motor() 開発名master007
宣言 int motor(int power,int dir,int turnpower)
戻り値 i2cの通信状態
依存 なし
機能 不動はdmotorを台車側Arduinoに搭載しているためメインコンピューターは情報を送信するだけでよい。
   その情報をi2c経由で送信するための関数。
   違うハードウェア間で同じ動きをさせる例。

emotor() 開発名emotor
宣言 void emotor(int power,int dir,int turnpower)
戻り値 なし
依存 motor()
機能 motor()の拡張。motor()に規定を超える数を代入しないようにするためのもの。
   power(0-255)に300と入力すれば255にしてくれる。dir(0-359)に400と入力すれば40にしてくれる。
   大会では胡蝶と不動が使用。

daisen() 開発名daisen003
宣言 int daisen(int motor_power1,int motor_power2,int motor_power3,int motor_power4,int motor_power5,int motor_power6)
戻り値 i2cの通信状態
依存 なし
機能 もともとはダイセン社製の6chモータードライバを動かすための関数だった。が、いろんなところで騒がれているArduinoから動かそうとしたらフリーズする問題で没に。代わりに不動台車のモーターを個別に動かすDaisenMode用に使われている。

c360() 開発名c360
宣言 int c360(int target)
戻り値 0-359の値
依存 なし
機能 emotorの”dir(0-359)に400と入力すれば40にしてくれる。”の機能だけ独立させたもの。
   方位センサーまわりで便利に使えることがわかったので独立させた。

us() 開発名us
宣言 long us(int pingpin)
戻り値 超音波センサーの測定結果
依存 なし
機能 超音波センサーから値を読むだけのふつーのプログラム。
   plusein()を使用。

us() 開発名us2
宣言 int us(int pingpin)
戻り値 超音波センサーからの測定結果またはエラーコード
依存 なし
機能 plusein()を使用したパルス長計測は超音波センサーがはずれていたりコードが断線してたとかのときにプログラムの実行が1秒ほど停止されてしまう。
   そこでplusein()を使用せずにパルス長を計測し、異常を検知したら測定を中止し、決められた数字を出す。
   たとえばその数字を0にしたら壁を検知するアウトオブバウンズ対策に影響を与えるが1000にしておけばその心配は無い。

magdir() 開発名daisenmagdir
宣言 int magdir()
戻り値 コンパスから読み取った値
依存 なし
機能 ダイセンの多機能電子コンパスを使うための関数。一番初めに作った関数。
   センサーの性能が悪すぎるために使われなくなった。
   後述するmagdirと入れ替わってバグの原因になったりと、とっても鬱陶しい。

magdir() 開発名hmcmagdir
宣言 int magdir()
戻り値 コンパスから読み取った値
依存 なし
機能 hmc6352から値を読む関数。磁気方位センサーから値を読むからmagdir。
   数学の単位円の角度の方向に合わせて数値を逆にし(時計回りに増える数字を反時計回りに増えるようにした)、0.1度の精度をおとして1度きざみの0-359にして出力。

rmagdir() setdir() 開発名rmagdir
宣言 int rmagdir() void setdir(int dirinit)
戻り値 rmagdir():方位合わせされた角度
依存 magdir() c360()
機能 これまでセンサー本体を回していた方位あわせをソフトウェア上でできるようにしたもの。
   といってもたった1行追加しただけ。
   setdir()で方位合わせをしてrmagdir()で方位を読む
   setdirはsetdir(90);とすると現在向いている方向を90度とする、とかそういうふうに使う。

daisen() 開発名hexmot
宣言 void daisen(int motor_power1,int motor_power2,int motor_power3,int motor_power4,int motor_power5,int motor_power6)
戻り値 なし
依存 なし
機能 以前公開したhexmotそのまま。i2cの代わりにシリアル通信を使用して6chモータードライバを作動させる。
   通信速度を115200bpsにしたら4chも動いた。

gadget() 開発名gadget
宣言 int gadget(int pin)
戻り値 スレーブとしたgadgetのセンサーの値
依存 なし
機能 e-gadgetをセンサースレーブにして動かす関数。
   胡蝶に搭載していたが、結局gadgetの先につけるセンサーが故障して使わなかった。
   立/命/館/守/山/高/校/ /S/c/i/-/t/e/c/h/部さんのgSlaveSensorの改造品。
   自由に使っていいって書いてあったので・・・。

analyze() 開発名analyze
宣言void analyze(int dir,int power)
戻り値 なし(グローバル変数に出力)
依存 なし
機能 極座標を直交座標に変換する関数。oobで使う。だふがコーディングした。

mixPower() 開発名mixPower
宣言 void mixPower(int xpower,int ypower)
戻り値 なし(グローバル変数に出力)
依存 なし
機能 直交座標を極座標に変換する関数。oobで使う。だふがコーディングした。

oob() 開発名oob
宣言 void oob()
戻り値 なし
依存 analyze() mixPower() us()
機能 アウトオブバウンズ対策を一手に引き受ける関数。仕組みはそのうち書く。
   かなり便利。だふがコーディングした。
   ハードウェア構成が大幅に異なる不動にそのままコピペしたのに動いたという関数標準化の鑑。


またこんど、仕組みと一部のソースコードを投稿します。
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

Vega  Altair

Author:Vega Altair
大学生になりました。
44番というチームでロボットの大会に出ていたドリルの刃を手で回してアルミ板に穴を空ける系プログラマー。
twitter始めました
サイト跡地にのなめ倉庫を設置してみた。下のリンクからどうぞ。

カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
最新コメント
最新記事
月別アーカイブ
カテゴリ
きたひと
このblogには
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。