pf-robotics / kachaka-api

スマートファニチャープラットフォーム「カチャカ」API
https://kachaka.zendesk.com/hc/ja/articles/7660222791183-%E3%82%AB%E3%83%81%E3%83%A3%E3%82%ABAPI
Apache License 2.0
85 stars 24 forks source link

`ros2 topic echo /kachaka/layout/locations/list` does not show any message from brdige #69

Closed fujitatomoya closed 3 months ago

fujitatomoya commented 9 months ago

Setup Procedure

  1. setup ros:humble workspace with https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html# (with https://github.com/ros2/ros2/commit/74aa2018edb0eca9e80b4d279f71195d3ab207cf)
  2. start bridge as described in https://github.com/pf-robotics/kachaka-api#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D
tomoyafujita@~/DVT/docker_ws/kachaka-api/tools/ros2_bridge >pwd
/home/tomoyafujita/DVT/docker_ws/kachaka-api/tools/ros2_bridge
tomoyafujita@~/DVT/docker_ws/kachaka-api/tools/ros2_bridge >./start_bridge.sh 192.168.1.226
...
  1. Build kachaka required interfaces with colcon workspace.
root@tomoyafujita:~/docker_ws/ros2_humble/src/ros2# ls -lt | grep kachaka
lrwxrwxrwx  1 1000 1000   46 Dec  6 18:26 kachaka_description -> ../../../kachaka-api/ros2/kachaka_description/
lrwxrwxrwx  1 1000 1000   45 Dec  6 18:25 kachaka_interfaces -> ../../../kachaka-api/ros2/kachaka_interfaces/
root@tomoyafujita:~/docker_ws/ros2_humble/src/ros2# cd ../../
root@tomoyafujita:~/docker_ws/ros2_humble# colcon build --symlink-install
  1. check ROS 2 topics from colcon workspace created procedure-1
root@tomoyafujita:~/docker_ws/ros2_humble# source install/local_setup.bash 
root@tomoyafujita:~/docker_ws/ros2_humble# ros2 topic list
/goal_pose
/kachaka/front_camera/camera_info
/kachaka/front_camera/image_raw
/kachaka/front_camera/image_raw/compressed
/kachaka/imu/imu
/kachaka/layout/locations/list
/kachaka/layout/shelves/list
/kachaka/lidar/scan
/kachaka/manual_control/cmd_vel
/kachaka/mapping/map
/kachaka/object_detection/result
/kachaka/odometry/odometry
/kachaka/robot_info/version
/kachaka_description/joint_states
/kachaka_description/robot_description
/parameter_events
/rosout
/tf
/tf_static
  1. ros2 topic echo
root@tomoyafujita:~/docker_ws/ros2_humble# ros2 topic echo /kachaka/layout/locations/list
### NO OUTPUT ###

Expected Behavior

root@tomoyafujita:~/docker_ws/ros2_humble# ros2 topic echo /kachaka/layout/locations/list

should print the kachaka_interfaces/msg/LocationList.

fujitatomoya commented 9 months ago

as it shows, endpoint discovery works okay so that we can see one publisher is online to the topic.

root@tomoyafujita:~/docker_ws/ros2_humble# ros2 topic info -v /kachaka/layout/locations/list
Type: kachaka_interfaces/msg/LocationList

Publisher count: 1

Node name: _NODE_NAME_UNKNOWN_
Node namespace: _NODE_NAMESPACE_UNKNOWN_
Topic type: kachaka_interfaces/msg/LocationList
Endpoint type: PUBLISHER
GID: 01.0f.00.12.7f.8c.9d.d0.01.00.00.00.00.00.7d.03.00.00.00.00.00.00.00.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: TRANSIENT_LOCAL
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Subscription count: 0

but cannot see the node,

