最近在负责项目中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:
<

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

被折叠的 条评论
为什么被折叠?



