Slide 1

Slide 1 text

MR1を支えた Ethernet&ROS システム 大工大技術交流会2019 京都大学機械研究会

Slide 2

Slide 2 text

目次 ● MR1について ● ROSシステムの概要 ● システムの詳細 ● 開発時の問題点 ● 評価 ● NHKロボコン2020に向けた取り組み

Slide 3

Slide 3 text

MR1について ● 15年ぶりの出場のため、MD,制御を始めとする 全技術を9ヶ月で開発 ● 制御の主軸は 転がしエンコーダー と IMU を用 いた制御 ● LiDARとROSを用いた自己位置推定システム は絶対位置を補正するための補助

Slide 4

Slide 4 text

ROSシステムの概要 ● 全制御はSTM32F767ZI NUCLEOを2台使う ことによって行われる ● LiDARの測定データをPCで処理し、Ethernet 経由でSTM32F7に流し込む ● 5GHzのWiFi APを搭載することで、セッティン グ時にLiDARの動作状況を手元のLaptopで 確認することができる

Slide 5

Slide 5 text

システム詳細(Cartographer) Googleが開発したSLAMソフトウェア。ROSパッケージが用意されている 通常のSLAMと、あらかじめ用意されたマップをもとに自己位置推定を行う PureLocalizationを利用することができる Thinkpad X1 Carbon(2018, 8th Gen Corei7, 16GB)でほぼ完全に動く Raspberry Pi とか Windowsタブレット(Atom, Corem3)は厳しそう

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

システム詳細(ROS) ● 北陽LiDARからのデータをGoogleの自己位置推定エンジン Cartographerによって処理し、 carto2poseによって座標データに変換、自己位置を得る ● 得られた自己位置情報はrosbridgeとrosbridge-proxyによって独自フォーマットのデータに変 換され、STM32F7にUDPパケットとして送られる ● STM32F7は受け取った自己位置とエンコーダーによる自己位置を相補フィルタによって統合 し、制御に使う

Slide 8

Slide 8 text

システム詳細(STM32F767) ● Ethernetの処理はLWIPによって行われる。 ● データ受信用のハンドラを設定し、 MX_LWIP_Process()を10msタイマーで呼び出すと受信ハ ンドラが呼び出される。 ● データ量が多すぎるとマイコン自体が死ぬ (何度か暴走してます。)

Slide 9

Slide 9 text

ソースコード一部掲載(全体公開は間に合いませんでした)

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

開発時の問題点 1. Ethernetの処理が重くなり、制御が死ぬ Ethernetの処理と制御の処理が同じ10msタイマーによる周期で走る Ethernetの処理が重くなると制御の処理が終わり切らず死ぬ LWIPの処理遅延(5〜10ms)による座標のズレ 2. 利用事例が少ない ロボコンでEthernetを本格的に用いている事例は多くない (そもそも情報がない) トライ&エラー で改良を進めるしかなかった

Slide 14

Slide 14 text

評価 ● LiDAR+Cartographer を用いることでcmオーダーの絶対位置を得ることができるため、自動 化においてかなりの威力を発揮した ● ライントレースやカメラ等によるセンシングよりも外乱に強い ● ROSを用いることで、アルゴリズム開発をしなくて良い。開発負担の軽減 ● ROSによるロボットからのデータの可視化が容易 (今回はあまり活用できていない) ● 楽しい(とても大事) ● LiDARの取り付けや角度調整が面倒 ● LiDAR系と転がしエンコーダー系の時間的なズレへの対処が必要 ● RTOSを用いていないため、Ethernetの処理が増加すると制御も崩壊する ● Linuxとマイコン両者を扱える人がほとんどいない (=技術継承の困難)

Slide 15

Slide 15 text

NHKロボコン2020に向けた取り組み ● RTOSを用いることで、安定した動作を目指す ● UART上の独自プロトコルをEthernet上のUDP通信に置き換える(=Ethernetの本格採用) ● ログを収集し、PC上で容易に確認可能にする ● 後継者の育成 ● ロボコン界隈へのROS,Ethernetという新たな選択肢の導入 ● EthernetケーブルにはEthernetフレームを流したい

Slide 16

Slide 16 text

ソースコード一式 ● cartographer_ros cartographerのROSパッケージ https://gitlab.com/kikaiken/cartographer_ros ● carto2pose cartographerのデータから座標データを取り出す https://gitlab.com/kikaiken/carto2pose ● rosbridge_proxy JSONから独自フォーマットへ変換する https://gitlab.com/kikaiken/rosbridge-proxy