diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index cb31342f..bb8303f5 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -11,6 +11,8 @@ services: privileged: true mem_limit: 6gb tty: true + group_add: + - "video" # Allows camera access on all platforms, no matter the allocated user rights env_file: - .env volumes: diff --git a/dockerfiles/install_scripts/core_packages.sh b/dockerfiles/install_scripts/core_packages.sh index a15b323f..0085ef22 100755 --- a/dockerfiles/install_scripts/core_packages.sh +++ b/dockerfiles/install_scripts/core_packages.sh @@ -26,8 +26,6 @@ apt install -y \ ros-$ROS_DISTRO-nav2-bringup \ ros-$ROS_DISTRO-ouster-ros \ ros-$ROS_DISTRO-plotjuggler-ros \ - ros-$ROS_DISTRO-realsense2-camera \ - ros-$ROS_DISTRO-realsense2-description \ ros-$ROS_DISTRO-rmw-cyclonedds-cpp \ ros-$ROS_DISTRO-ros-gz \ ros-$ROS_DISTRO-ros2-controllers \ diff --git a/dockerfiles/install_scripts/realsense_sdk.sh b/dockerfiles/install_scripts/realsense_sdk.sh new file mode 100755 index 00000000..cefa86e1 --- /dev/null +++ b/dockerfiles/install_scripts/realsense_sdk.sh @@ -0,0 +1,48 @@ +#!/bin/bash -i + +# SPDX-FileCopyrightText: Alliander N. V. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e +source /home/$UNAME/.bashrc +apt-get update + +# Core packages +apt-get install -y \ + libssl-dev \ + libusb-1.0-0-dev \ + libudev-dev \ + pkg-config \ + libgtk-3-dev + +# Build tools +apt-get install -y \ + git \ + wget \ + cmake \ + build-essential \ + v4l-utils \ + rsync + +# Linux Backend and Dev. Environment +apt-get install -y \ + libglfw3-dev \ + libgl1-mesa-dev \ + libglu1-mesa-dev \ + at + +echo "Dependencies installed. Installing the RealSense SDK..." + +# Download + install RealSense SDK +ZIP_URL="https://github.com/IntelRealSense/librealsense/releases/download/v2.57.3/librealsense2_jammy_x86_debians_2_57_3_beta.zip" +TEMP_DIR="/tmp/realsense_install" +ZIP_FILE="$TEMP_DIR/librealsense2_jammy_x86_debians_2_57_3_beta.zip" + +mkdir -p "$TEMP_DIR" +wget -O "$ZIP_FILE" "$ZIP_URL" +unzip "$ZIP_FILE" -d "$TEMP_DIR" +dpkg -i "$TEMP_DIR"/*.deb +rm -rf "$TEMP_DIR" + +echo "Installation completed." \ No newline at end of file diff --git a/dockerfiles/install_scripts/realsense_wrapper.sh b/dockerfiles/install_scripts/realsense_wrapper.sh new file mode 100755 index 00000000..9fc54b5c --- /dev/null +++ b/dockerfiles/install_scripts/realsense_wrapper.sh @@ -0,0 +1,20 @@ +#!/bin/bash -i + +# SPDX-FileCopyrightText: Alliander N. V. +# +# SPDX-License-Identifier: Apache-2.0 + +set -e +source /home/$UNAME/.bashrc +apt update + +cd /home/$UNAME && \ + mkdir realsense_ws && \ + cd /home/$UNAME/realsense_ws && \ + git clone -b 4.57.2 https://github.com/IntelRealSense/realsense-ros.git src/realsense_ros + +apt update && apt-get install python3-rosdep -y +rosdep update && rosdep install -i --from-path src --rosdistro $ROS_DISTRO --skip-keys=librealsense2 -y +colcon build + +echo "source /home/$UNAME/realsense_ws/install/setup.bash" >>/home/$UNAME/.bashrc diff --git a/dockerfiles/rcdt_robotics.Dockerfile b/dockerfiles/rcdt_robotics.Dockerfile index a49f98b0..3d5c63b5 100644 --- a/dockerfiles/rcdt_robotics.Dockerfile +++ b/dockerfiles/rcdt_robotics.Dockerfile @@ -11,6 +11,12 @@ RUN ./ros2_jazzy.sh COPY ./install_scripts/core_packages.sh . RUN ./core_packages.sh +COPY ./install_scripts/realsense_sdk.sh . +RUN ./realsense_sdk.sh + +COPY ./install_scripts/realsense_wrapper.sh . +RUN ./realsense_wrapper.sh + COPY ./install_scripts/zed_sdk.sh . RUN ./zed_sdk.sh diff --git a/pyproject.toml b/pyproject.toml index 7249a306..b439c302 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -77,6 +77,7 @@ norecursedirs = ["install", "build", "log",".venv",".cache"] extra-paths = [ "/opt/ros/jazzy/lib/python3.12/site-packages/", "/home/rcdt/franka_ws/install/franka_msgs/lib/python3.12/site-packages/", + "/home/rcdt/realsense_ws/install/realsense2_camera_msgs/lib/python3.12/site-packages/", "ros2_ws/install/rcdt_messages/lib/python3.12/site-packages/", "ros2_ws/src/rcdt_franka/", "ros2_ws/src/rcdt_panther/", diff --git a/ros2_ws/src/rcdt_sensors/launch/realsense.launch.py b/ros2_ws/src/rcdt_sensors/launch/realsense.launch.py index 104f519a..20b2c5aa 100644 --- a/ros2_ws/src/rcdt_sensors/launch/realsense.launch.py +++ b/ros2_ws/src/rcdt_sensors/launch/realsense.launch.py @@ -56,8 +56,30 @@ def launch_setup(context: LaunchContext) -> list: "enable_rgbd": True, "enable_sync": True, "align_depth.enable": True, + "tf_prefix": namespace + "/", + "rgb_camera.color_profile": "640,480,60", + "depth_module.depth_profile": "640,480,60", } ], + remappings=[ + ( + f"/{namespace}/camera/color/image_raw", + f"/{namespace}/color/image_raw", + ), + ( + f"/{namespace}/camera/color/camera_info", + f"/{namespace}/color/camera_info", + ), + ( + f"/{namespace}/camera/depth/camera_info", + f"/{namespace}/depth/camera_info", + ), + ( + f"/{namespace}/camera/aligned_depth_to_color/image_raw", + f"/{namespace}/depth/image_rect_raw", + ), + (f"/{namespace}/camera/rgbd", f"/{namespace}/rgbd"), + ], ) realsense = LaunchDescription( [Register.on_start(realsense2_camera_node, context)]