root@tomoyafujita:~/docker_ws/ros2_humble# ros2 node list
fujitatomoya commented 9 months ago
ros2 bridge console log ```bash tomoyafujita@~/DVT/docker_ws/kachaka-api/tools/ros2_bridge >./start_bridge.sh 192.168.1.226 [+] Running 1/0 ✔ Container ros2_bridge-ros2_bridge-1 Created 0.0s Attaching to ros2_bridge-ros2_bridge-1 ros2_bridge-ros2_bridge-1 | [INFO] [launch]: All log files can be found below /tmp/2023-12-07-02-38-19-836020-tomoyafujita-429132 ros2_bridge-ros2_bridge-1 | [INFO] [launch]: Default logging verbosity is set to INFO ros2_bridge-ros2_bridge-1 | [INFO] [component_container_mt-1]: process started with pid [429183] ros2_bridge-ros2_bridge-1 | [INFO] [robot_state_publisher-2]: process started with pid [429185] ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025366489] [kachaka_description.robot_state_publisher]: got segment base_footprint ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025433537] [kachaka_description.robot_state_publisher]: got segment base_l_drive_wheel_link ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025440342] [kachaka_description.robot_state_publisher]: got segment base_link ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025443741] [kachaka_description.robot_state_publisher]: got segment base_r_drive_wheel_link ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025446885] [kachaka_description.robot_state_publisher]: got segment camera_back_link ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025449895] [kachaka_description.robot_state_publisher]: got segment camera_front_link ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025452760] [kachaka_description.robot_state_publisher]: got segment docking_link ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025455599] [kachaka_description.robot_state_publisher]: got segment imu_link ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025458573] [kachaka_description.robot_state_publisher]: got segment laser_frame ros2_bridge-ros2_bridge-1 | [robot_state_publisher-2] [INFO] [1701916700.025461274] [kachaka_description.robot_state_publisher]: got segment tof_link ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.244627081] [kachaka.grpc_ros2_bridge_container]: Load Library: /opt/kachaka/lib/libkachaka_grpc_ros2_bridge.so ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.288974305] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.289050941] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.292021586] [grpc_ros2_bridge]: created stub 192.168.1.226:26400 ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/auto_homing' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.293689984] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.293723224] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.293728346] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.293732311] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.293735491] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.293739047] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.293742170] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/kachaka_command' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.299823110] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.299851074] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.299855701] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.302685340] [kachaka.front_camera]: 'front_camera' bridge starting ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.302891007] [kachaka.front_camera]: 'front_camera' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/front_camera' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.304370560] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.304453375] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.304460244] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.304465803] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.304472051] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/goal_pose' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.309568946] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.309602284] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.309608688] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.309614198] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.309619636] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.309624738] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.313315062] [kachaka.imu]: 'imu' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/imu' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.314571588] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.314596611] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.314601091] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.314604480] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.314608109] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.314611521] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.314614856] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.314618186] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.317605198] [kachaka.layout]: 'layout' bridge starting ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.317873242] [kachaka.layout]: 'layout' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/layout' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318746674] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318765361] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318769601] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318772937] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318776212] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318779392] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318782587] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318785731] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.318789265] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.321871356] [kachaka.lidar]: 'lidar' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/lidar' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323530896] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323557559] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323561832] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323565273] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323568671] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323571859] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323584700] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323588681] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323591815] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.323595058] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/manual_control' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328144117] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328172922] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328177653] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328181402] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328184604] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328188295] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328191539] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328195155] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328198347] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328201660] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.328205289] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.332215502] [kachaka.mapping]: 'mapping' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/mapping' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333359061] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333384739] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333392635] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333399337] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333404835] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333410256] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333415401] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333421257] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333427224] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333446896] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333455035] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333468712] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333474655] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.333480165] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.337164494] [kachaka.robot_info]: 'robot_info' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/robot_info' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339180446] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339209506] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339213970] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339217583] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339221077] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339224393] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339227746] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339230983] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339234247] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339237501] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339240646] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.339243994] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.342537741] [kachaka.object_detection]: 'object_detection' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/object_detection' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.343896664] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.343935968] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.343944720] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.343951092] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.343957459] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.343963256] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.343992508] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.344000648] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.344006541] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.344012662] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.344018330] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.344024093] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.344030307] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.348079990] [kachaka.odometry]: 'odometry' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/odometry' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349163430] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349187157] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349191859] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349195557] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349199010] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349202581] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349205897] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349209178] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349212434] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349215808] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349218993] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349222296] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349225573] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349228888] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.349232106] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.352815319] [kachaka.static_tf]: 'static_tf' bridge starting ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/static_tf' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.354013663] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.354051530] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.354091624] [kachaka.grpc_ros2_bridge_container]: Found class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.354100588] [kachaka.grpc_ros2_bridge_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.358196000] [kachaka.dynamic_tf]: start dynamic tf ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916700.358264900] [kachaka.dynamic_tf]: get stub ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323397645] [kachaka.static_tf]: 'static_tf' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323407385] [kachaka.mapping]: 'mapping' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323410869] [kachaka.front_camera]: 'front_camera' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/kachaka/dynamic_tf' in container '/kachaka/grpc_ros2_bridge_container' ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323411145] [kachaka.layout]: 'layout' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323411093] [kachaka.imu]: 'imu' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323666756] [kachaka.imu]: 'imu' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323424548] [kachaka.object_detection]: 'object_detection' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323775334] [kachaka.object_detection]: 'object_detection' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323428213] [kachaka.robot_info]: 'robot_info' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323428389] [kachaka.odometry]: 'odometry' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323894396] [kachaka.odometry]: 'odometry' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323514923] [kachaka.static_tf]: 'static_tf' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323561687] [kachaka.mapping]: 'mapping' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323608733] [kachaka.front_camera]: 'front_camera' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323645183] [kachaka.layout]: 'layout' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323413799] [kachaka.dynamic_tf]: dynamic tf server is stopped. ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.323859109] [kachaka.robot_info]: 'robot_info' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916720.323434676] [kachaka.lidar]: 'lidar' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.324081363] [kachaka.dynamic_tf]: start read dynamic tf ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916720.324146112] [kachaka.lidar]: 'lidar' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916740.323323048] [kachaka.front_camera]: 'front_camera' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [ERROR] [1701916740.323322776] [kachaka.layout]: 'layout' error #14: failed to connect to all addresses ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916740.323446904] [kachaka.front_camera]: 'front_camera' bridge stopped ros2_bridge-ros2_bridge-1 | [component_container_mt-1] [INFO] [1701916740.323523623] [kachaka.layout]: 'layout' bridge stopped ```

