micro-ROS のチュートリアルを進め、ホスト PC と STM マイコン間で ping-pong をするまでの記事です。
なるべく docker を利用していますので、手っ取り早く sample を動かしたい方向けです。
詳細は公式のチュートリアル(参考[1])をご覧ください。
記事は 3 つに分けて投稿します。本記事は 1 記事目になります。
- [ping-pong] ホストPC内 ping-pong
- [publisher] ホストPC・マイコン間 pubsub
- [ping-pong] ホストPC・マイコン間 ping-pong
環境
ホスト PC:Ubuntu 18.04.4 LTS
対象ボード:STM32 Nucleo-144 開発 ボード NUCLEO-F767ZI
docker を使うので、他の環境でも動くかと思います。
nucleo-144 は比較的お手頃で、ポーティングしている方がいた(参考[2])ので選んでいます。
サンプル実行
エージェントを経由して、ホスト内の2つのping-pongプログラムがメッセージを飛ばし合うサンプルを実行します。
ここでの作業は全てdockerに入っているので、dockerを実行するだけです。
エージェントの起動
$ docker run -it --rm --net=host --name uros_agent microros/micro-ros-agent:dashing udp4 --port 8888
別ターミナルでping_pong(uros_demos_1)を起動
$ docker run -it --rm --net=host --name uros_demos_1 microros/micro-ros-demos:dashing ros2 run micro_ros_demos_rcl ping_pong
別ターミナルでping_pong(uros_demos_2)を起動
$ docker run -it --rm --net=host --name uros_demos_2 microros/micro-ros-demos:dashing ros2 run micro_ros_demos_rcl ping_pong
実行結果
ping_pongが起動後、エージェントの標準出力に establish_session
が表示され、接続ができていることがわかります。
また、2 台のping_pongの実行後はそれぞれがpingを送り、受け取ったpingに対してpongを送り返しています。
なお、ここで使用しているサンプルでは自分の飛ばしたpingメッセージには反応しないようになっています。