2. ROS2 环境搭建
说实话,环境搭建是学 ROS2 的第一道坎。我见过太多人卡在这一步,装到一半放弃,或者装完了跑不起来。其实没那么玄乎,只要把 Ubuntu、ROS2 Humble、工作空间这三件事理清楚,后面就顺了。
这一章,我会带你一步步搭好环境。我自己的习惯是尽量用 LTS 版本,省心。好,咱们开始。
2.1 Ubuntu 系统安装 —— 选对版本就成功了一半
ROS2 Humble 官方推荐 Ubuntu 22.04 (Jammy)。我个人建议直接用这个版本,别折腾其他发行版。你想想看,官方测试最多的就是 22.04,遇到问题社区也最容易帮你。
安装方式有两种:
- 双系统:如果你需要高性能,比如跑 Gazebo 仿真或者控制真实机器人,我推荐双系统。我在项目里用过虚拟机跑导航,延迟很明显,后来换了双系统,流畅度完全不一样。
- 虚拟机:只是学习语法、写节点、测试通信,VMware 或 VirtualBox 完全够用。分配 4GB 内存、2 核 CPU 就行。
2.2 ROS2 Humble 安装 —— 一条命令搞定?没那么简单
官方给了一键安装脚本,但我还是建议你手动走一遍,知道每一步在干什么。以后出问题才知道怎么修。
核心步骤就这几行:
# 1. 设置 locale
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
# 2. 添加 ROS2 源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 3. 安装 ROS2 Humble 桌面版(推荐)
sudo apt update
sudo apt install ros-humble-desktop python3-colcon-common-extensions
嗯,这里要注意:ros-humble-desktop 包含了 rviz2、demo 节点、各种工具,大概 1.5GB。如果你空间紧张,可以装 ros-humble-base,但后面很多可视化工具得自己补。
2.3 ROS2 环境配置 —— 每次都要 source?不,让它自动加载
装完 ROS2 后,你会发现每个新终端都要执行 source /opt/ros/humble/setup.bash。说实话,太烦了。我习惯把它写到 ~/.bashrc 里:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
这样每次打开终端,ROS2 环境就自动加载了。验证一下:
ros2 run demo_nodes_cpp talker
# 再开一个终端,运行 listener,能看到 "I heard" 就说明环境没问题。
如果你用 zsh,记得把 ~/.bashrc 换成 ~/.zshrc。我团队里有个同事用 fish,折腾了半天…… 所以,老老实实用 bash 吧,兼容性最好。
2.4 ROS2 工作空间创建 —— colcon 是新时代的 catkin
工作空间就是你写代码的文件夹。ROS2 用 colcon 来编译,比 ROS1 的 catkin 快不少。创建一个工作空间只需要三步:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
第一次 build 会生成 build、install、log 三个文件夹。别忘了 source 一下:
source install/setup.bash
你也可以把它加到 ~/.bashrc 里,但我不建议这么做。因为不同工作空间可能会冲突。我个人的做法是:每个项目单独开一个终端,手动 source 对应的工作空间,这样干净。
echo $COLCON_PREFIX_PATH,如果显示你的工作空间路径,就说明 source 成功了。
2.5 验证整个环境 —— 跑一个简单的 C++ 节点
我们来写一个最简单的发布节点,确保从系统到工作空间全部通畅。
cd ~/ros2_ws/src
ros2 pkg create my_first_pkg --build-type ament_cmake --dependencies rclcpp std_msgs
cd my_first_pkg/src
# 用你喜欢的编辑器创建 talker.cpp,内容如下:
代码示例(talker.cpp):
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
int main(int argc, char **argv) {
rclcpp::init(argc, argv);
auto node = std::make_shared<rclcpp::Node>("talker");
auto pub = node->create_publisher<std_msgs::msg::String>("chatter", 10);
rclcpp::WallRate rate(1);
while (rclcpp::ok()) {
auto msg = std_msgs::msg::String();
msg.data = "Hello ROS2 Humble!";
pub->publish(msg);
rclcpp::spin_some(node);
rate.sleep();
}
rclcpp::shutdown();
return 0;
}
然后编译运行:
cd ~/ros2_ws
colcon build --packages-select my_first_pkg
source install/setup.bash
ros2 run my_first_pkg talker
如果终端每秒打印一条 "Hello ROS2 Humble!",恭喜你,环境搭建圆满成功!
rclcpp,八成是没 source ROS2 环境。检查 echo $ROS_DISTRO,如果是空,赶紧去 source 一下。
2.6 常用命令速查表
| 操作 | 命令 |
|---|---|
| 安装 ROS2 Humble 桌面版 | sudo apt install ros-humble-desktop |
| source 环境 | source /opt/ros/humble/setup.bash |
| 创建工作空间 | mkdir -p ~/ros2_ws/src && cd ~/ros2_ws && colcon build |
| 编译单个包 | colcon build --packages-select <pkg_name> |
| 运行节点 | ros2 run <pkg> <executable> |
| 查看节点列表 | ros2 node list |
好了,环境搭好,后面就可以放心写代码了。记住,环境问题占了 ROS2 入门阶段 60% 的报错,把这一步走稳,后面会轻松很多。