忍者ブログ

白黒サイクル

ロボットとジャグリングのブログ。

かわロボ技術賞テクノ・クエスト

かわロボ技術賞 テクノ・クエスト プレ大会のまとめです。




ロボット:からっ風Gimlet FPV モード
結果:優勝(結果:http://www.kawasaki-net.ne.jp/robo/wp-content/uploads/2017/03/Techno.pdf)

かわロボ系の大会で初優勝です!
バトルではなかなか成績残せていませんが、探索では勝てました!
やったー!

【ロボット概要】
ロボット本体・・・からっ風Gimlet
カメラアーム・・・4軸、長さ300mm
カメラ・・・・HDR-AS300(sony)
カメラアーム用サーボ・・・RS301CR(futaba)
温度センサ・・・AD-5617(A&D)
表示装置・・・・NEXUS7

【競技内容】
マス目が描かれたフィールド上にオブジェが置いてあります。
ロボットを遠隔操作し、フィールド上のオブジェの場所を記録すると得点です。
フィールドはバトルフィールド3面分で基本的に平地でした。

得点方法
・オブジェと障害物の場所(マス座標)と種類を記録
・水入りペットボトルの場所と温度を記録(当日に冷、温の2値で記録するように変更)
・一定区画に入場すると得点
・残り時間に応じてボーナス得点

試合動画(車載):


テストラン動画:


試合中のロボットの動きは公式から公開されると思います。

以下詳細です。

【設計方針】
低予算で十分な性能を目指して設計しました。
※申請書類は表示用の携帯まで含めたためすごい額に・・・・。
ロボット本体とサーボは手持ちのものを使用。ただしバトル仕様は早すぎるので電圧半分(6.6V)で動作。
カメラと温度センサは持っていないので性能が十分そうなものを購入。
ロボカップレスキューの経験から、複数の視点の映像が有効な事がわかっていましたが、
カメラを複数積むのはコスト&通信的な問題があり、カメラ動かした方が安いんじゃね? という結論に。
カメラの位置は
 ①ロボットの斜め後ろからの俯瞰映像が見えること
 ②温度センサの表示温度が見えること
 ③ロボット後方が見えること
を意識してアームを設計しました。

【画像伝送】
今回の大会で最大の課題は画像伝送だと思います。
これはいくつか方法がありますが
①カメラ+Wifiルーター搭載
②wifiカメラ
③カメラ+無線データ転送
あたりが使いやすい組み合わせかと思います。
使用する機器によっては①③の方が距離は飛びますが、システムが大きくなりそうなので今回は②としています。

wifiカメラは一つ問題があり、基本的に長距離飛ばさないので、飛距離は買ってみないとわからないという問題があります。
数年前にAi-Ballを使用したときは、プロポの電源を入れた段階で通信できなくなりました、(個体差があるようです)
どうせ買うなら失敗したくないので、ちょっと奮発してSONYのHDR-AS300を買いました。
通信距離+手ぶれ補正が効果が強く、これが正解でした。

プロポが2.4GHzのため、可能であれば5GHzあたりの電波を使いたいところですが、
5Gあたりで安いモジュールを知らないので2.4GHzを選定しました。
免許があれば5GHz帯のFPVドローン系の物が安いと思います。

2.4GHzを使用する場合はプロポのアンテナと映像受信部をできるだけ離すか、アンテナの弱方向を向ける、遮蔽物を置くなどの対策で多少マシになります。



【アーム】
カメラアームはロボカップを意識して設計しました。
・俯瞰視点で機体の撮影ができること
・温度センサをのぞき込める
・機体の横と後ろの撮影が可能
・ロボコン30thイベントに流用
を意識して設計しました。
RS301のトルク考えずに設計したらアームが上がらなかったため、
最終的には長さを半分程度にしてアーム長300mm程度としました。

先端を第一関節として、中間を第2関節、根元の第3関節は2個イチ+バネでトルク確保、
さらに根本のヨー角の関節で方向を変えています。





【温度センサ】
amazonでメーカー品の安いやつを探しました。
非接触だと測定距離1m前後のものと10mm程度のものがありますが、安い10mmを選びました。
ボタン押してる間だけ測定できるので結束バンドでスイッチON。
液晶に表示されるので、それをカメラに映して確認しました。


【本体】
本体はからっ風Gimletそのままで、電圧はバトルの半分にして6.6V。
アームは200mmを超えられるレベルに残して、先端に温度センサを括り付けただけのシンプル仕様です。


【操縦】
受信機のPWM出力が8chのためカメラアーム(4軸)のチャンネルが足りない。
というわけで、スイッチでバトル用アームとカメラアームの操作を切り替えていました。
カメラアームの操作は各関節の角度をプロポで指示し、
先端の関節だけは他の関節が動いてもカメラが一定角度になるよう計算しています。



【感想】
面白い大会でした!
ほぼ平面でオブジェを探すだけなのですが、時間制限あり、落下ペナルティありなので
急ぎつつ正確に探すという課題になります。
今のところサスは不要ですが、低トルクで旋回できるオムニ脚は有効でした。
今のカメラ配置だと、前足をオムニ脚にするとよいと思います。

床にマス目があるので、フィールド上の距離感やロボットの自己位置はわかりやすくなっています。
フィールドも小さいので、今のところSLAMのような技術は不要かなと思います。
ただ、映像の遅延があるため、行き過ぎたり回り過ぎたりするので、
遅延の少ないオドメトリ情報があると映像が切れそうでも動かせると思います。

映像に関して驚いたのはアクションカムの手ぶれ補正機能。
走っている間はアームは揺れるのでカメラはガクガク動いているのですが、映像はほとんどぶれないレベルです。
ちょっと信じられないレベルの安定感で、走行中も映像を確認することができました。
通信がたまに止まるのはwifiカメラなのでしょうがないですが、他の参加者よりも安定していた様子です。

優勝できたのはカメラアーム+アクションカムの影響が大きいです。
来年以降も映像通信は課題になると思いますので、このあたり頑張ると試合しやすくなると思います。

また、試合中のメンバーも重要になります。
私が探索&操作で、記録はもう一人のメンバーに任せていました。
単純にプロポを手放さなくてよいので時間を短縮できるだけではなく、
オブジェの種類と場所を記録してもらうことで、探索ルートの選定にも役立ちます。
ボッチ大会だと思ったら、本大会よりメンバーが重要でしたw

ピットはこんなこと(高さ比べ)などして遊んでいました。
特別戦常連みたいな人が集まっているので、色物ぞろいですw
メンバーしか入れないので、一途の雰囲気を楽しみたい方は参加しましょう!
(参加すると競技見れませんが・・・)



積極的に情報公開するつもりなので、気になることがありましたら気軽に聞いてください。
PR

Futabaコマンドサーボの角度取得

だいぶ期間が開きましたが、最近はコマンドサーボ(RS301)でアーム作ったりして遊んでます。




先輩から頂いたArduinoのサンプルコードをいじって、mbedでサーボの角度を取得するプログラムがやっと動きました。

コマンドサーボ配線図: http://futaba.co.jp/robot/systems
※プログラムと配線図でピンが違う&送信後の待ち時間が足りないので要注意です。


私が引っ掛かったのは
・device.readable()の使い方 →ネットで調べました
・リターン要求送信後の待ち時間 → オシロで波形を表示して測定しました。
といった感じです。

リターン要求送信後の待ち時間については、私の条件では700usくらいがちょうどいいみたいです。
REDE変数で送信と受信を入れ替えているので
待ち時間が短い→送信送信が途中で切れる
待ち時間が長い→受信信号の頭が切れる
となります。

コード載せておくので、ご参考までに。
あと、送信待ち時間の上手い設定方法がわかれば教えてもらえると嬉しいです。



ID1のサーボの角度を読み取り、ID20 を動かすプログラムです。
(+ID20の角度を読み、ID1を動かせばマスタ・スレーブっぽい動きになる)

※コピペしたらインデントが消滅しました・・・。
以下、コード

かわロボ秋シーズン

かわロボ学際シーズンです。

本大会後に実装したヨー軸の角速度補正が思ったよりうまくいき、
操作しやすくなったためか予想以上に好成績です。
2015年のほぼ全敗とは大違いw


2016年成績
本大会・・・決勝トーナメント初戦敗退、デザイン賞
KHK杯・・・ベスト12位
ヤガボット・・・4位



ヨー軸の角速度補正の内容としては

1.GY521(MPU6050)のDMPからヨー角取得※
2.10ms前のデータと比較して、角速度を計算
3.プロポの入力(旋回)-角速度×定数 を計算
  (スティックが傾いていない場合は定数を0にする)
4.Vテールに近い演算で左右の脚の出力を計算

※ピッチ角の角度出力が欲しかったので角度出力ですが、角速度出力でもよいと思います。

としました。この方法だとMAX旋回速度は落ちるはずなので、3で全体に定数をかける等すればさらに良いと思います。
からっ風はもともとプロポで旋回しづらい設定にしているので気になりませんでした。

ピッチ角補正はアームの角度を重力方向から一定になるようサーボ角度を補正していますが、
こちらは特に操作感覚が変わった感覚はありませんでした。


こんな感じで走ります。



小さな凹凸に引っかかって急に旋回することが減りました。
旋回後の停止も少し鋭くなっています。
直進性も上がっているので、操縦が楽になっています。

アームがプルプルしているのは、サーボの出力に付けているバネの効果です・・・。
衝撃を吸収してサーボを守る&丘を超えやすくする働きはあるのですが、減衰が遅いのは要修正ですね。

プロポの信号周期

かわロボの信号を処理するのに10ms周期以下だと都合がよいので
早いらしいFASSTest12CHモードを試してみました。

14SGの通信規格はいくつかありますが、双方向通信のFASSTestは二種類です。


FASSTest14CHモード・・・PWMは15ms周期

FASSTest12CHモード・・・PWMは6.3ms周期

※時間はmbedのピン変化割り込みで測定しています。
 測定精度は確認していません。

ちなみに12CHモードはいくつか制約があります。
・アナログサーボは使用できない
・テレメトリは受信機と外部電圧1chのみ
・他メーカーのシステムは対応していないものがあるかも

詳しくは14SGの取扱説明書で。

9msくらい変わるので、わかる人にはわかるのかな?

ラジコン用受信機の信号タイミング

ラジコン用受信機の信号のタイミングって時間が各チャンネル重ならないようになっていると思っていたのですが、物によってはそうでもないようです。


双葉R7008SB(T14SG付属受信機)の1chと4chの波形(電圧方向にずらしてます)


マイコンで読み込む際、ピン変化で時間計測しようとすると、割り込みのタイミング重なることがあるようです。

私の場合、各ピンごとに立ち上がりと立下りで割り込みかけて計測していたので、
タイミングが重なると誤差が大きくなる傾向がありました。

サーボがちょっと動いたり、ESCが微妙に反応したりする程度ですが、人が入力していないのに反応するのは嫌だなあと。

というわけで計測開始の割り込みを1つのピン変化に統一して、立下りはプロポのニュートラル位置をずらし、ニュートラル位置で重ならないようにしました。

動くと瞬間的に重なりますが、動いている分にはいいかなと。
ずらした量はこんな感じで1~4chは重ならないようにしています。5~8chは使用頻度少ないからそのまま。



知らなかったので手こずりましたが、タイマーの少ないマイコンでは読みやすそうですね。