Wiki
環境準備與源碼地圖
本文由簡體中文內容確定性轉換,並受版本化術語表保護。
本套教程使用 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機械臂物理仿真、虛擬串口與模擬下位機中安裝。