不用懂原理跟着敲5分钟就能跑起来看完你就知道这俩东西是干啥的了。先搞懂这俩东西是啥用最直白的话说ROS 2机器人专用的软件全家桶里面有一堆现成的小程序叫节点比如摄像头驱动、导航、画图等等。命令行启动就像你双击桌面上的图标打开软件只不过 ROS 2 不用双击在黑窗口终端里输命令打开。CMake如果你自己写了代码它帮你把代码变成能双击打开的程序相当于打包工具。就这么简单不用记那些复杂名词。第一部分启动一个现成的 ROS 2 程序30秒搞定我们用 ROS 2 自带的小海龟模拟器做例子不用写一行代码。第一步打开终端按Ctrl Alt T会弹出一个黑窗口这就是终端我们所有命令都输在这里。第二步告诉系统我要用 ROS 2每次新开终端第一行先输这个相当于唤醒ROS 2source /opt/ros/humble/setup.bash 小提示如果你装的不是 humble 版本就把 humble 换成你装的版本名比如 jazzy。 如果嫌每次都输麻烦我最后告诉你怎么一次性搞定。第三步启动小海龟窗口输完上面的命令再输ros2 run turtlesim turtlesim_node按回车你会看到弹出一个蓝色窗口中间有个小海龟。恭喜你已经成功启动了第一个 ROS 2 程序第四步用键盘控制海龟现在海龟还不会动我们再开一个终端再按一次 CtrlAltT同样先输唤醒命令source /opt/ros/humble/setup.bash然后输ros2 run turtlesim turtle_teleop_key按回车现在按键盘上的方向键你看海龟是不是动起来了⚠️ 注意想让海龟动的时候鼠标要点一下第二个终端键盘控制那个不然键盘输入不进去。命令解释一秒看懂刚才你输的ros2 run就是启动单个程序的命令格式固定长这样ros2 run turtlesim turtle_teleop_key包名就是软件包的名字比如 turtlesim海龟包程序名这个包里面具体哪个小程序比如 turtlesim_node显示海龟的程序不用死记你要跑哪个程序网上搜一下对应的命令就行。第二部分一次启动一堆程序ros2 launch刚才我们开了2个终端才跑起来海龟但是真正的机器人可能要开十几个程序摄像头、雷达、导航、底盘...总不能一个一个开吧这时候就用ros2 launch它可以一次性帮你打开一堆程序还能自动设置好参数。举个例子还是海龟只要一行命令它自动帮你打开海龟窗口键盘控制# 还是先source然后输 ros2 launch turtlesim multisim.launch.py是不是一下弹出来两个海龟这就是 launch 的作用一键启动全套。第三部分CMake 是干啥的大白话讲明白刚才我们跑的是别人写好的程序如果你想自己写一个程序就要用到 CMake 了。还是用类比你写了一篇英文作文C 代码但是老师只看得懂中文电脑只认识二进制你需要一个翻译帮你把英文变成中文这个翻译就是编译器比如 g。但是如果你的作文很长分成了好几个文件还有引用别人写的内容翻译一个一个翻太麻烦这时候你需要一个包工头它帮你安排哪个文件先翻、哪个后翻、要引用哪些东西最后把所有东西拼在一起变成一个完整的程序。CMake 就是这个包工头。你只需要写一个叫CMakeLists.txt的文件告诉包工头我这个项目叫啥名要编译哪些代码文件要用到哪些别人写的库然后 CMake 就自动帮你安排好编译流程最后生成能跑的程序。第四部分自己写一个程序从0到跑通超简单我们写一个最简单的打印 Hello ROS的程序走一遍完整流程。第一步建个工作文件夹ROS 2 要求所有自己写的代码都放在一个叫工作空间的文件夹里其实就是个普通文件夹我们建一个# 1. 新建文件夹名字随便取一般叫 dev_ws开发工作空间 mkdir -p ~/dev_ws/src cd ~/dev_ws/src第二步建一个自己的包ROS 2 的代码不能乱放要放在包里面相当于给你的程序建个单独的文件夹# 建一个叫 my_hello 的包用 CMake 编译 ros2 pkg create --build-type ament_cmake my_hello这时候你会看到 src 下面多了个 my_hello 文件夹里面已经帮你生成好了 CMakeLists.txt 和 package.xml 这两个文件不用自己从头写。第三步写代码进入 my_hello 文件夹新建一个叫hello.cpp的文件把下面内容粘进去#include iostream int main() { std::cout 你好我的第一个 ROS 2 程序跑起来啦 std::endl; return 0; }就这么简单打印一句话。第四步告诉 CMake 要编译这个文件打开 my_hello 文件夹里的CMakeLists.txt在文件最后加两行add_executable(hello_node hello.cpp) install(TARGETS hello_node DESTINATION lib/${PROJECT_NAME})就这两行其他已经有的内容不用改第一行告诉 CMake把 hello.cpp 编译成叫 hello_node 的程序第二行告诉 CMake编译完把程序放到该放的地方让 ros2 run 能找到第五步编译回到工作空间根目录~/dev_ws输编译命令cd ~/dev_ws colcon build等它跑完显示 finished 就是编译成功了colcon build就是 ROS 2 专门调用 CMake 帮你编译所有包的命令不用你自己手动 cmake、make一行搞定。第六步跑你自己写的程序编译完先source一下让系统认识你刚编译好的程序source install/setup.bash然后用你已经学会的 ros2 run 启动ros2 run my_hello hello_node按回车你看终端打印出你好我的第一个 ROS 2 程序跑起来啦——你自己写的程序跑通了新手最容易踩的3个坑90%的人都栽过❌ 新开终端忘了 source不管开多少个终端只要你要用到 ROS 2第一行必须先输那个 source 命令不然系统找不到 ROS 2 命令会报 command not found。❌ 编译完忘了 source install自己写的代码colcon build 完之后一定要在工作空间根目录再source install/setup.bash一次不然 ros2 run 找不到你刚编译的程序。❌ 程序跑起来没反应看是不是终端没聚焦比如刚才的键盘控制海龟一定要点一下那个终端窗口再按方向键不然按键输不进去。一劳永逸不用每次都输 source如果你嫌每次开终端都要输 source 太麻烦把下面两行命令输一次以后开终端自动帮你sourceecho source /opt/ros/humble/setup.bash ~/.bashrc echo source ~/dev_ws/install/setup.bash ~/.bashrc输完关掉终端重开一次以后就不用每次都敲了。总结一下就三句话启动现成程序用ros2 run 包名 程序名启动一堆程序用ros2 launch。自己写代码要建工作空间、建包然后 CMakeLists.txt 里加两行告诉它编译啥。编译用colcon build记得每次source你就已经超过80%的新手了。就这么简单多敲两遍命令就熟了不用怕