ROS2:编译python节点

本文介绍了如何在VSCode中使用Python实现面向对象(OOP)和面向过程(POP)编程,通过实例讲解了如何创建和运行机器人节点,包括导入库、创建Node类、初始化、日志信息、以及使用colcon编译和运行节点的过程。
摘要由CSDN通过智能技术生成

编写python节点

提前需知

OOP是面向对象
POP是面向过程

大家可以去搜索一下,我感觉我讲不清楚(卑微)

准备阶段

准备阶段就是之前的文章写的那些内容,工作空间和功能包是已经创建好的,接下来就是进入vscode的编写阶段了,在这之前,我们先来验证一下前面的内容你是否学完了吧!

各位的tree树是不是跟我的一样呢?我印象中tree好像是要下载的,如果你的报错了,就去百度下载一下吧!对了,vscode也要自己安装调试好,这些都是我上学期搞好的,没有记录。不过,学习还是要有一些痛苦的嘛,自己努力了哦!

在终端中输入:code .

.代表当前层路径,…代表上一层路径,这样就直接进入vscode了!

正式开始

python文件书写

POP

接下来,在我们之前创建的robot_a的功能包里面开始编写我们的节点代码,先创建一个python文件,我们的代码是在里面写的,我这里创建的是pop_move.py(先实现移动的功能哦~)

1.先要导入我们需要的库,rclpy(客户端python的依赖库)和Node(从那个客户端里面的节点导入一个节点类)

import rclpy
from rclpy.node import Node

这个Node是一个类哦!学python的应该都懂吧!

2.再创建一个main函数,叫其他的应该也没什么问题:

def main(args=None):

我解释一下args是参数的意思,这里不需要传入参数,所以写None就可以

3.初始化客户端:

rclpy.init(args=args)

init应该很熟悉吧!初始化,将参数传入

4.创建节点:

move_pop_node=Node(‘pop_move’)

这里是创建一个Node类,move_pop_node是我们通过库里面的类创建的一个我们自己的节点类,而这个类需要我们传入一个参数表示这个节点的名字,所以这里我们创建了一个名为pop_move的move_pop_node节点

5.为了证明我的节点启动了,在这里添加一句话,节点启动就会提示你:

move_pop_node.get_logger().info(‘移动中’)

这是从节点中获取它的日志,然后输入一句话,‘移动中’。log不知道大家熟不熟悉,反正我最近在搞yolo的时候报错了,查到了这个日志,日志的后缀是log,当然,我还是不熟悉。

6.回旋你的节点:

rclpy.spin(move_pop_node)

大概是为了不让节点开启之后一下子就过去吧?(猜测)

7.关闭节点:

rclpy.shutdown()

完整代码如下:

import rclpy
from rclpy.node import Node

def main(args=None):
rclpy.init(args=args)
move_pop_node=Node(‘pop_move’)
move_pop_node.get_logger().info(‘移动中’)
rclpy.spin(move_pop_node)
rclpy.shutdown()

记得ctrl+s保存!!

OOP

前面一样,只是要创建自己的类:

class WriterNode(Node):
def init(self, name): #初始化名字
super().init(name) #将名字传入父类初始化
self.get_logger().info(‘移动中’)

再直接用自己创建的子类创建节点:

move_oop_node=WriterNode(‘oop_move’)

完整代码:

import rclpy
from rclpy.node import Node

class WriterNode(Node):
def init(self, name):
super().init(name)
self.get_logger().info(‘移动中’)

def main(args=None):
rclpy.init(args=args)
move_oop_node=WriterNode(‘oop_move’)
rclpy.spin(move_oop_node)
rclpy.shutdown()

告诉电脑节点在哪里

我们的节点就写完了,接下来,就是告诉电脑,你写的节点在哪里,进入setup.py文件,这里就记录了很多连接文件位置,在最后的’console_scripts’的[]里面写上你的节点位置。

‘[node ]=.<python文件>:<函数>’

在这里插入图片描述

解读一下就是节点在功能包下的文件的函数里面。

记得ctrl+s保存!!

编译代码(前面发生了修改,这里图片可能对应不上,但都是这么编译的)

用我们的colcon编译,过程跟之前一样,只是一定要注意要在工作空间下编译,这样生成的三个文件才跟src在一个目录下面。

然后,我们可以试着运行一下节点

最后再分一个终端,查看一下这个节点的信息

补充

如果你使用了什么包,需要在xml文件里面添加
在这里插入图片描述

结束!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值