スポンサーサイト

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

13年度ロボカップ20 戦略的撤退ですよ。

さて今年もスペースロボットコンテストが開催されたようですが、2年連続予選だけ1位の栄冠を手にしていた44番は今年は出場していませんでした。

忙しんです・・・。

後輩たちの練習風景をみていたが、ことしのコートは去年よりも簡単だというのにどのロボットも"低速"かつ不安定のように見える。

44番系が2年連続予選だけ1位の栄冠をとれた理由は他のチームから見たらあり得ないほどの高速かつ高い直進性と制動、旋回能力をもつハードと各所に施されたコースアウト防止&コースアウトしても複雑な操作なしに元に戻る多重防護のプログラム。その高速性能はまるで遅めのマイコンカーラリーを見ているかのよう。

去年は取得ミスが極めて少なく、高速走行や旋回にも耐えるフォーク型のアームも装備してたり。これは44番系だけ。
(44番系っていうのは3人チームの44番を2つに分けた44番と48番のこと)


今年の結果が心配すぎる。 → 書いてるうちに結果わかりました。負けたそうです。


で、本題。

面白いものができたから投稿。

Arduinoでダイセンの6chモータードライバを制御しようとして苦戦する人たちのblog記事がたくさんあるようですが、例にもれずここでも苦戦の記録。

gadgetにつながっていたI2Cの線をそのままArduinoにつなぐ。

抵抗をいれないと動かないという記事があったのでそうなるのかと思いながら接続
       ↓
普通にArduinoフリーズ。

どこまでプログラムが実行されたかを確認するためにLEDを使うと、やっぱりI2Cでデータを送信しようとしたときに止まっている。

そこで抵抗を入れてみる
   ↓
普通にArduinoフリーズ

( ゚д゚)ポカーン

他にも「こうやったら動きましたよ!」っていう記事の方法を探してみたけれど結局どれも動かず。

最後に残ったうごかない理由の可能性は「モータードライバのファームウェア更新したらいい」だそうだ。

・・・。

そんなことは面倒なのでなんとか解決しようとする。

問題解決の方法っていうのは大まかに
1,原因を究明し、その対策をうつ
2,あきらめて他の方法を探す

なんだろうが、他の筆者たちが1をするなか流れに逆行して2、を選択。

6chモータードライバにはI2Cのほかにシリアル通信のポートがついている。

これをつかってやろうという逃亡策に出る。

いや。これは逃げているのではない!戦略的撤退だ!

接続はRX-TX TX-RXとつなぐだけ。まあ一方向通信だからArduinoのTXとモータードライバのRXつなげば動くと思うけど。

あとはプログラム。

送信するデータのフォーマットがわからない。

とりあえずPCからシリアル通信でモータードライバを制御するというWindows用プログラムがあったのでそれを使ってみる。

いつも使ってるPCにはRS232Cのポートは付いていないので代わりにe-gadgetにプログラムを転送するときに使っているUSBtoSerialケーブルを使って通信する。

いたって普通に動く。

モーターの出力をとりあえず全部全速前進にしてみた

操作説明ROBO17

このソフトからの出力は1F1002F1003F1004F1005F1006F100。

16進数か?それなら楽にプログラム作れそうだ。

が、逆転させてみると

操作説明ROBO18


って違うのかよ!

しかもこれ 2進数で値だけ送信すればよかったI2C制御とは違い”文字データにしてから送る”とかいう面倒極まりない作業が必要。

もちろん

int a = 100
Serialprintln(a);

みたいなことしても動かないよ。


だが!すばらしい機能があるじゃないか!

それがString。

Arduino言語にある超便利関数。

数値を文字列にしてくれる。

たとえば数値としての10を文字列の"10"にしてくれる。

何が違うかって行ったら

数値なら10+10=20。
文字列なら"10"+"10"="1010"

とかそんな感じ。

これを使ってモータードライバに送信するデータをつくる。

書式は

モーター番号(1-6)+正回転or逆回転("F"or"R")+パワー(000-100)

これを19200bpsで送信して、あと改行したらそれを実行するらしい。

だからモーター番号1-6の命令を全部書いて送信しなくても変更があったところだけ送信して改行を送れば実行してくれる。

このように送信するプログラムをさくっとつくってみたが失敗。

理由は送信すべき数値をStringで文字列に変換してそれをそのまま送信しようとしたから。

そうすると、例えばパワー0を送信しようとしたら

1F0ってなってしまう。

なんて単純なミスなんだ!

桁数が足りなければ0を付け足すように改良。

これで動くようになった。

それからパソコンと通信するための線が占領されたらこまるのでSoftwareSerialも採用。

今回は4と5を使用。

関数にまとめてみたので公開します。


[すみません公開はもうすこし待って下さい。]


I2Cと違ってノイズに左右されにくいために何らの改造も必要なく、ただつなぐだけで、しかも安定して運用可能。

これまで一度も不具合を起こしたことがないのさ!


使って動いたらコメントを書いていただけるとVegaAltairが喜ぶでしょう。


最近発売された4chのものは115200bpsで通信できるらしいが通信速度を調節してモーター5,6の命令を削除したら動いたりするんだろうか。

持ってる人試験してくれたらうれしいです。

今日のつぶやき
あの大会のぼやきの続き

アイテム取得地点に行くためにをスタート地点から直進するだけでなはく、直進した先がアイテム取得地点ではないことも考慮して直進した先がアイテム取得地点でなければその方向を探索する機能が搭載されていたが、決勝大会で追加されたサプライズルール(?)がそのまんまアイテム取得地点を探索する機能をつけろだった。

さらにあの大会を通じて難しい方のコースに挑戦したチームは44番系だけで、ドッキングに成功したチームも44番系だけ。

ここまでしても優勝できない大会なんだぞ!

44番系は決勝初戦でぶつかって片方敗北、その次の試合が不調で周回ロボットに敗北
スポンサーサイト

コメントの投稿

非公開コメント

今回は

今回もロボカップ出るんですか?

出ます!

出ます!これだけは必ず出ます!

来年は受験なのでこれが最後のロボカップジュニアになりますが。

じゃあ今回ジャパンオープンでないと不動さんとまともに戦う機会は...orz
僕たちはブロック大会に間に合うのかなorz(高専合格したらすぐにロボット作るつもり)
ちなみに去年と同じAオープンですか???

B

今回はBオープンに出る予定です。

受験終わった後って「え、時間いっぱいあるんだけど、何しよう・・・」ってなりますからロボットなんてすぐつくれますよ!

B!!

僕たちも出れたらBです!!!
でも一番問題なのはブロック大会がいつあるかなんですよね…←まだいつか知らない
入試まえだとorzorzorz
入試終わったら聞こうと思ってるんですが…
ただ合格しなかったらISM解散なんで…
勉強頑張ります
プロフィール

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。