ros2常用命令

1、ros2安装

bash 复制代码
wget http://fishros.com/install -O fishros && . fishros

2、小海龟:测试一下

bash 复制代码
ros2 run turtlesim turtlesim_node

ros2 run turtlesim turtle_teleop_key

3、colcon安装

bash 复制代码
sudo apt install python3-colcon-common-extensions

colcon --help

pip3 show colcon-core
  • 全称/背景 :colcon 是一个通用的、可扩展的构建工具,支持多种构建系统(如 CMake、Python setuptools、ament 等)。
  • 在 ROS 2 中的作用 :
    • 编译你写的 ROS 2 包(C++ / Python)
    • 管理依赖关系
    • 生成可执行文件、库、消息类型等

📌 注意:colcon 本身不是 ROS 2 的一部分,而是一个独立的 Python 工具,但 ROS 2 官方指定它为标准构建工具。

为什么 ROS 2 使用 Python 编写的 colcon 来编译 C++/Python 代码?

  • 核心思想:"编排者 ≠ 编译器"

colcon 本身不编译任何代码 ,它只是一个 "构建流程的协调者(orchestrator)"。

  • 真正的编译工作由底层工具完成:
    • C++ 包 → 用 CMake + make / ninja
    • Python 包 → 用 setuptools / pip
    • 其他语言(如 Rust、Go)→ 对应的构建工具
  • colcon 的任务是:
    • 扫描工作空间中的所有包
    • 分析依赖关系(谁依赖谁)
    • 按正确顺序调用 CMake、setup.py 等工具
    • 统一管理输出目录(build/, install/)
    • 提供一致的命令行体验(colcon build, colcon test)

✅ 所以:用 Python 写"调度器"完全合理,因为调度不需要高性能,但需要灵活性和可扩展性。


与 ROS 1 的教训对比

  • ROS 1 用 catkin(基于 CMake 的宏),导致:
    • CMake 被"滥用"做包管理,逻辑混乱
    • 难以支持非 CMake 包(如纯 Python 包)
    • 构建系统和包描述 tightly coupled(紧耦合)
  • ROS 2 吸取教训:分离"包描述"、"构建系统"、"构建调度器"
    → 于是诞生了 colcon(调度器) + ament(ROS 2 的包格式和 CMake 工具链)


4、ros2 编译流程:Hello World

bash 复制代码
# 1、创建功能包(工作空间的:src目录下)
# pkg01_helloworld_cpp 是(自定义)的(功能包)的名词
ros2 pkg create pkg01_helloworld_cpp --build-type ament_cmake --dependencies rclcpp --node-name helloworld

# 2、编辑源文件
.cpp文件

# 3、编辑配置文件
package.xml、CMakeLists.txt

# 4、编译(工作空间下)
colcon build

# 5、执行(工作空间下)
# helloworld 是node-name 名称
. install/setup.bash
ros2 run pkg01_helloworld_cpp helloworld
相关推荐
兜里只有三分钱~14 小时前
从 URDF 到 SDK:开发者视角拆解启元 T1/Q1 机器人架构
机器人·sdk·仿真·ros2·urdf
特立独行的猫a4 天前
ROS 2 主流DDS中间件入门:Cyclone DDS 与 Fast DDS 完全指南
中间件·ros2·dds·fast dds·cyclone dds
轻口味8 天前
启元无真机二开实战1:54 个接口能做什么、不能做什么——启元 Q1/T1 SDK 能力全景与版本矩阵
线性代数·矩阵·ros2·具身智能·启元机器人
热金鼠10 天前
2.ROS2 核心机制与命令行实操
ros2
大雨歌16 天前
笛卡尔坐标 → 自然坐标(Frenet) 逐步推导全解 -2
ros2
米糕闯编程19 天前
鱼香ros2(十七)C++小海龟巡逻
开发语言·c++·机器人·ros2·服务·小海龟
风合星语21 天前
2026 机器人工程实例(七):Nav2 到站了,任务却没完成——AMR 载货导航中的托盘滑移与验收闭环
人工智能·机器人·ros2·机器人仿真·nav2·mujoco·amr
米糕闯编程1 个月前
鱼香ros2(十二)C++话题订阅与发布
开发语言·c++·ros2·话题
朝朝辞暮i1 个月前
C++ 第 36 课:Action——机械臂/VLA 非常重要
开发语言·c++·算法·ros2
朝朝辞暮i1 个月前
C++ 第 39 章: 阶段性总复习——类、对象、构造、继承、this、指针与智能指针
开发语言·c++·算法·ros2