any thoughts?

fujitatomoya commented 9 months ago

https://github.com/pf-robotics/kachaka-api/issues/66 is similar issue, no topic data is on the transport...

terakoji-pfr commented 9 months ago

ROS_DOMAIN_ID and ROS_LOCALHOST_ONLY What are the values of

Would adding ROS_LOCALHOST_ONLY to .env improve the situation?

terakoji-pfr commented 9 months ago

You are running the client as root, can you run it as the same user as bridge?

youtalk-pfr commented 9 months ago

@fujitatomoya Thank you for your rapid Kachaka API prototyping.

I would like to separate the Docker problem and the Kachaka API problem. Could you follow the procedure to run the ROS 2 bridge without the Docker. https://speakerdeck.com/youtalk/jia-ting-yong-zi-lu-yi-dong-robotuto-katiyaka-nokai-fa-zhe-apigong-kai-to-ros-2intahueisushi-zhuang?slide=28

If it's OK, it's a Docker networking problem.

fujitatomoya commented 9 months ago

ROS_DOMAIN_ID

never set, this affects DDS multicast port offset. do not think this is related.

ROS_LOCALHOST_ONLY

never set, this constraints communication only in localhost address. i did bind network interfaces to the containers with --net=host, so actually this is already in effect since all applications (bridge and ros2 workspace) running in the same host.

You are running the client as root, can you run it as the same user as bridge?

why this is related? could you elaborate a bit?

Could you follow the procedure to run the ROS 2 bridge without the Docker.

i would try this later. (kinda inclined to do so, since i do not want to install those packages in the host system but docker... besides, official procedure tells me to start up the bridge via docker compose that creates container.)

IMO, is this something that multicast issue for network environment that i (user) have, cz it expects that network support multicast as requirement? but some home network router and environment, intentionally disabled multicast. in that case, this produce does not work as expected? i would try some experimental test for this. if this turns out, probably it would be better to instantiate the discovery server in the procedure.

terakoji-pfr commented 9 months ago

Do you mount IPC and pid?

like here.

https://github.com/ruffsl/ros2_docker_demos/blob/20b13771a6f624e3942caff6b65f42aff5fba358/sros2/docker-compose.yml#L19-L20C57

In my experience, it is necessary to do so when running dockers on the same host.

fujitatomoya commented 8 months ago

Do you mount IPC and pid?

tried --ipc=host --pid=host, but it does not work either.

In my experience, it is necessary to do so when running dockers on the same host.

There was an issue for the PID before (3 years ago), since PID is used to generate DDS Participant GUID. But it's been fixed with https://github.com/eProsima/Fast-DDS/pull/1637, that added random value along with PID, so even in the container runtime, GUID will be unique in DDS participant.

i do not think, binding ipc and pid namespace would work for this case...

rather, i think it should bind /dev/shm since it runs rmw_fastrtps that said Fast-DDS is running under the hood. in default it enables shared memory transport and data sharing those will use /dev/shm if the same DDS locator comes in. as you can see below, it ties to use /dev/shm to buildin discovery and user data payload transport.

