面向对象Python实现
Subscriber整合
1. 添加subscriber创建
| poseTopicName = "/turtle1/pose"
rospy.Subscriber(poseTopicName, Pose, self.poseCallback)
|
2. 添加订阅回调
| def poseCallback(self, msg):
print msg
|
3. 调试
与C++不同,调试结果为可以正常接收到订阅的消息。但是关于窗体关闭事件方面只能通过关闭QT界面来关闭进程,不同通过命令行来。
Python可以正常接收到订阅消息的原因,在于Python采用的SIP方式进行操作QT的界面UI的中间是一套异步策略。
但是为了更好的优化体验,我们也是可以和C++实现的代码逻辑想通的。
接管渲染:
| updateTimer = QTimer(self)
updateTimer.setInterval(16)
updateTimer.start()
updateTimer.timeout.connect(self.onUpdate)
|
渲染逻辑:
| def onUpdate(self):
self.update()
if rospy.is_shutdown():
self.close()
|
完整示例代码
MainWindow2.py
turtle_ctrl2.py