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):
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
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
Install ROS2
1sudo apt update
2sudo apt upgrade
3sudo apt install ros-humble-desktop
Finally install dev tools
1sudo apt install ros-dev-tools
The following details the installation process for ros2_control:
First source ROS2 resources
1source /opt/ros/humble/setup.bash
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