22.04Ubuntu---ROS2创建python节点

ops/2024/11/14 7:06:29/

创建工作空间

mkdir -p 02_ros_ws/src

然后cd到该目录

创建功能包

在这条命令里,tom就是你的功能包

ros2 pkg create tom --build-type ament_python --dependencies rclpy

可以看到tom功能包已经被创建成功了。

使用tree命令,得到如下文件结构

此时需要cd到tom目录下

在这个目录下创建你的节点

可以用touch命令,也可以在vscode里直接创建

创建tom_say.py

代码里,node_name="tom_say" 要看你的py文件名字,不能乱改。这不是节点名

node_tom_say才是你的节点名字,这个你可以改,但保证代码上下文一样。这里巨坑

import rclpy
from rclpy.node import Nodedef main(args=None):# init the client librclpy.init(args=args)# create node instancenode_tom_say = Node(node_name="tom_say")# get loggernode_tom_say.get_logger().info("Hello, Jerry. I am comming.")# spin the noderclpy.spin(node=node_tom_say)# shutdown the noderclpy.shutdown()

修改配置文件

打开配置文件,src/tom/setup.py

在 entry_points={'console_scripts': [],}中添加节点位置,修改后如下所示

from setuptools import setuppackage_name = 'tom'setup(name=package_name,version='0.0.0',packages=[package_name],data_files=[('share/ament_index/resource_index/packages',['resource/' + package_name]),('share/' + package_name, ['package.xml']),],install_requires=['setuptools'],zip_safe=True,maintainer='franklin',maintainer_email='franklin@todo.todo',description='TODO: Package description',license='TODO: License declaration',tests_require=['pytest'],entry_points={'console_scripts': ["node_tom_say=tom.tom_say:main"],},
)

这里的tom.tom_say的意思就是

tom目录下的tom_say.py的意思   (这里也是坑,别乱写!!!)

node_tom_say是你先前代码里自定义的节点名

回到工作空间

cd 02_ros_ws, 编译节点 colcon build ,编译后如下如所示

 source 更新一下

source install/setup.bash

查看功能包是否存在

ros2 pkg list | grep tom

运行节点

tom是你的功能包,node_tom_say是你在代码里写的节点名

ros2 run tom node_tom_say

这里的tom就是你的功能包,tom_say是你的py文件,但一定要加node_


http://www.ppmy.cn/ops/133061.html

相关文章

第 1 章 - Go语言简介

第 1 章 - Go语言简介 1.1 什么是Go语言 Go语言,又称 Golang,是一种静态类型的编译型语言,由 Google 公司的 Robert Griesemer、Rob Pike 和 Ken Thompson 于 2007 年开始设计,并在 2009 年正式对外发布。Go 语言的设计目标是提…

了解什么是数据库(简介)

什么是数据库? 数据库的定义 数据库是结构化信息或数据的有序集合,一般以电子形式存储在计算机系统中。通常由数据库管理系统 (DBMS) 来控制。在现实中,数据、DBMS 及关联应用一起被称为数据库系统,通常简称为数据库。 为了提高…

【vue】封装一个可随时暂停启动无需担心副作用的定时器

【vue】封装一个可随时暂停启动无需担心副作用的定时器 现成轮子:VueUse 库的 useIntervalFn 方法是什么?为什么要用它?怎么用? 分析源码 & 自己手写一个源码自己手写 现成轮子:VueUse 库的 useIntervalFn 方法 是…

C语言初阶必会的练习题(3)之位操作符(^ 、、>>等)的应用

C语言初阶必会的练习题(3) 放在最前面的1、不允许创建临时变量,交换两个整数的内容1.1、分析:见代码注释(a)方法 1(b)方法 2 1.2、结果展示方法 1 的 结果:方法 2 的 结果…

Kafka高频面试题详解(consumer端)

1、消费者组和分区数之间的关系是怎样的? 消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费 消费者组之间互不影响,所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者 2、kafka如何知…

el-table 纵向垂直表头处理

项目中表格展示会遇到需要纵向垂直表头情况,下面,我们基于el-table组件来实现这种表格。 以下是这次需要用到的数据表格,已知左侧违章名称是固定的,而月份是不固定的,在后端返回数据格式已确定的情况下,需…

在心理学研究中实施移动眼动追踪:实用指南

摘要 眼动追踪提供了直接的、时间和空间敏感的眼球注视测量。它能够捕捉从婴儿期到成年期的视觉注意模式。然而,常用的基于屏幕的眼动追踪(SET)方法在描绘个体如何在“现实生活”中与环境互动时的信息处理上存在局限性。移动眼动追踪(MET)记录参与者在主动行为背景…

kafka的安装与使用

目录 一、 简介 1.1、概念 1.2、核心成员 1.3、特点 二、安装 2.1、zookeeper 2.2、上传解压重命名 2.3、修改配置文件 2.4、启动 2.5、一个启停脚本 三、使用 3.1、主题命令行操作 3.1.1查看操作主题命令参数 3.1.2创建 first topic 3.1.3查看当前服务器中的所有…