From 4a64bd40ca59185c2ac07eedabb3eb23662c85d8 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 21 Mar 2025 12:59:05 +0100 Subject: [PATCH] Split ros wrapper into two docker images. --- extras/jetson/README.md | 2 +- extras/jetson/docker-compose-2d.yml | 4 +-- extras/ros/README.md | 5 +-- extras/ros/docker-compose-2d.yml | 8 ++--- extras/ros/docker-compose-3d.yml | 4 +-- extras/ros/{dockerfile => dockerfile_2d} | 3 -- extras/ros/dockerfile_3d | 44 ++++++++++++++++++++++++ 7 files changed, 56 insertions(+), 14 deletions(-) rename extras/ros/{dockerfile => dockerfile_2d} (94%) create mode 100644 extras/ros/dockerfile_3d diff --git a/extras/jetson/README.md b/extras/jetson/README.md index 06e8e39..aafb458 100644 --- a/extras/jetson/README.md +++ b/extras/jetson/README.md @@ -129,7 +129,7 @@ Tested with a _Jetson AGX Orin Developer Kit_ module. - Build docker container: ```bash - docker build --progress=plain -f extras/ros/dockerfile -t rapidposetriangulation_ros . + docker build --progress=plain -f extras/ros/dockerfile_2d -t rapidposetriangulation_ros2d . ``` - Run and test: diff --git a/extras/jetson/docker-compose-2d.yml b/extras/jetson/docker-compose-2d.yml index d63f14d..3d44999 100644 --- a/extras/jetson/docker-compose-2d.yml +++ b/extras/jetson/docker-compose-2d.yml @@ -1,7 +1,7 @@ services: test_node: - image: rapidposetriangulation_ros + image: rapidposetriangulation_ros2d network_mode: "host" ipc: "host" runtime: nvidia @@ -18,7 +18,7 @@ services: command: /bin/bash -i -c 'sleep infinity' estimator: - image: rapidposetriangulation_ros + image: rapidposetriangulation_ros2d network_mode: "host" ipc: "host" runtime: nvidia diff --git a/extras/ros/README.md b/extras/ros/README.md index dda355f..757fbdd 100644 --- a/extras/ros/README.md +++ b/extras/ros/README.md @@ -7,10 +7,11 @@ Run pose estimator with ros topics as inputs and publish detected poses. - Build container: ```bash - docker build --progress=plain -t rapidposetriangulation_ros -f extras/ros/dockerfile . + docker build --progress=plain -t rapidposetriangulation_ros2d -f extras/ros/dockerfile_2d . + docker build --progress=plain -t rapidposetriangulation_ros3d -f extras/ros/dockerfile_3d . ``` -- Update or remove the `ROS_DOMAIN_ID` in `docker-compose.yml` to fit your environment +- Update or remove the `ROS_DOMAIN_ID` in the `docker-compose.yml` files to fit your environment - Run and test: diff --git a/extras/ros/docker-compose-2d.yml b/extras/ros/docker-compose-2d.yml index db625fa..2c12a57 100644 --- a/extras/ros/docker-compose-2d.yml +++ b/extras/ros/docker-compose-2d.yml @@ -1,7 +1,7 @@ services: test_node: - image: rapidposetriangulation_ros + image: rapidposetriangulation_ros2d network_mode: "host" ipc: "host" runtime: nvidia @@ -18,7 +18,7 @@ services: command: /bin/bash -i -c 'sleep infinity' estimator: - image: rapidposetriangulation_ros + image: rapidposetriangulation_ros2d network_mode: "host" ipc: "host" runtime: nvidia @@ -36,7 +36,7 @@ services: command: /bin/bash -i -c 'export ROS_DOMAIN_ID=18 && ros2 run rpt2d_wrapper_cpp rpt2d_wrapper' pose_visualizer: - image: rapidposetriangulation_ros + image: rapidposetriangulation_ros2d network_mode: "host" ipc: "host" runtime: nvidia @@ -54,7 +54,7 @@ services: command: /bin/bash -i -c 'sleep 2 && export ROS_DOMAIN_ID=18 && ros2 run pose2d_visualizer pose2d_visualizer $CAMID' pose_viewer: - image: rapidposetriangulation_ros + image: rapidposetriangulation_ros2d network_mode: "host" ipc: "host" runtime: nvidia diff --git a/extras/ros/docker-compose-3d.yml b/extras/ros/docker-compose-3d.yml index 25fa279..750168b 100644 --- a/extras/ros/docker-compose-3d.yml +++ b/extras/ros/docker-compose-3d.yml @@ -1,7 +1,7 @@ services: test_node: - image: rapidposetriangulation_ros + image: rapidposetriangulation_ros3d network_mode: "host" ipc: "host" runtime: nvidia @@ -18,7 +18,7 @@ services: command: /bin/bash -i -c 'sleep infinity' triangulator: - image: rapidposetriangulation_ros + image: rapidposetriangulation_ros3d network_mode: "host" ipc: "host" runtime: nvidia diff --git a/extras/ros/dockerfile b/extras/ros/dockerfile_2d similarity index 94% rename from extras/ros/dockerfile rename to extras/ros/dockerfile_2d index 3def5aa..fe72c48 100644 --- a/extras/ros/dockerfile +++ b/extras/ros/dockerfile_2d @@ -45,17 +45,14 @@ RUN echo "source /project/dev_ws/install/setup.bash" >> ~/.bashrc # Copy modules COPY ./extras/include/ /RapidPoseTriangulation/extras/include/ COPY ./scripts/ /RapidPoseTriangulation/scripts/ -COPY ./rpt/ /RapidPoseTriangulation/rpt/ COPY ./extras/ros/rpt_msgs/ /RapidPoseTriangulation/extras/ros/rpt_msgs/ COPY ./extras/ros/pose2d_visualizer/ /RapidPoseTriangulation/extras/ros/pose2d_visualizer/ COPY ./extras/ros/rpt2d_wrapper_cpp/ /RapidPoseTriangulation/extras/ros/rpt2d_wrapper_cpp/ -COPY ./extras/ros/rpt3d_wrapper_cpp/ /RapidPoseTriangulation/extras/ros/rpt3d_wrapper_cpp/ # Link and build as ros package RUN ln -s /RapidPoseTriangulation/extras/ros/rpt_msgs/ /project/dev_ws/src/ RUN ln -s /RapidPoseTriangulation/extras/ros/pose2d_visualizer/ /project/dev_ws/src/ RUN ln -s /RapidPoseTriangulation/extras/ros/rpt2d_wrapper_cpp/ /project/dev_ws/src/ -RUN ln -s /RapidPoseTriangulation/extras/ros/rpt3d_wrapper_cpp/ /project/dev_ws/src/ RUN /bin/bash -i -c 'cd /project/dev_ws/; colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release' # Update ros packages -> autocompletion and check diff --git a/extras/ros/dockerfile_3d b/extras/ros/dockerfile_3d new file mode 100644 index 0000000..273d278 --- /dev/null +++ b/extras/ros/dockerfile_3d @@ -0,0 +1,44 @@ +FROM ros:humble-ros-base-jammy +ARG DEBIAN_FRONTEND=noninteractive + +# Set the working directory to /project +WORKDIR /project/ + +# Update and install basic tools +RUN apt-get update && apt-get upgrade -y +RUN apt-get update && apt-get install -y --no-install-recommends git nano wget +RUN apt-get update && apt-get install -y --no-install-recommends python3-pip +RUN pip3 install --upgrade pip + +# Fix ros package building error +RUN pip3 install --no-cache-dir "setuptools<=58.2.0" + +# Add ROS2 sourcing by default +RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc + +# Create ROS2 workspace for project packages +RUN mkdir -p /project/dev_ws/src/ +RUN cd /project/dev_ws/; colcon build +RUN echo "source /project/dev_ws/install/setup.bash" >> ~/.bashrc + +# Copy modules +COPY ./extras/include/ /RapidPoseTriangulation/extras/include/ +COPY ./rpt/ /RapidPoseTriangulation/rpt/ +COPY ./extras/ros/rpt_msgs/ /RapidPoseTriangulation/extras/ros/rpt_msgs/ +COPY ./extras/ros/rpt3d_wrapper_cpp/ /RapidPoseTriangulation/extras/ros/rpt3d_wrapper_cpp/ + +# Link and build as ros package +RUN ln -s /RapidPoseTriangulation/extras/ros/rpt_msgs/ /project/dev_ws/src/ +RUN ln -s /RapidPoseTriangulation/extras/ros/rpt3d_wrapper_cpp/ /project/dev_ws/src/ +RUN /bin/bash -i -c 'cd /project/dev_ws/; colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release' + +# Update ros packages -> autocompletion and check +RUN /bin/bash -i -c 'ros2 pkg list' + +# Clear cache to save space, only has an effect if image is squashed +RUN apt-get autoremove -y \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /RapidPoseTriangulation/ +CMD ["/bin/bash"]