背景
前回に続きというか、ほぼ同じ内容だが、ROS2 Dashのdocker imageを利用してROS2 docker間でROS2通信(正確にはeProsima FastRTPS DDSI-RTPS通信)が疎通することを確認した。Docker間で特に手順を必要とせずにdocker networkで通信させれば、特定のROS2 node軍(群)を複数のdocker imageに分配してdeployすることができるし、別にcrystal使ってもいいし、Eシリーズを使ってもいいので、ROS2 applicationを開発する側としては嬉しいじゃんという話。
手順
- ros2 dashingのdocker imageをdownloadする。
- docker runして必要なpackageをインストールする。
- ros2 demoを実行する。
環境
Host Linux: Ubuntu 16.04.6 LTS
Docker version 18.09.7, build 2d0083d
Host環境にはROS2はインストールしていない。(汚したくないから)
実際にやってみる
ros2 dashingのdocker imageのdownload
# docker pull ros:dashing
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ros dashing 9dadb912c594 6 days ago 837MB
これだけでOK!!!
docker runして必要なpackageのインストール
今回はros_dash dockerからros_dash_2 dockerへtopic送信してみる。
使うのは提供されているdemo_nodes_cpp packageのtalker/listenerを利用する。
[Terminal-1]
/// ros_dash docker
# docker run --name ros_dash -v /home/tomoyafujita/docker_ws:/root/docker_ws -it 9dadb912c594
root@23c0445301fd:~# apt update
root@23c0445301fd:~# apt install net-tools iputils-ping ros-dashing-demo-nodes-cpp
[Terminal-2]
/// ros_dash_2 docker
# docker run --name ros_dash_2 -v /home/tomoyafujita/docker_ws:/root/docker_ws -it 9dadb912c594
root@23c0445301fd:~# apt update
root@23c0445301fd:~# apt install net-tools iputils-ping ros-dashing-demo-nodes-cpp
ros2 run 実行
[Terminal-1]
root@b328e1e39a4a:~/docker_ws# ros2 run demo_nodes_cpp talker
[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
[INFO] [talker]: Publishing: 'Hello World: 4'
[INFO] [talker]: Publishing: 'Hello World: 5'
[INFO] [talker]: Publishing: 'Hello World: 6'
[INFO] [talker]: Publishing: 'Hello World: 7'
[INFO] [talker]: Publishing: 'Hello World: 8'
...
[Terminal-2]
root@23c0445301fd:~# ros2 run demo_nodes_cpp listener
[INFO] [listener]: I heard: [Hello World: 20]
[INFO] [listener]: I heard: [Hello World: 21]
[INFO] [listener]: I heard: [Hello World: 22]
[INFO] [listener]: I heard: [Hello World: 23]
[INFO] [listener]: I heard: [Hello World: 24]
[INFO] [listener]: I heard: [Hello World: 25]
[INFO] [listener]: I heard: [Hello World: 26]
[INFO] [listener]: I heard: [Hello World: 27]
...
できました。