From 1ca755f76373b48c3e5b0f4570f3b9f3d3d39999 Mon Sep 17 00:00:00 2001 From: Isse Date: Mon, 20 Jan 2025 16:40:28 +0100 Subject: [PATCH] Building ros for jetson. --- extras/jetson/README.md | 17 ++++++++ extras/jetson/dockerfile_ros | 60 ++++++++++++++++++++++++++++ ros/rpt2D_wrapper_cpp/CMakeLists.txt | 6 ++- 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 extras/jetson/dockerfile_ros diff --git a/extras/jetson/README.md b/extras/jetson/README.md index 0fd6781..74a43a4 100644 --- a/extras/jetson/README.md +++ b/extras/jetson/README.md @@ -93,3 +93,20 @@ Tested with a _Jetson AGX Orin Developer Kit_ module. ```bash python3 /RapidPoseTriangulation/scripts/test_triangulate.py ``` + +- Evaluate datasets: + + ```bash + python3 /RapidPoseTriangulation/scripts/test_skelda_dataset.py + ``` + +
+ +## ROS interface + +- Build docker container: + + ```bash + docker build --progress=plain -f extras/jetson/dockerfile_ros -t rapidposetriangulation_ros . + ./run_container.sh + ``` diff --git a/extras/jetson/dockerfile_ros b/extras/jetson/dockerfile_ros new file mode 100644 index 0000000..fa61044 --- /dev/null +++ b/extras/jetson/dockerfile_ros @@ -0,0 +1,60 @@ +FROM rapidposetriangulation +WORKDIR / + +ARG DEBIAN_FRONTEND=noninteractive +ENV LANG=C.UTF-8 +ENV LC_ALL=C.UTF-8 +WORKDIR / + +# Install ROS2 +# https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html +RUN apt-get update && apt-get install -y --no-install-recommends locales +RUN locale-gen en_US en_US.UTF-8 && update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 +RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common +RUN add-apt-repository universe +RUN apt-get update && apt-get install -y --no-install-recommends curl +RUN curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg +RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" > /etc/apt/sources.list.d/ros2.list +RUN apt-get update && apt-get install -y --no-install-recommends ros-humble-ros-base python3-argcomplete +RUN apt-get update && apt-get install -y --no-install-recommends ros-dev-tools +RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc + +# Create ROS2 workspace for basic packages +RUN mkdir -p /project/base/src/ +RUN cd /project/base/; colcon build +RUN echo "source /project/base/install/setup.bash" >> ~/.bashrc + +# Fix ros package building error +RUN pip3 install --no-cache-dir "setuptools<=58.2.0" + +# Install opencv and cv_bridge +RUN apt-get update && apt-get install -y --no-install-recommends libboost-dev +RUN apt-get update && apt-get install -y --no-install-recommends libboost-python-dev +RUN apt-get update && apt-get install -y --no-install-recommends libopencv-dev +RUN cd /project/base/src/; git clone --branch humble --depth=1 https://github.com/ros-perception/vision_opencv.git +RUN /bin/bash -i -c 'cd /project/base/; colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release' + +# 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 ./ros/rpt2D_wrapper_py /RapidPoseTriangulation/ros/rpt2D_wrapper_py/ +COPY ./ros/rpt2D_wrapper_cpp /RapidPoseTriangulation/ros/rpt2D_wrapper_cpp/ + +# Link and build as ros package +RUN ln -s /RapidPoseTriangulation/ros/rpt2D_wrapper_py/ /project/dev_ws/src/rpt2D_wrapper_py +RUN ln -s /RapidPoseTriangulation/ros/rpt2D_wrapper_cpp/ /project/dev_ws/src/rpt2D_wrapper_cpp +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"] diff --git a/ros/rpt2D_wrapper_cpp/CMakeLists.txt b/ros/rpt2D_wrapper_cpp/CMakeLists.txt index aa93999..1c8e14e 100644 --- a/ros/rpt2D_wrapper_cpp/CMakeLists.txt +++ b/ros/rpt2D_wrapper_cpp/CMakeLists.txt @@ -23,11 +23,15 @@ find_package(sensor_msgs REQUIRED) find_package(cv_bridge REQUIRED) find_package(OpenCV REQUIRED) -### 3) ONNX Runtime +### 3) ONNX Runtime +# for desktop include_directories(/onnxruntime/include /onnxruntime/include/onnxruntime/core/session /onnxruntime/include/onnxruntime/core/providers/tensorrt) link_directories(/onnxruntime/build/Linux/Release) +# for jetson +include_directories(/usr/local/include/onnxruntime/) +link_directories(/usr/local/lib/) add_executable(rpt2D_wrapper src/rpt2D_wrapper.cpp) ament_target_dependencies(rpt2D_wrapper rclcpp std_msgs sensor_msgs cv_bridge)