ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

ROS2入门:命令行启动节点与Launch程序

ROS2入门:命令行启动节点与Launch程序 目录一、前置必备环境初始化必做1. 系统ROS2基础环境2. 自定义工作空间环境二、核心一ros2 run 启动单个节点1. 标准语法2. 实操示例官方海龟模拟器3. 辅助查询命令解决找不到文件问题三、核心二ros2 launch 启动多节点程序1. 标准语法2. 实操示例四、自定义功能包启动完整流程1. 编译自定义功能包2. 加载编译后的环境3. 命令行启动程序五、ROS2 CMake 工具核心使用编译底层核心1. CMake 在 ROS2 中的作用2. 原生 CMake 手动编译流程理解底层3. ROS2 标准 CMakeLists.txt 核心配置解析4. CMake 高频使用场景与技巧5. CMake 常见编译报错避坑六、配套调试命令开发必备七、核心区别总结新手必记八、常见报错避坑结语对于刚入门 ROS 2 的开发者来说通过命令行启动程序是最基础、最核心的操作。不同于 ROS 1ROS 2 优化了命令行语法将单节点启动、多节点批量启动做了明确拆分逻辑更清晰但也容易让新手混淆ros2 run和ros2 launch的使用场景。本文将从零讲解 ROS 2 命令行启动程序的两种核心方式搭配通用实操命令、场景区分、配套调试工具和自定义包启动流程适配 Humble、Iron、Jazzy 全版本 ROS 2新手看完即可上手实操。一、前置必备环境初始化必做ROS 2 所有命令行操作的前提是加载环境变量否则终端会提示「找不到命令、找不到功能包」等报错这是新手最高频的踩坑点。1. 系统ROS2基础环境每次新开终端执行对应版本的环境加载命令以最常用的 Humble 为例source /opt/ros/humble/setup.bash2. 自定义工作空间环境如果是自己创建的工作空间如 ros2_ws编译程序后需要额外加载工作空间环境source ~/ros2_ws/install/setup.bash小技巧可以将上述命令写入~/.bashrc实现开机自动加载无需每次手动执行。二、核心一ros2 run 启动单个节点ros2 run是 ROS 2 启动单个独立节点的专属命令适用于只需要运行某一个功能模块的简单场景是最基础的启动方式。1. 标准语法ros2 run 功能包名 可执行文件名功能包名ROS 2 项目的最小单元文件夹名称可执行文件名功能包编译后生成的可执行程序名称非文件夹名2. 实操示例官方海龟模拟器# 启动海龟仿真节点 ros2 run turtlesim turtlesim_node执行命令后会弹出海龟仿真窗口代表单个节点启动成功。新开终端输入下方命令可单独启动键盘控制节点ros2 run turtlesim turtle_teleop_key3. 辅助查询命令解决找不到文件问题新手常不知道功能包的可执行文件名称可通过以下命令查询# 列出指定包内所有可执行程序 ros2 pkg executables turtlesim # 查看功能包的安装路径 ros2 pkg prefix turtlesim三、核心二ros2 launch 启动多节点程序实际开发中一个机器人功能往往需要多个节点协同工作如雷达节点定位节点导航节点逐个用ros2 run启动效率极低此时就需要ros2 launch。ros2 launch通过读取 launch 启动文件可一次性批量启动多个节点、配置参数、设置设备别名是项目开发的主流启动方式。1. 标准语法ros2 launch 功能包名 launch启动文件ROS 2 主流启动文件为.py格式Python兼容少量老旧.xml格式文件。2. 实操示例# 一键启动海龟仿真全套程序 ros2 launch turtlesim turtlesim.launch.py单条命令即可完成多模块初始化无需逐个启动节点大幅提升开发效率。四、自定义功能包启动完整流程除了官方示例我们自己编写的 ROS 2 程序可按照「编译-加载环境-启动」三步完成启动流程固定通用1. 编译自定义功能包# 进入工作空间 cd ~/ros2_ws # 编译指定功能包 colcon build --packages-select 你的包名2. 加载编译后的环境source install/setup.bash3. 命令行启动程序# 启动单个自定义节点 ros2 run 你的包名 可执行文件名 # 启动自定义launch多节点程序 ros2 launch 你的包名 启动文件.py五、ROS2 CMake 工具核心使用编译底层核心前文使用的colcon build是 ROS2 封装的批量构建工具其底层完全依赖 CMake实现源码编译、依赖配置、可执行文件生成。对于自定义 C 功能包必须掌握基础 CMake 用法才能解决编译报错、自定义编译规则、配置第三方依赖等问题是进阶开发的核心技能。1. CMake 在 ROS2 中的作用ROS2 功能包通过根目录的CMakeLists.txt文件定义编译规则CMake 的核心作用扫描源码、解析依赖、生成编译配置文件、编译生成可执行节点/库文件最终供ros2 run调用运行。Python 包无需 CMake仅 C 功能包必备。2. 原生 CMake 手动编译流程理解底层日常开发用 colcon 批量编译但排查编译报错、自定义编译参数时需要掌握原生 CMake 编译三步流程适配所有 ROS2 C 包# 1. 进入功能包编译目录ROS2 固定编译目录 build cd ~/ros2_ws/build/你的包名 # 2. CMake 生成编译配置加载ROS2环境、解析CMakeLists规则 cmake .. # 3. 执行编译生成可执行文件 make -j8参数说明-j8代表8线程编译可根据电脑CPU核心数调整加速编译速度。编译完成后可执行文件会自动生成在install/你的包名/bin/目录下。3. ROS2 标准 CMakeLists.txt 核心配置解析新手无需手写完整配置只需掌握核心固定字段看懂、会修改即可适配所有自定义C节点# 1. 指定CMake最低版本ROS2 Humble及以上推荐3.8 cmake_minimum_required(VERSION 3.8) # 2. 定义功能包名称必须和package.xml包名一致 project(your_package_name) # 3. 查找ROS2核心依赖必配 find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) # C节点核心依赖 # 4. 编译可执行节点源码文件 生成的节点名 add_executable(your_node src/your_node.cpp) # 5. 绑定节点依赖库 ament_target_dependencies(your_node rclcpp) # 6. 安装节点到系统目录关键否则ros2 run找不到节点 install(TARGETS your_node DESTINATION lib/${PROJECT_NAME} ) ament_package()4. CMake 高频使用场景与技巧清理旧编译缓存修改CMakeLists.txt后必须清理缓存否则配置不生效执行rm -rf ~/ros2_ws/build ~/ros2_ws/install后重新编译指定C编译标准添加set(CMAKE_CXX_STANDARD 17)适配ROS2新版本语法特性添加第三方库通过find_package(XXX REQUIRED)引入OpenCV、PCL等第三方依赖5. CMake 常见编译报错避坑报错No CMAKE_CXX_COMPILER未安装编译工具执行sudo apt install build-essential cmake安装依赖报错ament_cmake not found未source ROS2环境编译前必须加载系统环境变量编译成功但找不到节点CMakeLists中未配置install安装规则节点未部署到运行目录六、配套调试命令开发必备启动程序后可通过以下命令查看节点状态、排查异常适配日常调试场景# 查看当前所有运行的节点 ros2 node list # 查看指定节点的详细信息话题、服务、参数 ros2 node info /节点名七、核心区别总结新手必记启动命令适用场景核心特点ros2 run单个节点启动、单点调试简单直接仅启动一个可执行程序无批量配置能力ros2 launch多节点联动、项目整体启动支持批量启动、参数配置、节点管理适合正式开发八、常见报错避坑报错Package not found未加载环境变量重新执行source环境命令即可报错Executable not found功能包未编译、可执行文件名输入错误节点启动无反应终端未加载工作空间环境编译后必须重新 source结语命令行启动是 ROS 2 开发的入门基石熟练区分ros2 run和ros2 launch的使用场景能快速适配单点调试和项目部署场景。后续复杂的机器人导航、建图、视觉项目均基于这两种启动方式延伸。建议新手多实操练习结合节点查询、状态调试命令彻底吃透基础用法为后续进阶开发打好基础。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表