チームMORIMORI(森下功啓) 設計資料他~苦労話~ VER.2013
GPSロボットカー徹底分析 G空間EXPO2013 日本科学未来館 2013/11/15
My robot
INDEX
自己紹介
過去の大会の思い出
ハードウェア
ソフトウェア
見えてきたネック
今後の設計方針
自己紹介
八代高専で機械電気->熊大大学院->修了->今
NHKロボコンで電子回路
卒研でGPS
研究とは関係なくGPSロボットカー
GPSロボットカーコンテスト参加年
2006, 2007, 2009, 2010, 2011, 2013 年
出場回数の割に・・・
過去の大会の思い出
2006年 第1回大会
八代高専のメンバ9名で4チームを構成 専攻科5名, 5年生2人, 4年生2人
回路はエッチングで作成し、提供 4回ほど作り直した
GPSの原理やプログラミングの講義も実施
マイコンのハードウェア制御の記述は初心者には困難なので、ライブラリを急いで作成
ロボット制御のサンプルコードも提供
連日、夜遅くまで調整
校庭や競技場の駐車場 などで入念に実験
第1回大会の結果 チームMORIMORIは敗退
防衛大学校がぶっちぎりで優勝 2周波受信機とRTKで精密測位
防衛大学校の準備風景 チームMORIMORIのロボット
試合後は観光・・・
熊本に帰ってから地域のイベントに出たり
2007年 第2回大会
八代高専からの参加者
専攻科生1人,5年生1人
旋回角度と車速を取得するギミックを追加
チームMORIMORIのロボット
こんなGUIツールを作った
動作ログを取りつつ、現状を把握する.NETアプリ
With Visual Studio 2005
第2回大会の結果
やはり敗退
防衛大学校が優勝
技術力が高い
GPSジャイロで方位を1度以下の分解能で取得
GPSによる位置情報をほぼ利用せず
タイヤの回転センサで測位
ただし、つくばチャレンジでは上手くいっていない
タイヤの滑り率が場所によって変わることが原因
大学院へ進学してロボットの制御を研究テーマに選んだ後輩
負けっぱなしが悔しかったので 九州大会でリベンジ
障害物をよけることはできなかったが、それなりに走った。
2010年 連続weypoint送信に対応
2011年 安定走行できた
角速度センサを搭載することで安定走行
mbedやXBeeを搭載した海洋大学のロボが強く、マイコン乗換を本格的に考え始めた
Waypointの順番を決定する.NETアプリを組んだ
これまで作って来たマシンの変遷
基本構成
メモ:ロボットの図を掲載し、モジュール名を記載する
1st.
電装系の基本構成 ver. 1
車速センサ:光
方位センサ:地磁気
H8/3687F
GPS受信機:GPS-15L
PWM波形
NMEA-0183
駆動モータ(アンプ)
サーボモータ(操舵)
矩形パルス
3 bitデジタルIO
ラジコンの受信機 (暴走時の遠隔操作用)
PWM波形
動作アルゴリズム ver. 1
GPS受信機から得られたシリアルデータは割り込みを利用して処理
適当な周期で制御量を調整
基本は、目標地点が左右のどちらにあるかを判断して、そちらに一定時間旋回
旋回量は時間制御
この時の課題
測位精度は静止時平均で約3 m MSASが受かって調子が良いと良いのだが…
加速度センサも着けていたが、衝撃に起因するノイズが多すぎて積分しても旋回半径は計測不能(角速度と共に高速サンプリングが可能なら、OKかも)
車速センサが太陽の影響を受けてしまい、屋外だと信頼性に欠けた
1 Hzで出力されるGPS受信機GPS-15Lの出力をリアルタイムで信頼すると、GPS受信機の応答遅れが原因で動作が発散気味・・・応答遅れを考慮していないのも要因
磁気方式の方位センサを基板に取り付けると計測できず モーターの磁力と回路基板の電流が影響
接地環境(コンクリ・アスファルト・草・砂),バッテリ出力(パック・時間・気温・活性化)により直進性が変わる 微妙な左右の重量バランスによっても変わる
2nd.
電装系の基本構成 ver. 2 直進性を増すために、旋回量センサを自作
路面状況に随時追随するために旋回量をフィードバック
車速センサ:
ロータリーエンコーダ
H8/3867F
GPS受信機:GPS-15L
PWM波形
NMEA-0183
駆動モータ(アンプ)
サーボモータ(操舵)
ラジコンの受信機 PWM波形
旋回角度取得:
可変抵抗器によるボリューム アナログ電圧
コンパレータを使って矩形パルスへ加工
動作アルゴリズム ver. 2
Ver. 1とほぼ同じだが
目標地点が左右のどちらにあるかを判断して、そちらに一定時間旋回
旋回量は旋回角度と進んだ距離で制御・・・しようとしたが、路面状況によって旋回角度がうまく得られなかった
・・・旋回角度のフィードバックを行っていた記憶はあるが、詳細を忘れた。
ちゃんと図面を引いて、 車軸は旋盤加工、
その他はコンタマシンと ボール盤とフライス盤で加工。 タップでネジも切った。
この時の課題
旋回角度と移動量を後部機械部品で計測していたが、走行中にネジが緩んで徐々に特定が変わって行った
作るのに苦労した割に、性能が出なかった
機械的な調整が非常に大変・・・
その上、バックできない!
障害物(ポール)を避けられない!(涙)
3rd.
ハードウェア構成 ver. 3
初めて角速度センサを利用 この頃、丁度使いやすいデジタル式のセンサが市販された!
ようやくまともに動いた
車速センサ: ホール素子 (磁力センサ)
角速度センサ: IMU3000
Arduino
H8/3687F
GPS受信機
PWM波形
NMEA-0183
駆動モータ(アンプ)
サーボモータ(操舵)
コンパレータを使って矩形パルスへ加工
障害物センサ: 超音波 アナログ電圧
PWM波形
GPS受信機:GPS-15L
IIC
動作アルゴリズム ver. 3
基本はVer. 2と変わらず
角速度センサを用いた直進性保証を追加
角速度の移動積算値が閾値を超えると逆向きにハンドリング
サーボモータの制御値を変更
ハンドリングは機械的なヒステリシスに起因して直ぐには応答しない
従ってサーボのニュートラル(直進時を基準として)の量を徐々にドリフトさせることで対応
この時の課題 マイコン2つは、スマートではない 有線通信はかっこ悪い
高速にログが取りたかったという欲求
無線通信か有線通信のどちらか切り替える必要があった
高頻度測位のGPS受信機を使いたい ネック:マイコンの動作速度
H8@20 MHzはArduino UNO@16 MHzより断然早いのだが・・・
シングルタスクで動作するマイコン上で複数のタスクを滞りなく処理させるには・・・ この時はソースコードがフラグ祭りでメンテナンス性が低下
勝つためにはどうしたらいい?
今後の方向性
勝つための条件
頭の切れはこれ以上どうしようもないので、ハード面からアプローチ
高い測位精度
軌道計画プログラムの実装
RTK測位 高速な通信 高速な演算性能
勝つための条件 掘り下げ
RTKは(ハード的にも)敷居が高い 高い測位精度のGPS受信機を使う むしろ測位演算を自前でやる
疑似距離さえ得られれば可能
IMU統合 又は、 レーザーリフレクターと外部計算機支援
次の条件を満たすマイコンを使用
高速な演算 開発期間短縮
プログラムの移植性が高い センサをつなげやすい
現時点でのハードウェア的な解
ハードウェア項目 内容
GPS受信機 u-blox Tシリーズ
(取得可:RAW, 疑似距離, etc)
通信機 XBee 2台
マイコン Arduino Mega/Due
IMU 9軸センサ
その他 レーザレンジファインダ
Linux対応版とかないかな?
次世代機の設計
ハードウェア構成 ver. 4(今ここ)
さ・・・作成中・・・
RTKを目指している
車速センサ: ホール素子
角速度センサ
Arduino Due/ mbed/
Rasbberry pi
GPS受信機:u-blox T
PWM波形
NMEA, bin
駆動モータ(アンプ)
サーボモータ(操舵)
矩形パルス
障害物センサ:超音波 アナログ電圧
IIC
車速センサ
ホール素子を使用
磁石をタイヤに取り付け、その回転を検出
ホール素子の出力はコンパレータに入力して、2値化
ヒステリシスは40mV程度?
パルスの立ち上がりエッジでIRQ割り込みをかけ、タイマ値を取得
角速度センサ
分解能が高く、重力加速度方向も検出できる9軸センサを使用
通信がI2Cで面倒
Arduinoならライブラリがある
障害物センサ
超音波センサ
理想はレーザーレンジファインダ
運営側に欲しいもの
欲しいものリスト
テント
雨がつらい
電源
技術交流会
ATENDを使って機会を作ってもいいと思う
Bye!