Environment Configuration Recommendation#

Recommended to set up on Ubuntu 22.04.4 LTS with ros2-humble.

The official ros2_control package must be installed before formally compiling the duco package.

ROS2 Basic Installation#

The following details the process for ROS2 (humble):

  1. Open shell window

1locale  # check for UTF-8
2
3sudo apt update && sudo apt install locales
4sudo locale-gen en_US en_US.UTF-8
5sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
6export LANG=en_US.UTF-8
7
8locale  # verify settings
  1. Set up sources

1sudo apt install software-properties-common
2sudo add-apt-repository universe
3sudo apt update && sudo apt install curl -y
4sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
5echo "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
  1. Install ROS2

1sudo apt update
2sudo apt upgrade
3sudo apt install ros-humble-desktop
  1. Finally install dev tools

1sudo apt install ros-dev-tools

The following details the installation process for ros2_control:

  1. First source ROS2 resources

1source /opt/ros/humble/setup.bash
  1. Create ros2_control workspace and download resources

1mkdir -p ~/ros2_control_ws/
2cd ~/ros2_control_ws/

After creation, place the duco src files in this directory.

Then begin downloading resources:

1wget https://raw.githubusercontent.com/ros-controls/ros2_control_ci/master/ros_controls.humble.repos
2vcs import src < ros_controls.humble.repos

If network issues occur, switch software sources and retry:

1# Set software sources
2sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2.list'
3
4# Add key
5sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F42ED6FBAB17C654
6sudo apt update

rosdep#

Install dependencies:

1sudo rosdep init
2rosdep update --rosdistro=$ROS_DISTRO
3sudo apt-get update
4rosdep install --from-paths src --ignore-src -r -y

Compile ros2_control:

1. /opt/ros/humble/setup.sh

Supplementary colcon Installation#

If colcon is missing, install it. If not missing, proceed to Moveit installation.

1# Install required components
2sudo apt update
3sudo apt install python3-colcon-common-extensions
4
5# Ensure pip version is installed (system-wide)
6pip3 install --upgrade colcon-common-extensions

Moveit#

Install complete MoveIt suite (for Humble)

1sudo apt install ros-humble-moveit ros-humble-moveit-ros-planning-interface

Verify installation:

1ros2 pkg prefix moveit_ros_planning_interface

Environment Configuration Packages#

Install test-msgs package:

1sudo apt install ros-humble-test-msgs

Install control-toolbox:

1sudo apt install ros-humble-filters ros-humble-control-toolbox
2
3colcon build --symlink-install --packages-select control_toolbox
4source install/setup.bash
5
6colcon build --symlink-install --packages-up-to hardware_interface

Install ackermann-msgs package:

1# Official ROS 2 ackermann-msgs package
2sudo apt install ros-humble-ackermann-msgs
3
4# Verify installation
5ros2 pkg list | grep ackermann_msgs

After completion, reset environment:

1# Reset environment variables
2unset AMENT_PREFIX_PATH
3unset CMAKE_PREFIX_PATH
4
5# Set basic ROS environment
6source /opt/ros/humble/setup.bash
7
8# Manually specify ackermann_msgs path
9export ackermann_msgs_DIR=~/ackermann_ws/install/ackermann_msgs/share/ackermann_msgs/cmake

Perform final compilation:

 1cd ~/ros2_control_ws
 2
 3# 1. Clean all build files
 4rm -rf build install log
 5
 6# 2. First compile message packages separately
 7colcon build --symlink-install --packages-select duco_msg
 8
 9# 3. Load system ROS and newly compiled message package environment
10source /opt/ros/humble/setup.bash
11source install/setup.bash  # Key: load newly compiled duco_msg
12
13# 4. Compile all other packages (allow overriding necessary messages)
14colcon build --symlink-install --allow-overriding ackermann_msgs,control_msgs