我正在为一个项目使用rospy,但是我并不完全理解如何获取消息。我让无人机每秒发送一条特定的消息,但当我试图获取消息时,程序就卡住了(从不打印"a")。我做错了什么?
while(continue):
ponto_atual = rospy.wait_for_message('/uav1/control_manager/position_cmd',PositionCommand)
print("a")
continuar = comparar(ponto_desejado, ponto_atual)发布于 2021-08-10 14:00:35
您应该通过subscription对象来处理接收关于一个主题的多条消息。wait_for_message的目的是抓取一条消息。
在rospy中,它很容易设置。例如,Bool主题的回调如下所示:rospy.Subscriber('/your_topic_name',Bool,callback_function)
现在,每次在/your_topic_name上发送消息时,都会调用函数callback_function。更完整的示例如下所示:
def callback_function(msg):
ponto_atual = msg.data
rospy.loginfo("I received a message!")
#Anything else you may want to do here
def run_loop():
rate = rospy.Rate(10.0) #Run at 10Hz
while not rospy.is_shutdown():
self.rate.sleep()
#Other periodic work you may need to do
if __name__ == '__main__':
rospy.init_node('my_node')
rospy.Subscriber('/your_topic_name',Bool,callback_function)
run_loop()https://stackoverflow.com/questions/68719879
复制相似问题