# 3. ROS2构建工具—Colcon 大家好,我是编译代码特别慢的小鱼。本节课我们来讲一下ROS2编译工具`colcon` 本节小鱼会从下面几个方面来介绍: 1. Colcon是个啥 2. 安装colcon 3. 编个东西测试一下 4. 运行一个自己编的节点 5. colcon学习总结指令 ## 1.Colcon是个啥 colcon其实是一个功能包构建工具,这个工具用来做什么的呢? 简单点说就是用来编译代码的,上几节跟大家讲了如何进行ROS2工作空间的创建,但没有说如何进行编译,其实就是用colcon。 ROS2默认是没有安装colcon的,所以小鱼就从如何安装colcon开始跟大家讲解colcon的使用方法。 > colcon想当于ros1中的catkin工具,学过ros1的同学可以辅助理解。没学过也没关系,用多了自然也就懂了。 ## 2.安装colcon 如果使用一键安装ROS2,会帮你安装好这个工具,以防万一我们再装一次,打开终端复制粘贴进去即可。 ``` sudo apt-get install python3-colcon-common-extensions ``` 安装完成后,打开终端输入`colcon`即可看到其使用方法。 ## 3. 编个东西测试一下 1. 创建一个工作区文件夹`colcon_test_ws` ``` cd d2lros2/chapt2/ mkdir colcon_test_ws && cd colcon_test_ws ``` 2. 下载个ROS2示例源码测试一下 ``` git clone https://github.com/ros2/examples src/examples -b humble ``` > 如果这步克隆错误,你可能需要一个梯子翻个墙:[点击这里试试小鱼用了很多年的梯子](https://portal.shadowsocks.nz/aff.php?aff=41638) 3. 编译工程 ``` colcon build ``` ![image-20210720211422653](3.ROS2构建工具之Colcon/imgs/image-20210720211422653.png) > 如果在编译中遇到`Setuptools DeprecationWarning: setup.py install is deprecated.`这个警告,可以通过更新setuptools解决。 > > 详细操作见社区帖子:https://fishros.org.cn/forum/topic/254/ 4. 编完之后的目录结构 构建完成后,在`src`同级目录我们应该会看到 `build` 、 `install` 和 `log` 目录: ``` . ├── build ├── install ├── log └── src 4 directories, 0 files ``` - `build` 目录存储的是中间文件。对于每个包,将创建一个子文件夹,在其中调用例如CMake - `install` 目录是每个软件包将安装到的位置。默认情况下,每个包都将安装到单独的子目录中。 - `log` 目录包含有关每个colcon调用的各种日志信息。 ## 4.运行一个自己编的节点 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 ``` ![image-20210720211959001](3.ROS2构建工具之Colcon/imgs/image-20210720211959001.png) ## 5.本节学习指令 > 这个小鱼要特别说一下,因为ros2的build没有ros中的devel概念了,如果想达到devel目录那样的效果,就需要加这个参数。没有学过ros的请主动忽略这句话。 ### 5.1 只编译一个包 ``` colcon build --packages-select YOUR_PKG_NAME ``` ### 5.2 不编译测试单元 ``` colcon build --packages-select YOUR_PKG_NAME --cmake-args -DBUILD_TESTING=0 ``` ### 5.3 运行编译的包的测试 ``` colcon test ``` ### 5.4 允许通过更改src下的部分文件来改变install(重要) 每次调整 python 脚本时都不必重新build了 ``` colcon build --symlink-install ``` ## 6.总结 通过本节课的学习,相信你已经掌握如何编译ROS2的工程了,先别着急结束,还有一个小作业~ 参考资料: - colcon官方文档 [https://colcon.readthedocs.io/en/released/user/installation.html](https://colcon.readthedocs.io/en/released/user/installation.html) - ROS2官网文档 [https://docs.ros.org/en/humble/Tutorials/Colcon-Tutorial.html](https://docs.ros.org/en/foxy/Tutorials/Colcon-Tutorial.html) -------------- 技术交流&&问题求助: - **微信公众号及交流群:鱼香ROS** - **小鱼微信:AiIotRobot** - **QQ交流群:139707339** - 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划