本文主要是介绍ROS知识4:Colcon,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ROS知识4:Colcon
- 本文目的
- 前置知识点
- 运行环境
- 文章参考指路
- Colcon软件简介
- Colcon安装和使用教程
- 1. 安装Colcon
- 2. 使用Colcon编译一个python代码编写的节点,然后运行
- 2.1 创建工作空间和功能包
- 2.1.1创建功能包
- 2.1.2创建节点文件
- 2.2 Colcon编译功能包
- 2.3 运行功能包的功能
- Colcon常用命令
- 参考资料
本文目的
简单的介绍一下Colcon是什么,在ROS2如何使用Colcon创建一个自己的节点
前置知识点
- linux基本操作
- ROS2基础知识
- python基本语法
运行环境
远程Linux服务器ubuntu18.04,ROS2版本为Eloquent (Ubuntu Bionic)
但是笔者大概看过,其他版本也应该是一样的可以参考。
文章参考指路
鱼香ROS
Colcon软件简介
参考鱼香ROS的3.2 ROS2构建工具—Colcon
colcon其实是一个功能包构建工具,用来编译ROS2的代码。
Colcon安装和使用教程
aim:使用Colcon编译一个python代码编写的节点,然后运行
1. 安装Colcon
sudo apt-get install python3-colcon-common-extensions
2. 使用Colcon编译一个python代码编写的节点,然后运行
总体思路
创建一个功能包Mgroup,里面有一个节点node1,接下来编写代码编译这个功能包然后运行其中的node1节点
2.1 创建工作空间和功能包
mkdir -p Colcon/src
2.1.1创建功能包
ros2 pkg create Mgroup --build-type ament_python --dependencies rclpy
- 命令解析
参数 意义 –build-type ament_python 指定编译器是python –dependencies rclpy 添加依赖rclpy - 关于rclpy是什么?
rclpy 是 ROS 2 中用于 Python 的一个软件包,用于实现 ROS 2 中的通信和节点功能。ROS(机器人操作系统)是一个用于开发机器人软件的开源框架,ROS 2 是其第二代版本。rclpy 提供了一个 ROS 2 的客户端库,允许你使用 Python 编写 ROS 2 节点,并通过发布-订阅、服务和参数服务器等 ROS 通信机制进行通信。
2.1.2创建节点文件
-
使用vscode打开文件夹,创建node1节点并且编写下述代码
import rclpy from rclpy.node import Nodedef main(args=None):rclpy.init(args=args) #初始化rclpynode = Node("node1") #创建节点node.get_logger().info("I'm node1 !\n") #输出一个信息级别的日志消息,可以在控制台看到rclpy.spin(node) #进入事件循环,先不管有什么用rclpy.shutdown() #关闭rclpyif __name__ == '__main__':main()
-
修改setup.py文件
这一步是为了在运行功能包对应的功能的时候可以找得到对应的文件去运行。
控制台脚本的命令entry_points={'console_scripts': [#控制台脚本"node1 = Mgroup.node1:main"#前面的node1是命令,后面的是对应需要运行的文件和函数名称,有多个需要逗号隔开],},
2.2 Colcon编译功能包
在工作文件夹下运行Colcon build命令
colcon build
运行成功后文件夹变成这样
2.3 运行功能包的功能
直接运行会显示找不到包
#指令
ros2 run Mgroup node1
#输出
Package 'Mgroup' not found
需要先进入到本地的环境,才能找得到这个包,所以需要先运行本地的启动脚本
#指令
source install/setup.bash
ros2 run Mgroup node1
#输出
[INFO] [node1]: I'm node1 !
至此代码运行成功!
Colcon常用命令
指令 | 含义 |
---|---|
colcon build --packages-select YOUR_PKG_NAME | 编译单个包 |
colcon build --packages-select YOUR_PKG_NAME --cmake-args -DBUILD_TESTING=0 | 不编译测试单元(没理解) |
colcon test | 测试(没理解) |
colcon build --symlink-install | 允许通过改变src下部分文件夹来改变install |
-
重点说一下–symlink-install
参考chatgptThis option is used to create symbolic links to the installed files rather than copying them. It can be useful for development purposes, as it allows changes in the source code to immediately affect the installed files without the need for reinstalling.
翻译:此选项用于创建已安装文件的符号链接,而不是复制它们。它对于开发目的很有用,因为它允许源代码中的更改立即影响已安装的文件,而无需重新安装。个人理解:
-
使用这个参数的时候,ROS的命令将创建一个符号链接指向src的代码,这个时候运行功能就相当于是在运行src下的python代码,好处就是改代码之后不需要再次build了,在文件中可以看到build文件夹底下的文件和src底下的文件node1.py,修改其中一个的时候,另一个也会自动产生变化,有点像快捷方式。
-
不使用这个参数的时候,build的时候将创建一个src代码的副本,这个副本和src代码无链接,ROS的命令将指向这个副本而不是src里面的代码源文件,修改了src里面的源代码并不影响命令本身的行为,除非重新build一遍,下图中node1所在文件夹变成了build/lib/Mgroup,是和原src/node1.py没有关系的新文件
-
参考资料
鱼香ROS的3.2 ROS2构建工具—Colcon
chatgpt
这篇关于ROS知识4:Colcon的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!