Skip to content

Wiki

环境准备与源码地图

About 3 min read

Existing English translations were reused. 20 current source blocks remain in Simplified Chinese, without triggering paid translation.

本套教程使用 Ubuntu 24.04、ROS 2 Jazzy 和 C++17。先准备软件与源码,再由你创建官方实例和自己的学习工程。

1.程序目标

区分操作系统、ROS 安装空间、工作区和源码阅读目录;确认运行的包与阅读的实现相互对应。不要只看到 ros2_control 元包版本,就认定所有子包都具有相同版本。

2.示例 1:检查并安装环境

在普通用户的 Bash 终端执行:

lsb_release -ds
locale

系统应为 Ubuntu 24.04,字符编码支持 UTF-8。尚未安装 Jazzy 时,先按 官方 Ubuntu 安装说明 配置 ROS 软件源并完成系统更新,再安装桌面版和开发工具:

sudo apt-get update
sudo apt-get install -y ros-jazzy-desktop build-essential cmake git ripgrep \
  python3-colcon-common-extensions python3-rosdep
source /opt/ros/jazzy/setup.bash
printenv ROS_DISTRO

最后应输出 jazzy。软件安装需要 sudo,创建工作区、构建和运行程序使用普通用户。

3.示例 2:安装并核对控制框架

sudo apt-get install -y ros-jazzy-ros2-control ros-jazzy-ros2-controllers \
  ros-jazzy-hardware-interface ros-jazzy-controller-interface \
  ros-jazzy-controller-manager ros-jazzy-joint-state-broadcaster \
  ros-jazzy-forward-command-controller ros-jazzy-diff-drive-controller \
  ros-jazzy-joint-trajectory-controller ros-jazzy-realtime-tools \
  ros-jazzy-launch ros-jazzy-launch-ros \
  ros-jazzy-xacro ros-jazzy-robot-state-publisher \
  ros-jazzy-joint-state-publisher-gui
ros2 pkg prefix hardware_interface
dpkg-query -W ros-jazzy-hardware-interface ros-jazzy-controller-interface \
  ros-jazzy-controller-manager ros-jazzy-diff-drive-controller

3.1.版本约定

主线源码参考 ros2_control 4.48.1、ros2_controllers 4.42.1、realtime_tools 3.13.0。Jazzy 在维护过程中也会增加 API;硬件插件中使用的 HardwareComponentInterfaceParams 应与这些版本的头文件对应。

如果系统安装较早的子包,先从同一个 ROS 软件源更新所需包并核对依赖。不要将旧头文件、新管理器和另一个工作区的共享库混用。遇到无法找到某个类型时,先检查包版本和实际 include 路径,再改代码。

4.示例 3:创建官方实例工作区

mkdir -p ~/ros2_control_jazzy_demos_ws/src
cd ~/ros2_control_jazzy_demos_ws/src
git clone --branch jazzy https://github.com/ros-controls/ros2_control_demos.git
cd ros2_control_demos
git checkout 34933be69fc76c33b5889f4d8993eb0f3a92e20f
cd ~/ros2_control_jazzy_demos_ws
rosdep update --rosdistro jazzy
rosdep install --from-paths src --ignore-src -r -y --rosdistro jazzy
colcon build --symlink-install --packages-up-to \
  ros2_control_demo_example_1 ros2_control_demo_example_2 \
  ros2_control_demo_example_3 ros2_control_demo_example_9 \
  --cmake-args -DBUILD_TESTING=OFF
source install/setup.bash

rosdep 尚未初始化时,先执行一次 sudo rosdep init,再以普通用户执行 rosdep update。--packages-up-to 会构建所选实例及工作区内依赖,不要遗漏 description 或 test_utils 包。

5.示例 4:下载阅读源码

mkdir -p ~/ros2_control_jazzy_reference
cd ~/ros2_control_jazzy_reference
git clone --depth 1 --branch 4.48.1 https://github.com/ros-controls/ros2_control.git
git clone --depth 1 --branch 4.42.1 https://github.com/ros-controls/ros2_controllers.git
git clone --depth 1 --branch 3.13.0 https://github.com/ros-controls/realtime_tools.git
git clone --depth 1 --branch 1.2.20 https://github.com/ros-controls/gz_ros2_control.git

阅读目录与构建用 src 分开。下载源码本身不会让 ROS 自动使用它;要使用自己构建的包,还需要构建、安装并 source 对应工作区。

6.终端约定

运行官方实例时只叠加官方实例工作区;编写自己的工程时只叠加学习工作区。每个新终端都要 source。相关终端使用相同的 ROS_DOMAIN_ID,本教程不要求固定数值。同一 domain 一次只运行一个本教程机器人。

~ 是当前 Ubuntu 用户主目录。学习工程从从零创建学习工作区开始由你逐步创建。Harmonic 和串口依赖分别在Harmonic机械臂物理仿真、虚拟串口与模拟下位机中安装。


返回 Jazzy 总览 · 下一篇:ros2_control整体工作过程