ROS知识4:Colcon

本文目的

简单的介绍一下Colcon是什么,在ROS2如何使用Colcon创建一个自己的节点

前置知识点

  1. linux基本操作
  2. ROS2基础知识
  3. 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
cd Colcon
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创建节点文件
  1. 使用vscode打开文件夹,创建node1节点并且编写下述代码
    在这里插入图片描述

    import rclpy
    from rclpy.node import Node
    
    def main(args=None):
        rclpy.init(args=args) 	#初始化rclpy
        node = Node("node1")  	#创建节点
        node.get_logger().info("I'm node1 !\n") #输出一个信息级别的日志消息,可以在控制台看到
        rclpy.spin(node) 						#进入事件循环,先不管有什么用
        rclpy.shutdown() 						#关闭rclpy
    
    if __name__ == '__main__':
        main()
    
  2. 修改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
    参考chatgpt

    This 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.
    翻译:此选项用于创建已安装文件的符号链接,而不是复制它们。它对于开发目的很有用,因为它允许源代码中的更改立即影响已安装的文件,而无需重新安装。

    个人理解

    1. 使用这个参数的时候,ROS的命令将创建一个符号链接指向src的代码,这个时候运行功能就相当于是在运行src下的python代码,好处就是改代码之后不需要再次build了,在文件中可以看到build文件夹底下的文件和src底下的文件node1.py,修改其中一个的时候,另一个也会自动产生变化,有点像快捷方式。
      在这里插入图片描述

    2. 不使用这个参数的时候,build的时候将创建一个src代码的副本,这个副本和src代码无链接,ROS的命令将指向这个副本而不是src里面的代码源文件,修改了src里面的源代码并不影响命令本身的行为,除非重新build一遍,下图中node1所在文件夹变成了build/lib/Mgroup,是和原src/node1.py没有关系的新文件
      在这里插入图片描述

参考资料

鱼香ROS的3.2 ROS2构建工具—Colcon
chatgpt

  • 16
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值