micro-ROSチュートリアル|ホストPC内 ping-pong


micro-ROS のチュートリアルを進め、ホスト PC と STM マイコン間で ping-pong をするまでの記事です。
なるべく docker を利用していますので、手っ取り早く sample を動かしたい方向けです。
詳細は公式のチュートリアル(参考[1])をご覧ください。

記事は 3 つに分けて投稿します。本記事は 1 記事目になります。

  1. [ping-pong] ホストPC内 ping-pong
  2. [publisher] ホストPC・マイコン間 pubsub
  3. [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メッセージには反応しないようになっています。

参考

  1. micro-ROS 公式
  2. github | micro-ROS_Demo_on_STM32_nucleo-f767zi