在ubuntu20.04系统下,实现ros2 与pyqt5的联合

该博客介绍了如何在Python的PyQT5界面中与ROS2进行集成,实现启动ROS2节点、关闭节点、定时输出文本等功能。作者详细分享了通过不断尝试和摸索,成功将ROS2的节点操作与PyQT5 GUI结合的经验,并提供了launch.py、li4.py、wang2.py等关键代码示例。

最近在负责项目中pyqt界面的制作,但网上关于ros2与pyqt5的中文资料很少,基本都是ros1 ,qt的博客和文章,通过不断的碰壁+摸索,终于实现了以下功能:

1. qt界面中启动节点

2. qt界面通过获取pid进程名关闭节点

3. qt界面通过定时器输出文本

重新写了一个简单的例子,代码如下:

launch.py

from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
    action_1 = Node(
    			package='village_li',
            	 executable='li4_node',
            	 name='li4_node',
               )
    return LaunchDescription([
        action_1
    ])

li4.py:

import rclpy  #ros2 接口库
from rclpy.node import Node #ros2 节点类
from std_msgs.msg import String  #字符串消息类型


class PublisherNode(Node):
	def __init__(self, name):
		super().__init__(name)   # 父类初始化
		self.pub = self.create_publisher(String, "cha", 10) #创建发布者对象(消息类型,话题名(密码),长度)
		self.i = 0
		self.timer = self.create_timer(0.5, self.timer_callback)
		
	def timer_callback(self):
		msg = String()        #创建消息对象
		msg.data = '%d' %(self.i) #实例化消息对象
		self.pub.publish(msg) #发布信息
		self.get_logger().info('Publishing: "%s"' % msg.data)  #输出日志
		self.i +=1
def main(args=None):
	rclpy.init(args=args)  # 初始化python接口函数
	node = PublisherNode("li4") #创建发布节点
	rclpy.spin(node)
	node.destroy_node()
	rclpy.shutdown()

 wang2.py:

<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值