Bob9710
Bob9710

Reputation: 205

How to run a ROS2 node inside docker image?

I have a ros2 package and successfully create a docker image of it. Then when im inside the container i would like to run only one single node of the ros2 package. So first create the environment with PATH=$PATH:/home/user/.local/bin then vcs import . <system_integration/ros.repos then docker pull ghcr.io/test-inc/base_images:foxy. Im running and executing the docker with

docker run --name test -d --rm -v $(pwd):/home/ros2/foxy/src ghcr.io/company-inc/robot1_vnc_ros2:foxy

docker exec -it test /bin/bash

Then when Im inside the docker I build the package with

colcon build --symlink-install --event-handlers console_cohesion+ --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-up-to system_integration

So now im inside the docker in the root@1942eef8d977:~/ros2/foxy and would like to run one python node. But ros2 run package_name node_name would not work right? Im not familiar much with docker so not sure how to run the node. Any help

Thanks

Upvotes: 1

Views: 1113

Answers (2)

tcluk624
tcluk624

Reputation: 26

Before you can use ros2 run to run packages, you have to source the correct workspace. Otherwise you could not use auto-completion tab to find any packages and thus no package can be run

To do so:

  1. cd into your the root path of your workspace
  2. colcon build your workspace (which your packages should under the src directory)
  3. run this line to source it source install/setup.bash
  4. you can check it with echo $COLCON_PATH_PREFIX to see the path is correctly sourced
  5. Try rerun the ros2 command to start your node

Upvotes: 1

brianlmerritt
brianlmerritt

Reputation: 2842

Have you sourced the setup file within the container?

Where ever the package source is located, you need to run source ./install/setup.bash

Upvotes: 1

Related Questions