01 · 确认系统与发行版¶
本教程采用以下系统与发行版组合,安装前请确认目标环境一致:
ROS 2 Humble ←→ Ubuntu 22.04 LTS
提示
本文的二进制安装步骤面向 Ubuntu 22.04,不适用于其他系统版本。
02 · 准备一台 Ubuntu 22.04¶
可使用物理机或虚拟机准备 Ubuntu 22.04 环境。运行图形工具前,应核对显示与图形加速配置。
03 · 设置语言环境(locale)¶
配置 UTF-8 语言环境,避免日志显示与工具链编码异常。
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
提示
已有 UTF-8 环境时可跳过此步骤,先使用 locale 检查当前配置。
04 · 添加 ROS 2 软件源¶
安装前添加 ROS 2 软件源。
sudo apt update && sudo apt install curl gnupg lsb-release
sudo 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 $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
提示
下载密钥时若出现 Failed to connect to raw.githubusercontent.com,请检查网络与代理设置。可参考古月居的这篇说明。
提示
最后一行里的$(...)是自动读取你当前系统的 Ubuntu 代号(22.04 就叫 jammy),不用手动改。
05 · 安装 ROS 2¶
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop
ros-humble-desktop是带图形工具的完整版,rviz 和一堆示例节点都在里面。本教程使用此软件包进行节点和图形工具验证。
提示
apt upgrade 会升级系统软件包,执行前请检查已有环境和依赖兼容性。
06 · 让环境变量永久生效¶
source /opt/ros/humble/setup.bash
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
第一条命令作用于当前终端;第二条将配置写入 ~/.bashrc,供后续终端会话加载。
07 · 发布订阅节点验证¶
开两个终端,一个发消息、一个收消息:
# 终端 A:发布者,每秒发一条消息
ros2 run demo_nodes_cpp talker
# 终端 B:订阅者,把收到的消息打印出来
ros2 run demo_nodes_py listener
终端 B 里不断刷出I heard: [Hello World: N],就说明安装成功了。也可运行 ros2 --help 检查命令是否可用。
提示
出现 ros2: command not found 时,先检查安装状态与第 06 步的环境变量配置。
装完 ros-humble-desktop 之后:补齐开发工具链¶
desktop 只保证「能跑」,要自己建包还得装官方推荐的开发工具。下面按官方文档的顺序补齐,每一步都给出验证方式。
一、补齐 ros-dev-tools(官方推荐的开发工具元包)¶
官方 Ubuntu 安装页把安装分成三档:desktop(ROS、RViz、demos、tutorials)、ros-base,以及单独一行 "Development tools: Compilers and other tools to build ROS packages"。22.04 + Humble 的准确命令:
sudo apt update
sudo apt install ros-dev-tools
包名就是 ros-dev-tools,没有 ros-humble- 前缀。网上流传的 ros-humble-ros-dev-tools 在官方文档里查不到,如果 apt 报 “Unable to locate package”,先改成上面这个写法。它装的是「造包」而不是「跑包」的工具链——编译器、colcon、rosdep、vcstool、git 一类;只跟着教程跑例程可以缓一缓,一旦要自己建包就必须装。Debian 侧同名(以官方源实际包名为准);Humble 的 Tier 1 平台只有 Ubuntu 22.04、RHEL 8 与 Windows 10。
来源:https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html
二、环境变量:source 与写进 ~/.bashrc¶
source /opt/ros/humble/setup.bash
printenv | grep -i ROS # 应看到 ROS_VERSION=2、ROS_DISTRO=humble
要开机自动生效,官方写法是 echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc。但直接 >> 反复执行会重复追加,环境变量层层堆叠,排错时非常难看,建议加判重:
grep -qxF 'source /opt/ros/humble/setup.bash' ~/.bashrc \
|| echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
source ~/.bashrc
用 zsh 则换成 setup.zsh 与 ~/.zshrc。
来源:https://docs.ros.org/en/humble/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.html
三、rosdep 初始化(国内最易卡住的一步)¶
官方教程要求装 python3-rosdep,并明确指出:系统里若有同名的旧包 python3-rosdep2,必须先移除,两者不能共存。
sudo apt remove python3-rosdep2 # 只在装过旧包时需要
sudo apt install python3-rosdep
sudo rosdep init
rosdep update
国内常见坑(以下均为经验/社区方案,非官方支持):
rosdep init提示20-default.list已存在:说明此前初始化过,跳过 init 直接rosdep update。rosdep update卡在raw.githubusercontent.com:先挂代理,export https_proxy=http://127.0.0.1:7890(端口换成自己的),同一终端里再rosdep update。- 官方另提供
ROSDISTRO_INDEX_URL环境变量指向自定义/镜像索引,写法见「Using Custom Rosdistro Version」;镜像是否可用以其站点说明为准。 rosdepc等社区工具能绕过网络问题,但替换了索引与脚本,非官方支持,出问题先回退官方用法。
装完在 workspace 里补依赖:
rosdep install --from-paths src --ignore-src -y
来源:https://docs.ros.org/en/humble/Tutorials/Intermediate/Rosdep.html
来源:https://docs.ros.org/en/humble/How-To-Guides/Using-Custom-Rosdistro.html
四、建工作空间并编译¶
source /opt/ros/humble/setup.bash
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build --symlink-install
source install/setup.bash
--symlink-install 让 install/ 用符号链接指回 src/,改 Python 脚本、launch、yaml 不必重编(C++ 仍需重编),适合边写边调。install/setup.bash 会把 underlay 一起 source;只想叠加本工作空间时用 install/local_setup.bash。官方提醒:不要在编译过的那台终端里 source overlay,请新开终端。
验证:ls ~/ros2_ws 应出现 build install log src;ros2 pkg list | grep 你的包名 能找到自己的包。
来源:https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Creating-A-Workspace/Creating-A-Workspace.html
五、验证:talker / listener、topic、doctor¶
两个终端各自 source 后:
ros2 run demo_nodes_cpp talker # 终端 A
ros2 run demo_nodes_py listener # 终端 B
看到 Publishing 与 I heard 即说明 C++ 与 Python 两侧都正常。第三个终端:
ros2 topic list # 应出现 /chatter、/parameter_events、/rosout
ros2 doctor # 期望 All <n> checks passed
ros2 doctor --report # 网络 / 平台 / RMW / 话题的完整报告,提问求助时贴这段
ros2 doctor 只报 warning 通常仍可用,出现 UserWarning: ERROR: 才算该模块检查失败。
来源:https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Getting-Started-With-Ros2doctor.html
六、调试工具:desktop 已含哪些¶
官方对 desktop 的描述是「ROS, RViz, demos, tutorials」,即 rviz2、rqt、turtlesim、demo_nodes_* 基本都在,不必重复装。tf2_tools(view_frames)不保证随 desktop 提供,缺了再补:
sudo apt install ros-humble-rqt ros-humble-rqt-common-plugins ros-humble-rqt-graph
sudo apt install ros-humble-rviz2 ros-humble-tf2-tools ros-humble-turtlesim
不建议用 ros-humble-rqt* 这类通配写法(shell 与 apt 的展开行为容易和预期不一致);用 apt search ros-humble-rqt 看清楚再装更稳。验证:ros2 run turtlesim turtlesim_node 能开窗,配合 ros2 run turtlesim turtle_teleop_key 可控,rviz2 能起界面。
来源:https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html
七、高频报错速查¶
ros2: command not found:没 source 或~/.bashrc未生效。执行source /opt/ros/humble/setup.bash,再用printenv | grep ROS确认;装了多个发行版时先看ROS_DISTRO是否是 humble。Package 'xxx' not found:先ros2 pkg list | grep xxx判断是「没装」还是「没 source」。没装则sudo apt install ros-humble-xxx;装了找不到多为环境问题。Could not find a package configuration file provided by "xxx":CMake 找不到xxxConfig.cmake。装ros-humble-xxx、确认package.xml里有对应<depend>,再重新colcon build。- colcon build 找不到头文件:本质同上一类。先
rosdep install --from-paths src --ignore-src -y补齐依赖,再检查声明;依赖改动较大时删掉build/install/重编最省事。 SetuptoolsDeprecationWarning可忽略;真报ModuleNotFoundError: No module named 'distutils',通常是用了非系统 Python(conda 或 3.12)。官方明确说明 apt 版 ROS 2 不能与 conda 的 Python 混用,检查PATH里有无 conda 路径并注释掉;也不要随手pip install -U setuptools动系统包。- source 时报异常:可先
colcon version-check、sudo apt install python3-colcon* --only-upgrade升级 colcon。
来源:https://docs.ros.org/en/humble/How-To-Guides/Installation-Troubleshooting.html
八、10 分钟自检清单¶
- [ ]
printenv | grep -i ROS输出ROS_VERSION=2、ROS_DISTRO=humble - [ ] 新开终端直接
ros2 --help可用,无需手动 source - [ ]
ros2 pkg list | wc -l为几十到上百,且ros2 pkg list | grep demo_nodes_cpp有结果 - [ ] talker 打印
Publishing,listener 打印I heard,两个终端互通 - [ ]
ros2 topic list中出现/chatter - [ ]
ros2 topic echo /chatter能持续输出消息 - [ ]
ros2 doctor无UserWarning: ERROR: - [ ]
sudo rosdep init已完成、rosdep update不报错 - [ ]
~/ros2_ws下colcon build成功,source install/setup.bash后可ros2 run自己的包 - [ ]
ros2 run turtlesim turtlesim_node开窗,turtle_teleop_key可控 - [ ]
rviz2能正常启动
评论交流
0实践经验 · 技术讨论
登录读者账号后,可参与交流与回复。
登录后评论↗注册账号 ↗围绕本文内容分享经验或展开讨论。