22.04Ubuntu---ROS2创建python节点

news/2024/11/17 4:45:13/

创建工作空间

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/news/1547632.html

相关文章

【leetcode练习·二叉树】用「分解问题」思维解题 II

本文参考labuladong算法笔记[【强化练习】用「分解问题」思维解题 II | labuladong 的算法笔记] 技巧一 类似于判断镜像二叉树、翻转二叉树的问题,一般也可以用分解问题的思路,无非就是把整棵树的问题(原问题)分解成子树之间的问…

CSS回顾-基础知识详解

一、引言 在前端开发领域,CSS 曾是构建网页视觉效果的关键,与 HTML、JavaScript 一起打造精彩的网络世界。但随着组件库的大量涌现,我们亲手书写 CSS 样式的情况越来越少,CSS 基础知识也逐渐被我们遗忘。 现在,这种遗…

商品规格递归拼接

创建实体类 Data public class Shopping {private String name;private List<String> children; } 测试 public static void main(String[] args) {ArrayList<Shopping> shoppings new ArrayList<>();Shopping shopping new Shopping();shopping.setName…

PL/SQL执行.sql文件

1.编写.sql文件&#xff0c;创建update.sql文件&#xff0c;文件如下&#xff1a; set feedback offset define off--更新表中所有人的年龄update a set age18;prompt Done. 2.打开plsql选择命令窗口&#xff0c;即选择File->New->Command Window&#xff1b; 打开后的…

windows下git和TortoiseGit(小乌龟)和putty安装配置对github进行操作

本次安装版本如下&#xff1a; 1&#xff0c;先下载安装tortoiseGit一路下载安装即可一直到在桌面上右键可以看到有git的选项出现为止&#xff0c;注意在第一步的时候选择使用putty还是ssh建立网络连接决定后面的步骤&#xff0c;本次以选择putty为例。 2&#xff0c;安装git&a…

[GXYCTF2019]BabyUpload--详细解析

信息搜集 进入界面&#xff0c;直接就是文件上传界面&#xff0c;结合题目&#xff0c;得知考察的是文件上传漏洞。 思路 文件上传漏洞&#xff0c;第一步先看有没有前端校验&#xff1a; 没有前端校验。 我们写一个一句话木马文件&#xff1a; //shell.php GIF89a <…

python解析网页上的json数据落地到EXCEL

安装必要的库 import requests import pandas as pd import os import sys import io import urllib3 import json测试数据 网页上的数据结构如下 {"success": true,"code": "CIFM_0000","encode": null,"message": &quo…

【Linux】————信号

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;Linux 创作时间 &#xff1a;2024年11月12日 信号和信号量 首先说明这两者之间没有任何关系 信号&#xff1a;信号是在软件层次对中断机制的一种模拟&#xff0c;是一种异步通知机制&#xff0c;用于通知进程发生…