基于Python的ROS机器人循环进退运动代码故障排查及解决方案咨询
问题2:程序终止后机器人持续运动
这个现象的原因很简单:ROS的/cmd_vel话题默认不会在发布者退出时自动发送停止指令。大多数机器人的运动控制器会一直执行最后收到的有效指令,直到收到新的指令。你的测试代码里,最后发布的指令是linear.x=0.4(前进),所以程序终止后,机器人会继续执行这个指令,直到收到linear.x=0的停止命令。
解决方法就是给程序加上关机回调函数,在你按下Ctrl+C终止程序时,自动发布停止指令——就像上面修复后的代码里的rospy.on_shutdown(lambda: stop_robot(pub))这一行做的那样。这样不管你怎么终止程序,机器人都会收到停止指令,不会一直动下去。
内容的提问来源于stack exchange,提问作者AmirulJ
相关产品推荐
相关产品推荐