I have no name!@tomoyafujita:/$ ls -lt /dev/shm
total 2924
-rw-r--r-- 1 root root  52400 Dec 22 05:23 fastrtps_port7421
-rw-r--r-- 1 root root      0 Dec 22 05:23 fastrtps_port7421_el
-rw-r--r-- 1 root root 549408 Dec 22 05:23 fastrtps_3991a3dbaa29d797
-rw-r--r-- 1 root root      0 Dec 22 05:23 fastrtps_3991a3dbaa29d797_el
-rw-r--r-- 1 root root     32 Dec 22 05:23 sem.fastrtps_port7421_mutex
-rw-r--r-- 1 1000 1000 549408 Dec 22 05:13 fastrtps_c8d3d3df62c5ffef
-rw-r--r-- 1 1000 1000      0 Dec 22 05:13 fastrtps_c8d3d3df62c5ffef_el
-rw-r--r-- 1 1000 1000  52400 Dec 22 05:13 fastrtps_port7419
-rw-r--r-- 1 1000 1000      0 Dec 22 05:13 fastrtps_port7419_el
-rw-r--r-- 1 1000 1000     32 Dec 22 05:13 sem.fastrtps_port7419_mutex
-rw-r--r-- 1 1000 1000 549408 Dec 22 05:13 fastrtps_262841554a0fb871
-rw-r--r-- 1 1000 1000      0 Dec 22 05:13 fastrtps_262841554a0fb871_el
-rw-r--r-- 1 1000 1000  52400 Dec 22 05:13 fastrtps_port7417
-rw-r--r-- 1 1000 1000      0 Dec 22 05:13 fastrtps_port7417_el
-rw-r--r-- 1 1000 1000     32 Dec 22 05:13 sem.fastrtps_port7417_mutex
-rw-r--r-- 1 1000 1000 549408 Dec 22 05:13 fastrtps_5f2fdbde0cedc093
-rw-r--r-- 1 1000 1000      0 Dec 22 05:13 fastrtps_5f2fdbde0cedc093_el
-rw-r--r-- 1 1000 1000  52400 Dec 22 05:13 fastrtps_port7413
-rw-r--r-- 1 1000 1000      0 Dec 22 05:13 fastrtps_port7413_el
-rw-r--r-- 1 1000 1000     32 Dec 22 05:13 sem.fastrtps_port7413_mutex
-rw-r--r-- 1 root root 549408 Dec 22 05:08 fastrtps_ac905f18bde423f9
-rw-r--r-- 1 root root      0 Dec 22 05:08 fastrtps_ac905f18bde423f9_el

unfortunately, with the following patch (binding host /dev/shm to container can be the security risk), it still does not work.

diff --git a/tools/ros2_bridge/docker-compose.yaml b/tools/ros2_bridge/docker-compose.yaml
index c309638..3ef6e66 100644
--- a/tools/ros2_bridge/docker-compose.yaml
+++ b/tools/ros2_bridge/docker-compose.yaml
@@ -14,6 +14,8 @@ services:
       - USER_ID
       - GROUP_ID
     user: "${USER_ID}:${GROUP_ID}"
+    volumes:
+      - /dev/shm:/dev/shm
     command: >
       ros2 launch kachaka_grpc_ros2_bridge grpc_ros2_bridge.launch.xml server_uri:=${API_GRPC_BRIDGE_SERVER_URI}
   kachaka_follow:

what is strange for me is,

tomoyafujita@~/DVT >docker exec -it b43a5775c0eb /bin/bash
groups: cannot find name for group ID 1000
I have no name!@tomoyafujita:/$ source /opt/ros/humble/setup.bash 
I have no name!@tomoyafujita:/$ ros2 node list
I have no name!@tomoyafujita:/$ ros2 topic list
/goal_pose
/kachaka/front_camera/camera_info
/kachaka/front_camera/image_raw
/kachaka/front_camera/image_raw/compressed
/kachaka/imu/imu
/kachaka/layout/locations/list
/kachaka/layout/shelves/list
/kachaka/lidar/scan
/kachaka/manual_control/cmd_vel
/kachaka/mapping/map
/kachaka/object_detection/result
/kachaka/odometry/odometry
/kachaka/robot_info/version
/kachaka_description/joint_states
/kachaka_description/robot_description
/parameter_events
/rosout
/tf
/tf_static

ros2 node list returns empty even within the kachaka-grpc-ros2-bridge container which is docker-composed? i believe that it is expected that some nodes running and discovered in this container at least. or i might be mistaken on somthing...

fujitatomoya commented 3 months ago

this has been a while, and i do not have any plan to dig deeper at this moment. and nobody else is tracking or working on this, so i will go ahead to close this issue, feel free to reopen.

lotfielhafi commented 2 months ago

I am experiencing the same issue reported by @fujitatomoya when trying to run a ROS 2 workspace inside another Docker container. The ROS 2 workspace works fine if built on the host system outside the Docker container. Any new thoughts/ideas to solve this?

lotfielhafi commented 2 months ago

In the end, I built kachaka-grpc-ros2-bridge in my own custom Docker image so that I don't need to run multiple Docker images by following the instructions provided by @youtalk-pfr: https://speakerdeck.com/youtalk/jia-ting-yong-zi-lu-yi-dong-robotuto-katiyaka-nokai-fa-zhe-apigong-kai-to-ros-2intahueisushi-zhuang?slide=28

I can provide more details if someone else is interested in such a Docker deployment.