Skip to content
Draft
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 36 additions & 34 deletions robotics-ai-suite/robot-vision-control/.devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
###########################################
# Base image
###########################################
FROM ubuntu:22.04 AS rvc-humble-base
FROM ubuntu:24.04 AS rvc-jazzy-base

ENV DEBIAN_FRONTEND=noninteractive

Expand Down Expand Up @@ -40,57 +40,57 @@ RUN sudo add-apt-repository universe \
&& curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg \
&& 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" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null \
&& apt-get update && apt-get install -y --no-install-recommends \
ros-humble-ros-base \
ros-jazzy-ros-base \
python3-argcomplete \
&& rm -rf /var/lib/apt/lists/*

RUN bash -c 'wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | tee /usr/share/keyrings/intel-repo-keyring.gpg > /dev/null' \
&& bash -c 'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/intel-repo-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list' \
&& bash -c 'echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/intel-repo-keyring.gpg] https://apt.repos.intel.com/openvino/2024 ubuntu22 main" | tee /etc/apt/sources.list.d/intel-openvino-2024.list' \
&& apt-get update && apt-get install -y --no-install-recommends \
ros-humble-controller-manager \
ros-humble-control-toolbox \
ros-humble-xacro \
ros-humble-librealsense2 \
ros-humble-realsense2-camera \
ros-humble-realsense2-description \
ros-humble-pcl-conversions \
ros-humble-diagnostic-updater \
ros-humble-joint-state-broadcaster \
ros-humble-joint-trajectory-controller \
ros-humble-joint-state-publisher \
ros-humble-forward-command-controller \
ros-humble-moveit-ros-planning \
ros-humble-moveit-ros-planning-interface \
ros-humble-moveit-ros-visualization \
ros-humble-moveit-servo \
ros-humble-velocity-controllers \
ros-humble-position-controllers \
ros-humble-forward-command-controller \
ros-humble-moveit-ros-visualization \
ros-humble-compressed-depth-image-transport \
ros-humble-compressed-image-transport \
ros-humble-image-transport-plugins \
ros-jazzy-controller-manager \
ros-jazzy-control-toolbox \
ros-jazzy-xacro \
ros-jazzy-librealsense2 \
ros-jazzy-realsense2-camera \
ros-jazzy-realsense2-description \
ros-jazzy-pcl-conversions \
ros-jazzy-diagnostic-updater \
ros-jazzy-joint-state-broadcaster \
ros-jazzy-joint-trajectory-controller \
ros-jazzy-joint-state-publisher \
ros-jazzy-forward-command-controller \
ros-jazzy-moveit-ros-planning \
ros-jazzy-moveit-ros-planning-interface \
ros-jazzy-moveit-ros-visualization \
ros-jazzy-moveit-servo \
ros-jazzy-velocity-controllers \
ros-jazzy-position-controllers \
ros-jazzy-forward-command-controller \
ros-jazzy-moveit-ros-visualization \
ros-jazzy-compressed-depth-image-transport \
ros-jazzy-compressed-image-transport \
ros-jazzy-image-transport-plugins \
openvino-libraries-dev \
nlohmann-json3-dev \
libnlopt-cxx-dev \
&& rm -rf /var/lib/apt/lists/*


ENV ROS_DISTRO=humble
ENV AMENT_PREFIX_PATH=/opt/ros/humble
ENV COLCON_PREFIX_PATH=/opt/ros/humble
ENV LD_LIBRARY_PATH=/opt/ros/humble/lib
ENV PATH=/opt/ros/humble/bin:$PATH
ENV PYTHONPATH=/opt/ros/humble/lib/python3.10/site-packages
ENV ROS_DISTRO=jazzy
ENV AMENT_PREFIX_PATH=/opt/ros/jazzy
ENV COLCON_PREFIX_PATH=/opt/ros/jazzy
ENV LD_LIBRARY_PATH=/opt/ros/jazzy/lib
ENV PATH=/opt/ros/jazzy/bin:$PATH
ENV PYTHONPATH=/opt/ros/jazzy/lib/python3.12/site-packages
ENV ROS_PYTHON_VERSION=3
ENV ROS_VERSION=2
ENV DEBIAN_FRONTEND=

###########################################
# Development image
###########################################
FROM rvc-humble-base AS rvc-humble-dev
FROM rvc-jazzy-base AS rvc-jazzy-dev

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
Expand All @@ -103,14 +103,16 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
python3-argcomplete \
python3-pip \
ros-dev-tools \
ros-humble-ament-* \
ros-jazzy-ament-* \
vim \
&& rm -rf /var/lib/apt/lists/*

RUN rosdep init || echo "rosdep already initialized"

ARG USERNAME=ros
ARG USER_UID=1000
# user 1000 already exists so creating one user that doesn't conflict
# especially since we're adding sudo support to it
ARG USER_UID=10001
ARG USER_GID=$USER_UID

# Create a non-root user
Expand Down
8 changes: 4 additions & 4 deletions robotics-ai-suite/robot-vision-control/Dockerfile.exec
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
INCLUDE+ .devcontainer/Dockerfile


FROM rvc-humble-dev AS rvc-humble-exec
FROM rvc-jazzy-dev AS rvc-jazzy-exec

RUN apt-get update && apt-get install -y --no-install-recommends \
ros-humble-ur-bringup \
ros-humble-ur-robot-driver \
ros-humble-ur-calibration \
ros-jazzy-hardware-interface \
ros-jazzy-ur-robot-driver \
ros-jazzy-ur-calibration \
&& rm -rf /var/lib/apt/lists/*

RUN echo "$USERNAME soft rtprio 98" >> /etc/security/limits.conf \
Expand Down
6 changes: 6 additions & 0 deletions robotics-ai-suite/robot-vision-control/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
<!--
Copyright (C) 2025 Intel Corporation

SPDX-License-Identifier: Apache-2.0
-->

# RVC (Robot Vision & Control)

Exemplary code and configuration for two uses cases:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ else
fi

# Build the Docker image
docker build $NO_CACHE -t rvc-humble-exec:latest -f Dockerfile.exec .
docker build $NO_CACHE -t rvc-jazzy-exec:latest -f Dockerfile.exec .
if [[ $? -ne 0 ]]; then
echo "Docker build failed."
exit 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ docker run -it \
--env="WAYLAND_DISPLAY" \
--env="XDG_RUNTIME_DIR" \
--env="PULSE_SERVER" \
rvc-humble-exec:latest \
rvc-jazzy-exec:latest \
/bin/bash

if [[ $? -ne 0 ]]; then
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ros-humble-robotiq-controllers (2.0.0jammy) jammy; urgency=high
ros-jazzy-robotiq-controllers (2.3.noble) noble; urgency=high

* Autogenerated, no changelog for this version found in CHANGELOG.rst.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,37 @@
Source: ros-humble-robotiq-controllers
Source: ros-jazzy-robotiq-controllers
Section: misc
Priority: optional
Maintainer: Intel Robotics Team <[email protected]>
Build-Depends: debhelper (>= 9.0.0), ros-humble-ament-cmake, ros-humble-control-msgs, ros-humble-controller-interface, ros-humble-forward-command-controller, ros-humble-geometry-msgs, ros-humble-joint-trajectory-controller, ros-humble-pluginlib, ros-humble-rclcpp-lifecycle, ros-humble-rcutils, ros-humble-realtime-tools, ros-humble-sensor-msgs, ros-humble-std-msgs, ros-humble-std-srvs
Build-Depends: debhelper (>= 9.0.0),
ros-jazzy-ament-cmake,
ros-jazzy-control-msgs,
ros-jazzy-controller-interface,
ros-jazzy-forward-command-controller,
ros-jazzy-geometry-msgs,
ros-jazzy-joint-trajectory-controller,
ros-jazzy-pluginlib,
ros-jazzy-rclcpp-lifecycle,
ros-jazzy-rcutils,
ros-jazzy-realtime-tools,
ros-jazzy-sensor-msgs,
ros-jazzy-std-msgs,
ros-jazzy-std-srvs
Homepage:
Standards-Version: 3.9.2

Package: ros-humble-robotiq-controllers
Package: ros-jazzy-robotiq-controllers
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ros-humble-control-msgs, ros-humble-controller-interface, ros-humble-forward-command-controller, ros-humble-geometry-msgs, ros-humble-joint-trajectory-controller, ros-humble-pluginlib, ros-humble-rclcpp-lifecycle, ros-humble-rcutils, ros-humble-realtime-tools, ros-humble-sensor-msgs, ros-humble-std-msgs, ros-humble-std-srvs
Depends: ${shlibs:Depends}, ${misc:Depends},
ros-jazzy-control-msgs,
ros-jazzy-controller-interface,
ros-jazzy-forward-command-controller,
ros-jazzy-geometry-msgs,
ros-jazzy-joint-trajectory-controller,
ros-jazzy-pluginlib,
ros-jazzy-rclcpp-lifecycle,
ros-jazzy-rcutils,
ros-jazzy-realtime-tools,
ros-jazzy-sensor-msgs,
ros-jazzy-std-msgs,
ros-jazzy-std-srvs
Description: Provides controllers for robotiq 2f gripper.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export DH_VERBOSE=1
# https://code.ros.org/trac/ros/ticket/2977
# https://code.ros.org/trac/ros/ticket/3842
export LDFLAGS=
export PKG_CONFIG_PATH=/opt/ros/humble/lib/pkgconfig
export PKG_CONFIG_PATH=/opt/ros/jazzy/lib/pkgconfig
# Explicitly enable -DNDEBUG, see:
# https://github.com/ros-infrastructure/bloom/issues/327
export DEB_CXXFLAGS_MAINT_APPEND=-DNDEBUG
Expand All @@ -30,38 +30,38 @@ override_dh_auto_configure:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_auto_configure -- \
-DCMAKE_INSTALL_PREFIX="/opt/ros/humble" \
-DAMENT_PREFIX_PATH="/opt/ros/humble" \
-DCMAKE_PREFIX_PATH="/opt/ros/humble" \
-DCMAKE_INSTALL_PREFIX="/opt/ros/jazzy" \
-DAMENT_PREFIX_PATH="/opt/ros/jazzy" \
-DCMAKE_PREFIX_PATH="/opt/ros/jazzy" \
$(BUILD_TESTING_ARG)

override_dh_auto_build:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_auto_build

override_dh_auto_test:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
echo -- Running tests. Even if one of them fails the build is not canceled.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_auto_test || true

override_dh_shlibdeps:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
dh_shlibdeps -l$(CURDIR)/debian/ros-humble-robotiq-controllers//opt/ros/humble/lib/
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_shlibdeps -l$(CURDIR)/debian/ros-jazzy-robotiq-controllers//opt/ros/jazzy/lib/

override_dh_auto_install:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_auto_install
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
#include "hardware_interface/types/hardware_interface_type_values.hpp"
#include "rclcpp/clock.hpp"
#include "rclcpp/qos.hpp"
#include "rclcpp/qos_event.hpp"
#include "rclcpp/time.hpp"
#include "rclcpp_lifecycle/lifecycle_node.hpp"
#include "rcpputils/split.hpp"
Expand Down Expand Up @@ -90,7 +89,10 @@ controller_interface::return_type RobotiqSensorBroadcaster::update(const rclcpp:
(void)period;
if (publish_rate_ > 0.0 && (clock.now() - last_publish_time_) > rclcpp::Duration(1.0 / publish_rate_, 0.0)) {
// Speed scaling is the only interface of the controller
object_grasped_state_msg_.data = state_interfaces_[0].get_value() ;
// 0.0 will be converted to std_msgs::msg::UInt16 which is the message type
// 0 will mean no object detected, while it does seem like an appropriate value
// we can also just to value() with some exception handling
object_grasped_state_msg_.data = state_interfaces_[0].get_optional().value_or(0.0);

// publish
object_grasped_state_publisher_->publish(object_grasped_state_msg_);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ros-humble-robotiq-driver-plugin (2.0.0jammy) jammy; urgency=high
ros-jazzy-robotiq-driver-plugin (2.3.1noble) noble; urgency=high

* Autogenerated, no changelog for this version found in CHANGELOG.rst.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
Source: ros-humble-robotiq-driver-plugin
Source: ros-jazzy-robotiq-driver-plugin
Section: misc
Priority: optional
Maintainer: Intel Robotics Team <[email protected]>
Build-Depends: debhelper (>= 9.0.0), ros-humble-ament-cmake, ros-humble-hardware-interface, ros-humble-pluginlib, ros-humble-rclcpp, ros-humble-std-srvs
Build-Depends: debhelper (>= 9.0.0),
ros-jazzy-ament-cmake,
ros-jazzy-hardware-interface,
ros-jazzy-pluginlib,
ros-jazzy-rclcpp,
ros-jazzy-std-srvs
Homepage:
Standards-Version: 3.9.2

Package: ros-humble-robotiq-driver-plugin
Package: ros-jazzy-robotiq-driver-plugin
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ros-humble-controller-manager, ros-humble-hardware-interface, ros-humble-pluginlib, ros-humble-rclcpp, ros-humble-std-srvs
Depends: ${shlibs:Depends}, ${misc:Depends},
ros-jazzy-controller-manager,
ros-jazzy-hardware-interface,
ros-jazzy-pluginlib,
ros-jazzy-rclcpp,
ros-jazzy-std-srvs
Description: robotiq 2f driver
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export DH_VERBOSE=1
# https://code.ros.org/trac/ros/ticket/2977
# https://code.ros.org/trac/ros/ticket/3842
export LDFLAGS=
export PKG_CONFIG_PATH=/opt/ros/humble/lib/pkgconfig
export PKG_CONFIG_PATH=/opt/ros/jazzy/lib/pkgconfig
# Explicitly enable -DNDEBUG, see:
# https://github.com/ros-infrastructure/bloom/issues/327
export DEB_CXXFLAGS_MAINT_APPEND=-DNDEBUG
Expand All @@ -30,38 +30,38 @@ override_dh_auto_configure:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_auto_configure -- \
-DCMAKE_INSTALL_PREFIX="/opt/ros/humble" \
-DAMENT_PREFIX_PATH="/opt/ros/humble" \
-DCMAKE_PREFIX_PATH="/opt/ros/humble" \
-DCMAKE_INSTALL_PREFIX="/opt/ros/jazzy" \
-DAMENT_PREFIX_PATH="/opt/ros/jazzy" \
-DCMAKE_PREFIX_PATH="/opt/ros/jazzy" \
$(BUILD_TESTING_ARG)

override_dh_auto_build:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_auto_build

override_dh_auto_test:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
echo -- Running tests. Even if one of them fails the build is not canceled.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_auto_test || true

override_dh_shlibdeps:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
dh_shlibdeps -l$(CURDIR)/debian/ros-humble-robotiq-driver-plugin//opt/ros/humble/lib/
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_shlibdeps -l$(CURDIR)/debian/ros-jazzy-robotiq-driver-plugin//opt/ros/jazzy/lib/

override_dh_auto_install:
# In case we're installing to a non-standard location, look for a setup.sh
# in the install tree and source it. It will set things like
# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
if [ -f "/opt/ros/humble/setup.sh" ]; then . "/opt/ros/humble/setup.sh"; fi && \
if [ -f "/opt/ros/jazzy/setup.sh" ]; then . "/opt/ros/jazzy/setup.sh"; fi && \
dh_auto_install
Loading
Loading