MR1を支えた Ethernet&ROS システム

472bd455afffd59d4e2ece07d9478ad4?s=47 VTb
September 16, 2019

MR1を支えた Ethernet&ROS システム

大工大技術交流会2019でのスライドです。

途中の動画はこちらから
https://www.youtube.com/watch?v=bgueLgHiLhQ

ソースコードが公開されているGitLabはこちらから
https://gitlab.com/kikaiken

472bd455afffd59d4e2ece07d9478ad4?s=128

VTb

September 16, 2019
Tweet

Transcript

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

  2. 目次 • MR1について • ROSシステムの概要 • システムの詳細 • 開発時の問題点 •

    評価 • NHKロボコン2020に向けた取り組み
  3. MR1について • 15年ぶりの出場のため、MD,制御を始めとする 全技術を9ヶ月で開発 • 制御の主軸は 転がしエンコーダー と IMU を用

    いた制御 • LiDARとROSを用いた自己位置推定システム は絶対位置を補正するための補助
  4. ROSシステムの概要 • 全制御はSTM32F767ZI NUCLEOを2台使う ことによって行われる • LiDARの測定データをPCで処理し、Ethernet 経由でSTM32F7に流し込む • 5GHzのWiFi

    APを搭載することで、セッティン グ時にLiDARの動作状況を手元のLaptopで 確認することができる
  5. システム詳細(Cartographer) Googleが開発したSLAMソフトウェア。ROSパッケージが用意されている 通常のSLAMと、あらかじめ用意されたマップをもとに自己位置推定を行う PureLocalizationを利用することができる Thinkpad X1 Carbon(2018, 8th Gen Corei7,

    16GB)でほぼ完全に動く Raspberry Pi とか Windowsタブレット(Atom, Corem3)は厳しそう
  6. None
  7. システム詳細(ROS) • 北陽LiDARからのデータをGoogleの自己位置推定エンジン Cartographerによって処理し、 carto2poseによって座標データに変換、自己位置を得る • 得られた自己位置情報はrosbridgeとrosbridge-proxyによって独自フォーマットのデータに変 換され、STM32F7にUDPパケットとして送られる • STM32F7は受け取った自己位置とエンコーダーによる自己位置を相補フィルタによって統合

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

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

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

    トライ&エラー で改良を進めるしかなかった
  14. 評価 • LiDAR+Cartographer を用いることでcmオーダーの絶対位置を得ることができるため、自動 化においてかなりの威力を発揮した • ライントレースやカメラ等によるセンシングよりも外乱に強い • ROSを用いることで、アルゴリズム開発をしなくて良い。開発負担の軽減 •

    ROSによるロボットからのデータの可視化が容易 (今回はあまり活用できていない) • 楽しい(とても大事) • LiDARの取り付けや角度調整が面倒 • LiDAR系と転がしエンコーダー系の時間的なズレへの対処が必要 • RTOSを用いていないため、Ethernetの処理が増加すると制御も崩壊する • Linuxとマイコン両者を扱える人がほとんどいない (=技術継承の困難)
  15. NHKロボコン2020に向けた取り組み • RTOSを用いることで、安定した動作を目指す • UART上の独自プロトコルをEthernet上のUDP通信に置き換える(=Ethernetの本格採用) • ログを収集し、PC上で容易に確認可能にする • 後継者の育成 •

    ロボコン界隈へのROS,Ethernetという新たな選択肢の導入 • EthernetケーブルにはEthernetフレームを流したい
  16. ソースコード一式 • 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