跳到主要内容

功能包可以理解为存放节点的地方,ROS2中功能包根据编译方式的不同分为三种类型。

  • ament_python,适用于python程序
  • cmake,适用于C++
  • ament_cmake,适用于C++程序,是cmake的增强版

系统目录:/opt/ros/humble/

mkdir -p town_ws/src
cd town_ws

功能包的获取

安装

sudo apt install ros-<version>-package_name

手动编译获取

手动编译相对麻烦一些,需要下载源码然后进行编译生成相关文件。
手动编译之后,需要手动source工作空间的install目录。

与功能包相关的指令ros2 pkg

create       Create a new ROS2 package
executables Output a list of package specific executables
list Output a list of available packages
prefix Output the prefix path of a package
xml Output the XML of the package manifest or a specific tag

1,创建功能包

ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  --dependencies <依赖名字>

2,列出可执行文件

ros2 pkg executables

列出turtlesim功能包的所有可执行文件

ros2 pkg executables turtlesim

3.列出所有的包

ros2 pkg list

4.输出某个包所在路径的前缀

ros2 pkg prefix  <package-name>

比如小乌龟

ros2 pkg prefix turtlesim

5.列出包的清单描述文件

每一个功能包都有一个标配的manifest.xml文件,用于记录这个包的名字,构建工具,编译信息,拥有者,干啥用的等信息。

通过这个信息,就可以自动为该功能包安装依赖,构建时确定编译顺序等

查看小乌龟模拟器功能包的信息。

ros2 pkg xml turtlesim 

ROS2构建工具-Colcon

colcon其实是一个功能包构建工具

1,安装colcon

sudo apt-get install python3-colcon-common-extensions

2,编个东西

mkdir colcon_test_ws && cd colcon_test_ws
git clone <https://github.com/ros2/examples> src/examples -b humble

编译工程

colcon build

3,编完之后的目录结构

.
├── build
├── install
├── log
└── src

4 directories, 0 files
  • build 目录存储的是中间文件。对于每个包,将创建一个子文件夹,在其中调用例如CMake
  • install 目录是每个软件包将安装到的位置。默认情况下,每个包都将安装到单独的子目录中。
  • log 目录包含有关每个colcon调用的各种日志信息

运行一个自己编的节点

1,打开一个终端使用 cd colcon_test_ws进入我们刚刚创建的工作空间,先source 一下资源

source install/setup.bash

2,运行一个订杂志节点,你将看不到任何打印,因为没有发布者

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

3,打开一个新的终端,先source,再运行一个发行杂志节点

source install/setup.bash
ros2 run examples_rclcpp_minimal_publisher publisher_member_function

只编译一个包

colcon build --packages-select YOUR_PKG_NAME 

不编译测试单元

colcon build --packages-select YOUR_PKG_NAME  --cmake-args -DBUILD_TESTING=0

运行编译的包的测试

colcon test

允许通过更改src下的部分文件来改变install(重要)

colcon build --symlink-install

##参考与致谢