python前进代码_Turbot与python教程-实现前进
python前进代码_Turbot与python教程-实现前进
Turbot与python教程-实现前进
说明:
介绍如何实现通过python控制turbot前进
代码:
实现代码:
A very basic TurtleBot script that moves TurtleBot forward indefinitely. Press CTRL + C to stop. To run:
On TurtleBot:
roslaunch turtlebot_bringup minimal.launch
On work station:
python goForward.py
import rospy
from geometry_msgs.msg import Twist
class GoForward():
def init(self):
initiliaze
rospy.init_node(‘GoForward’, anonymous=False)
tell user how to stop TurtleBot
rospy.loginfo(“To stop TurtleBot CTRL + C”)
What function to call when you ctrl + c
rospy.on_shutdown(self.shutdown)
Create a publisher which can “talk” to TurtleBot and tell it to move
Tip: You may need to change cmd_vel_mux/input/navi to /cmd_vel if you’re not using TurtleBot2
self.cmd_vel = rospy.Publisher(‘cmd_vel_mux/input/navi’, Twist, queue_size=10)
#TurtleBot will stop if we don’t keep telling it to move. How often should we tell it to move? 10 HZ
r = rospy.Rate(10);
Twist is a datatype for velocity
move_cmd = Twist()
let’s go forward at 0.2 m/s
move_cmd.linear.x = 0.2
let’s turn at 0 radians/s
move_cmd.angular.z = 0
as long as you haven’t ctrl + c keeping doing…
while not rospy.is_shutdown():
publish the velocity
self.cmd_vel.publish(move_cmd)
wait for 0.1 seconds (10 HZ) and publish again
r.sleep()
def shutdown(self):
stop turtlebot
rospy.loginfo(“Stop TurtleBot”)
a default Twist has linear.x of 0 and angular.z of 0. So it’ll stop TurtleBot
self.cmd_vel.publish(Twist())
sleep just makes sure TurtleBot receives the stop command prior to shutting down the script
rospy.sleep(1)
if name == ‘main’:
try:
GoForward()
except:
rospy.loginfo(“GoForward node terminated.”)
move_cmd.linear.x = 0.2 实现每秒0.2m/s速度前进
演示:
主机,新终端,启动底盘
$ roslaunch turbot_bringup minimal.launch
从机,新终端,启动脚本
$ rosrun turbot_code goForward.py
以0.2m/s速度前进