2、ROS2开发环境搭建:Ubuntu系统安装、ROS2 Humble安装、工作空间创建与编译、第一个ROS2节点。
说实话,搞机器人开发,环境搭建往往是劝退很多人的第一道坎。我见过太多人卡在安装这一步,还没开始写代码就放弃了。其实没那么可怕,今天我就带你一步步把ROS2的开发环境搭起来。
2.1 Ubuntu系统安装——选对版本很重要
ROS2 Humble对应的Ubuntu版本是22.04 LTS。为什么强调LTS?因为我在项目里吃过亏——用非LTS版本,半年后系统要升级,一堆依赖全乱了。所以记住:ROS2 Humble + Ubuntu 22.04 LTS,这是官方钦定的组合。
安装方式有两种:
- 双系统安装:性能最好,适合主力开发机
- 虚拟机安装:方便切换,适合学习测试
我个人习惯用双系统,毕竟机器人控制对实时性有要求。但如果你只是学语法、跑仿真,虚拟机完全够用。
小提示:安装时记得给Ubuntu留至少50GB空间,ROS2装完各种依赖包,空间很快就吃掉了。
2.2 ROS2 Humble安装——别被命令行吓到
安装ROS2其实就几条命令。但为什么很多人装失败?说白了,就是源的问题。
先设置软件源:
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
然后安装:
sudo apt update
sudo apt install ros-humble-desktop
嗯,这里要注意。如果你在墙内,上面的源可能很慢。我曾经帮一个学员排查,他卡在下载那一步整整一下午。后来换了国内镜像,几分钟搞定。
避坑指南:我曾经遇到过安装到一半网络断了,再继续就各种报错。建议用
sudo apt install -y一次性装完,别中途打断。
装完后别忘了配置环境变量:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下:
ros2 --version
看到版本号就说明装好了。
2.3 工作空间创建与编译——你的代码仓库
工作空间(workspace)说白了就是放ROS2项目的文件夹。我习惯叫它ros2_ws。
创建步骤:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
等等,你可能还没装colcon。这是ROS2的编译工具:
sudo apt install python3-colcon-common-extensions
编译完成后,你会看到build、install、log三个文件夹。它们的作用:
| 文件夹 | 作用 |
|---|---|
| build | 编译中间文件,不用管它 |
| install | 编译产物,运行时要source这里的setup.bash |
| log | 编译日志,出错了来这里查 |
重要:每次编译完都要source一下工作空间:
source ~/ros2_ws/install/setup.bash。我建议把它也加到.bashrc里。
2.4 第一个ROS2节点——Hello World的升级版
写一个最简单的节点,就打印一句话。
先创建功能包:
cd ~/ros2_ws/src
ros2 pkg create my_first_pkg --build-type ament_python --dependencies rclpy
然后编辑my_first_pkg/my_first_pkg/my_first_node.py:
import rclpy
from rclpy.node import Node
class MyFirstNode(Node):
def __init__(self):
super().__init__('my_first_node')
self.get_logger().info('你好,ROS2!这是我的第一个节点。')
def main(args=None):
rclpy.init(args=args)
node = MyFirstNode()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
别忘了在setup.py里注册入口点:
entry_points={
'console_scripts': [
'my_first_node = my_first_pkg.my_first_node:main',
],
},
编译并运行:
cd ~/ros2_ws
colcon build
source install/setup.bash
ros2 run my_first_pkg my_first_node
看到「你好,ROS2!这是我的第一个节点。」就成功了。
小技巧:用
ros2 node list可以查看当前运行的节点。你想想看,以后调试复杂系统时,这个命令能帮你快速定位问题。
2.5 本章知识体系
下面这张图帮你理清整个环境搭建的脉络:
环境搭好了,后面的事情就顺了。记住:源别搞错、版本要对齐、每次编译后记得source。这三点做到,你就能避开90%的坑。