Successfully reported this slideshow.
Your SlideShare is downloading. ×

Rosserial stm32

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 13 Ad

More Related Content

Slideshows for you (20)

Similar to Rosserial stm32 (20)

Advertisement

Recently uploaded (20)

Advertisement

Rosserial stm32

  1. 1. rosserial_stm32 yoneken ROS JAPAN UG #24 勉強会
  2. 2. お前誰よ? 今日は時間ないから飛ばすねー 2
  3. 3. 本日のメニュー ● 何を作ったか ● 何が嬉しいのか ● どうやって作ったのか ● デモ ● 使い方 ● まとめ + 余談 3
  4. 4. 何を作ったのか シリアル通信を使って、STM32マイコンでROSメッセージをしゃべったり聞いたりする ROSノード rosserial サーバー rosserial クライアント マイコンの プログラム ROS メッセージ TCP USART ソフトウェア的な構造 PC USB USB シリアル マイコン USB USB-シリ アルの内 部 シリアル 通信 物理的な構造 4
  5. 5. 何が嬉しいのか ● モータコントロールやセンサとの通信(SPI/I2C/CAN)などローレベルのデバイス制 御は、リアルタイム性に欠けGPIOポートのない汎用PCには困難 ● Raspberry-PiやBeagleboneは計算能力が貧弱 ● リアルタイム性やローレベルのデバイス制御をマイコンに任せることで、ROSが動く 環境をリッチにできる ● シリアル通信は基本1対1通信なので、同じポートにぶら下がるデバイス数を絞れ ば通信部分もそれなりに速い ● PCのUSB-シリアル変換ケーブルやマイコンのUSART機能は、あと10年くらいは 供給ありそう 5
  6. 6. どうやって作ったのか rosserial ● シリアル通信でROSメッセージをやりとりするためのプロトコル ● クライアント側ライブラリ ○ 既存のROSメッセージの型を非ROS環境用にコンバートするスクリプト ○ ROSっぽいコードになるよう、ros::NodeHandleが実装されている ○ Arduinoやmbed、Windows用の実装がある ● サーバ側ノード ○ ROS環境で動作し、TCP/IPのROSメッセージをシリアル通信用にコンバート。 逆もやる。 ● Publisher/Subscriberを非ROS環境側で動的に生成/削除できる ● 複数トピック対応 これをSTM32用に移植 DMA(Direct Memory Access)機能を利用したので、 おそらく他の方法より低負荷で高パフォーマンス 6
  7. 7. デモ ● Thermocamera 7 https://github.com/yoneken/rosserial_stm32/tree/master/src/ros_lib/examples/thermocamera
  8. 8. 使い方 1. マイコン側の開発環境であるCubeMXとSW4STM32をインストール 2. rosserialをインストール (e.g. $ sudo apt-get install ros-kinetic-rosserial ) 3. rosserial_stm32をcatkin_ws内にclone & build 4. サンプルプログラム(rosserial_stm32/src/ros_lib/examples/chatter )を任意のディレクトリにコピー 5. 4の中で $ rosrun rosserial_stm32 make_libraries.py . してヘッダファイルを生成 6. CubeMXを起動し、3の中の .ioc ファイルを開く 7. CubeMXでHALとSW4STM32用のプロジェクトを生成 8. SW4STM32を起動し、6で作成したプロジェクトをインポート 9. 7のプロジェクトをSW4STM32でC++プロジェクトにコンバート 10. 8をビルド 11. $ roscore を起動 12. $ rosserial_python serial_node.py /dev/ttyACM0 を起動 8
  9. 9. 使い方 1-1 1. マイコン側の開発環境であるCubeMXをインストール 9 ずっと下 要ユーザー登録
  10. 10. 使い方 1-2 1. マイコン側の開発環境であるSW4STM32をインストール 10
  11. 11. 使い方 2, 3 $ sudo apt-get install ros-kinetic-rosserial $ cd ~/ros/src/ $ wstool set --git rosserial_stm32 git@github.com:yoneken/rosserial_stm32.git $ wstool update rosserial_stm32 $ catkin b rosserial_stm32 11
  12. 12. 使い方 6, 7 12 クリック
  13. 13. まとめ + 余談 ● rosserialをSTM32マイコン用にポーティングした ● DMAで実装して世界さいつよにできたと思うの で、みんな使って欲しい ● rosserialに取り込んでもらおうとおもってPRした ら、「STM32はHALも開発環境も多すぎて面倒見 きれないから勝手にやって」と断られてつらい https://github.com/ros-drivers/rosserial/pull/352 13

×