ROS2 创建python包

2023-05-16

1、创建python包

ros2 pkg create --build-type ament_python 'demo' --dependencies rclpy

以上指令为创建一个名为demo的python功能包。

2、创建可执行文件

demo/demo路径下新建demo.py文件。

3、引用可执行文件

setup.py文件的最下放的entry_points属性,引入可执行文件:

entry_points={
	'console_scripts': [
		'demo = demo.demo:main'   #change
	],
},

4、引用msgs

一般来说,在主文件demo.py的开始引用即可,比如

from nav_msgs.msg import Odometry

如果报错,没有找到该msgs,则到package.xml文件中,添加

<exec_depend>nav_msgs</exec_depend> #change
<test_depend>ament_copyright</test_depend>

5、sub/pub topic主程序

5.1 sub topic
import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class DemoSub(Node):
	def __init__(self):
	super().__init__('sub_node')
	self.subscription = self.create_subscription(String, 'topic', self.listenerCB, 10)
	
	def listenerCB(self, msg):
		self.get_logger().info('I heard: "%s"' % msg.data)	

def main(args=None):
	rclpy.init(args=args)
	demo_sub = DemoSub()
	rclpy.spin(demo_sub)
	demo_sub.destroy_node()
	rclpy.shutdown()

if __name__ == '__main__':
	main()
5.2 pub topic
class DemoPub(Node):
	def __init__(self):
		super().__init__('pub_node')
		self.publisher_ = self.create_publisher(String, 'topic', 10)
		timer_period = 0.5 # seconds
		self.timer = self.create_timer(timer_period, self.timerLoop)
		self.i = 0
		
	def timerLoop(self):
		msg = String()
		msg.data = 'Hello World: %d' % self.i
		self.publisher_.publish(msg)
		self.get_logger().info('Publishing: "%s"' % msg.data)
		self.i += 1

def main(args=None):
	rclpy.init(args=args)
	demo_pub = DemoPub()
	rclpy.spin(demo_pub)
	demo_pub.destroy_node()
	rclpy.shutdown()

if __name__ == '__main__':
	main()

6、tips

有的时候,python中修改了一个数值,重新编译后,可能编译器没有发现修改的地方,有可能不执行修改后的值。所以,为了保险起见,如果比较小的改动,把install和build中相应包的文件删除后再编译,确保编译器一定是按修改后的代码来编译的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS2 创建python包 的相关文章

随机推荐

  • 通过Xshell操作Jetson Nx

    1 Jetson Nx Nx留有Uart2 口 xff0c 便于使用xshell等进行操作 串口有三根线 链接后使用 2 XShell 软件 2 1 XShell软件介绍 XShell 软件是一个Windows上运行的终端模拟器 xff0c
  • Nx C++程序使用spdlog库进行日志存储

    1 spdlog简介 spdlog是一个开源的日志库 xff0c 在github上有 代码见这里 xff0c 文档这里 C 43 43 语言的 xff0c 支持Linux windows等系统 csdn上也有许多介绍 xff0c 这里列举两
  • C++下的Boost库

    1 介绍 xff08 引子网络 xff09 Boost库是为C 43 43 语言标准库提供扩展的一些C 43 43 程序库的总称 xff0c 由Boost社区组织开发 维护 Boost库可以与C 43 43 标准库完美共同工作 xff0c
  • Opencv之边界跟踪

    问题描述 一般是将二值化后的图像进行边界的提取 需要说明的是这个提取不是简单的找到边界 xff0c 而是按照顺序的找出来 即边界上的点是按照邻接关系依次给出 相关算法 xff08 1 xff09 这里解释 xff1a https blog
  • OpenCV之滤波

    图像滤波 xff0c 指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制 xff0c 是图像预处理中不可缺少的操作 xff0c 其处理效果的好坏将直接影响后续图像处理和分析的准确性 这里有个概述 xff0c 很好的 xff1a Ope
  • C++文件读写

    这个不错 xff1a C 43 43 文件读写详解 xff08 ofstream ifstream fstream xff09 C 43 43 文件读写详解 xff08 ofstream ifstream fstream xff09 c 4
  • python及其工具

    目录 1 conda xff1a 包管理器2 Anoconda xff1a 开源的包 环境管理器3 labelme4 tensorflow5 cuda和cudnn6 使用yml文件创建环境并安装文件6 1 yml文件由来6 2 如何获得ym
  • C++之文件操作移动、复制、重命名

    1 C 43 43 笔记之CopyFile和MoveFile的使用 2 删除和重命名 include lt fstream gt include lt windows h gt 与opencv的命名空间CV有冲突 xff0c 不能在一个文件
  • (转)C#数字转固定长度的字符串

    转 C 数字转固定长度的字符串
  • 进程监视工具

    Process Monitor 搜索能下到 xff0c 记下 xff0c 以后用 Process Monitor分析某个应用行为 Process Monitor 系统进程监视器 介绍教程 Using Process Monitor 帮助文档
  • UML建模工具Enterprise Architect(EA) -- 安装及简单使用

    目录 一 什么是EA xff1f 二 安装EA 三 为什么要学会用EA 四 创建EA工程 五 创建类视图 xff0c 构建类和接口 六 选中模型目录 xff0c 自动检出Java代码 七 构建内部类 八 趁热打铁 xff0c 构建数据表视图
  • SVN目录结构与分支等

    TortoiseSVN打分支 合并分支 切换分支 SVN创建分支 合并分支 切换分支
  • WPF上下标

    这里有个介绍的文章 xff1a 定义显示的上标和下标 里面介绍了三种方法 我之前有的是这个方法 xff1a Typography Variants 61 Superscript xff0c 如下所示 xff1a lt TextBlock g
  • [WPF] HamburgerMenu

    有两个库支持的 xff1a Metro App库中的 VS自己的控件 xff1a https docs microsoft com zh cn windows communitytoolkit archive hamburgermenu
  • 面积误差三种计算表达的比较

    引自 xff1a 面积误差三种计算表达的比较 有三种理论 xff0c 最基本的经典的 xff0c 引用一个吧 xff1a 网上有个题目 xff0c 求桌面面积的测量结果 桌面为矩形 用米尺测量 xff0c 长L为100 0 cm xff0c
  • 【转】WPF:Canvas中元素的定位

    概述 xff1a Canvas中的元素的大小和位置都是相对于Canvas容器的 xff0c 他的左上角为原点 xff0c 长度也是相对于他的 WPF xff1a Canvas中元素的定位 https blog csdn net chz cs
  • 【转】C#中计时

    一般可以用Environment TickCount xff0c 但是25天后会翻转 有很多 xff0c 见下面两个转的 C 中精确计时的一点收获 https www cnblogs com jintianhu archive 2010 0
  • 利用python分析微信聊天记录

    文章目录 前言一 任务分析二 工具三 步骤1 数据获取获取DB计算密码导出数据库 2 数据清洗 xff08 具体方法以后补充 xff09 3 数据分析 前言 昨天跟女朋友讨论谁给对方发的消息比较多 xff0c 两人各执一词 xff0c 事实
  • C++学习之模板

    文章目录 xff1a 一 模板 二 函数模板 三 类模板 一 模板 模板 也称泛型编程 泛型编程 xff1a 编写与类型无关的通用代码 xff0c 是代码复用的一种手段 模板是泛型编程的基础 在这之前我们可以利用C 43 43 的函数重载来
  • ROS2 创建python包

    1 创建python包 ros2 pkg create build type ament python span class token string 39 demo 39 span dependencies rclpy 以上指令为创建一个