话不多说,已经实现的视频先摆上。
1 控制舵机程序,很简单。思路就是 接收话题消息,收到消息后把消息写到串口中即可。优必选的舵机是接收串口消息动作的。这里边留意这个函数 struct.pack 很有意思,可以理解为把结构体序列化。用python确实简单很多,很多东西都有现成的。
import rospy
import serial
import struct
from python_ros.msg import Steering
def callback_fun(msg):
# rospy.loginfo(rospy.get_caller_id(), "%d",msg.ID)
data=struct.pack('>HBBHHBB',msg.head,msg.ID,msg.cmd,msg.parameter1,msg.parameter2,msg.check,msg.end)
ser.write(data)
# 回调函数 收到的参数.data是通信的数据 默认通过这样的 def callback(data) 取出data.data数据
def listener():
rospy.init_node('steeringlistener', anonymous=False)
rospy.Subscriber("steeringctl", Steering, callback