功能包可以理解为存放节点的地方,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
目录存储的是中间文件。对于每个包,将创建一个子文件夹,在其中调用例如CMakeinstall
目录是每个软件包将安装到的位置。默认情况下,每个包都将安装到单独的子目录中。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
- colcon官方文档 **https://colcon.readthedocs.io/en/released/user/installation.html**
- ROS2官网文档 **https://docs.ros.org/en/foxy/Tutorials/Colcon-Tutorial.html**
##参考与致谢