【ROS2】 核心概念2——功能包(package)

四足机器人 SLAM 导航实战

从零实现 Unitree Go2 的 SLAM 建图与 ROS2 导航,手把手集成 slam_toolbox

官方英文文档Creating a package — ROS 2 Documentation: Humble documentation

中文参考:古月ROS2 功能包讲解 - 图书资源

省流,就学习一个命令

ros2 pkg create --build-type <build-type> <package_name>

ROS2的重要概念

工作空间(Workspace)​​:【ROS2 】工作空间(workspace)——ROS2核心概念1
​​功能包(Package)​​:解耦的功能代码,一个workspace可有不同的编译代码(python、C++
​​节点(Node)​​:机器人的“工作细胞”,最小执行单元,负责单一功能(如传感器驱动)。
​​话题(Topic)​​:节点间异步传递数据的“桥梁”,基于发布/订阅模型(如传感器数据流)。
​​服务(Service)​​:同步的“你问我答”机制,适用于需即时响应的短任务(如开关控制)。
​​动作(Action)​​:复杂行为的“流程管理”,支持长时间任务、反馈与取消(如导航到目标点)。
​​通信接口(Interface)​​:数据传递的“标准结构”,定义消息(.msg)、服务(.srv)、动作(.action)格式。
​​参数(Parameter)​​:机器人系统的“全局字典”,动态键值对配置(如超时时间、IP地址)。
​​分布式通信(Distributed Communication)​​:跨多计算平台的“任务分配”,支持机器人集群协同工作。
​​DDS(Data Distribution Service)​​:ROS2底层的“神经网络”,实现实时、可靠的通信中间件

功能包与workspace的关系

在源码下,有多个子代码,不同的编译方式

workspace_folder/
    src/
      cpp_package_1/
          CMakeLists.txt
          include/cpp_package_1/
          package.xml
          src/

      py_package_1/
          package.xml
          resource/py_package_1
          setup.cfg
          setup.py
          py_package_1/
      ...
      cpp_package_n/
          CMakeLists.txt
          include/cpp_package_n/
          package.xml
          src/

功能包的创建

创建命令

ros2 pkg create --build-type <build-type> <package_name>
ros2 pkg create --build-type --help
  • pkg:表示功能包相关的功能;

  • create:表示创建功能包;

  • package_name:新建功能包的名字

  • build-type:说明

  • 可选值 {cmake,  ament_cmake,ament_python} 表示新创建的功能包是C++还是Python的,

    • ament_cmake:使用C++或者C,那这里就跟,如果

    • ament_python:使用Python,;

    • cmake:开发非ROS2的C/C++库 → CMake(避免ROS2生态干扰)

扩展阅读: ament

  • ament 原意为​​植物的「柔荑花序」​(如柳絮),其特点是​​多个小单元紧密连接成链状结构​​,隐喻ROS2构建系统将​​多个独立功能包串联成完整应用​​的过程。
  • 这一命名延续了ROS生态的「自然隐喻」风格(如ROS1的catkin意为「柳絮」​
Q1: 能否在ament_cmake包中混合Python代码?
  • ✅ 可以,但需手动配置安装规则(如ament_python自动处理更便捷)。
Q2: 为什么ament_python不需要CMakeLists.txt
  • 因为它使用setup.py替代了CMake的角色,通过setuptools管理构建流程。

 
案例:分别创建c++ 和python版本的功能包

cd ~/dev_ws/src # 自定义机器人工程的src库
ros2 pkg create --build-type ament_cmake learning_pkg_c               # C++
ros2 pkg create --build-type ament_python learning_pkg_python # Python

c++ 创建后文件

python 创建后文件

编译功能包

在创建好的功能包中,我们可以继续完成代码的编写,之后需要编译和配置环境变量,才能正常运行:

cd ~/dev_ws
colcon build   # 编译工作空间所有功能包
source install/local_setup.bash

四足机器人 SLAM 导航实战

从零实现 Unitree Go2 的 SLAM 建图与 ROS2 导航,手把手集成 slam_toolbox

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曾小蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值