ROS知识4:Colcon

2023-12-24 10:04
文章标签 知识 ros colcon

本文主要是介绍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创建一个自己的节点

前置知识点

  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
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 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()
    
  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

这篇关于ROS知识4:Colcon的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/531421

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

ROS - C++实现RosBag包回放/提取

文章目录 1. 回放原理2. 回放/提取 多个话题3. 回放/提取数据包,并实时发布 1. 回放原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv,

dr 航迹推算 知识介绍

DR(Dead Reckoning)航迹推算是一种在航海、航空、车辆导航等领域中广泛使用的技术,用于估算物体的位置。DR航迹推算主要通过已知的初始位置和运动参数(如速度、方向)来预测物体的当前位置。以下是 DR 航迹推算的详细知识介绍: 1. 基本概念 Dead Reckoning(DR): 定义:通过利用已知的当前位置、速度、方向和时间间隔,计算物体在下一时刻的位置。应用:用于导航和定位,

ROS - C++实现RosBag包录制

文章目录 1. 录制原理2. 录制多个话题3. 订阅ROS消息,实时录制 1. 录制原理 #include <ros/ros.h>#include <rosbag/bag.h>#include <std_msgs/String.h>int main(int argc, char** argv){// 初始化ROS节点ros::init(argc, argv, "reco

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本

hector_quadrotor编译总结 | ubuntu 14.04 ros-indigo版本 基于Ubuntu 14.04 LTS系统所用ROS版本为 Indigo hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 备注:两种安装方式可选:install the binary packages | install the source files