面试的时候被问你ROS2环境搭过吗我说搭过。装的时候遇到什么问题没我想了想好像都是照着文档一步步来的没啥印象。面试官说那说明你装得不够多。确实。ROS2的安装比ROS1复杂一些尤其是选版本、选DDS实现、配置环境这些环节每个都可能有坑。今天从安装开始一直到你写出第一个能跑的ROS2程序完整走一遍。选版本ROS2每年发布一个LTS长期支持版本。目前主流的有Humble Hawksbill2022年5月发布支持到2027年5月。这是目前工业界用得最多的版本大部分教程和第三方包都支持它。如果你是新手装这个最稳妥。Jazzy Jalisco2024年5月发布支持到2029年5月。较新的LTS版本功能更新但第三方包的覆盖率还在追赶Humble。操作系统方面ROS2官方支持Ubuntu。Humble对应Ubuntu 22.04Jazzy对应Ubuntu 24.04。如果你用Windows或macOS也能装但体验不如Linux有些功能可能受限。强烈建议用原生Ubuntu或者双系统不要用虚拟机跑ROS2。虚拟机里GPU加速不了Gazebo仿真跑不起来DDS的网络发现也可能有问题。如果实在没有Ubuntu环境用Docker也行但开发体验会差一些。安装ROS2 Humble以Ubuntu 22.04为例# 1. 设置localeROS2要求UTF-8支持 sudo apt update sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 # 2. 添加ROS2的apt源 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 $(. /etc/os-release echo $UBUNTU_DISTRO) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null # 3. 安装 sudo apt update sudo apt upgrade -y sudo apt install ros-humble-desktop -y # 4. 安装开发工具 sudo apt install ros-dev-tools -yros-humble-desktop包含了RViz2、Gazebo、demo包等可视化工具。如果你只需要核心库可以装ros-humble-ros-base体积更小。安装完之后设置环境变量echo source /opt/ros/humble/setup.bash ~/.bashrc source ~/.bashrc验证安装是否成功ros2 --help能看到一堆子命令就说明装好了。创建第一个工作空间ROS2的项目叫workspace工作空间用colcon工具管理编译。mkdir -p ~/ros2_ws/src cd ~/ros2_wssrc目录放你的源码包。一个workspace可以有多个包每个包独立编译。写一个Hello World节点在src下创建一个Python包Python入门最简单C版本后面会讲cd ~/ros2_ws/src ros2 pkg create --build-type ament_python my_first_pkg --dependencies rclpy这会生成一个标准的ROS2 Python包结构。然后编辑节点文件# ~/ros2_ws/src/my_first_pkg/my_first_pkg/hello_node.py import rclpy from rclpy.node import Node class HelloNode(Node): def __init__(self): super().__init__(hello_node) self.get_logger().info(Hello, ROS2! 我的第一个节点启动了) # 创建一个定时器每秒调用一次callback self.timer self.create_timer(1.0, self.timer_callback) self.count 0 def timer_callback(self): self.count 1 self.get_logger().info(f第 {self.count} 次问候Hello World!) def main(argsNone): rclpy.init(argsargs) node HelloNode() rclpy.spin(node) node.destroy_node() rclpy.shutdown() if __name__ __main__: main()然后在setup.py里注册这个入口点entry_points{ console_scripts: [ hello my_first_pkg.hello_node:main, ], },编译和运行回到workspace根目录编译cd ~/ros2_ws colcon build source install/setup.bash运行你的节点ros2 run my_first_pkg hello你应该能看到每秒输出一条Hello World的日志。按CtrlC停止。打开另一个终端看看节点是否注册成功ros2 node list # 应该能看到 /hello_node ros2 topic list # 查看当前所有topic常见问题排查安装过程中最常见的几个问题。ros2: command not found。99%是环境变量没source。执行source /opt/ros/humble/setup.bash或者检查~/.bashrc里有没有这行。colcon build报错找不到依赖。用rosdep安装sudo rosdep install --from-paths src --ignore-src -r -y。多个ROS2版本冲突。如果你同时装了Foxy和Humble确保每次只source一个版本的环境。可以用ROS_DISTRO环境变量检查当前用的是哪个版本。DDS发现不了其他节点。检查一下是否在同一个网络防火墙有没有拦截UDP组播。可以临时关闭防火墙试试sudo ufw disable。安装过程中的常见问题ROS2安装时最容易遇到的问题有几个一是rosdep初始化失败通常是因为网络问题可以换用国内镜像源二是colcon build时报依赖找不到多半是没有source setup.bash三是多个ROS2版本共存时的冲突问题建议用Docker隔离不同版本。面试时被问到环境搭建经验这些真实踩坑经历比教科书式的安装步骤更能体现你的实战能力。给你的建议安装这一步不要偷懒用虚拟机。ROS2的开发和调试尤其是后面涉及Gazebo仿真和DDS通信虚拟机里问题很多。如果电脑配置允许装个Ubuntu双系统。如果不想折腾双系统用Docker也行但记得加上--networkhost参数让DDS能正常通信。第一个Hello World跑通之后试着改改代码加个subscriber订阅一个topic或者加个publisher发布消息。动手改比看十遍教程都有用。上一篇第107篇 ROS1的痛点——为什么行业必须迁移到ROS2下一篇预告第109篇 ROS2架构设计哲学——DDS与去中心化