ROS探索(5)——Python控制SmartCar

来源:互联网 发布:单点登录源码 编辑:程序博客网 时间:2024/05/21 23:34

在ROS探索(4)中对SmartCar仿真是使用指令来实现的,但是在实际应用中这是不太可能发生的事情。在实际应用中,Robot 一般是使用写好的程序进行控制的,即在控制Robot 一般是使用代码来实现的,因此我们可以使用Python代码来实现对SmartCar的控制。

创建项目包

catkin_create_pkg smartcar_teleop rospy geometry_msgs std_msgs roscpp
Robot的移动控制主要是通过 Twist 结构来实现的,因此想要用Python实现SmartCar的移动控制仿真,我们可以将 Twist 下的数据封装到一个节点再通过 Publisher 发布成一个Topic从而达到控制的效果。在 smartcar_teleop/scripts 下(src下也可以,文件夹名可以自定义,原因可以看看 CMakList 的实现)编写 Python 文件 teleop.py:
#!/usr/bin/env pythonimport roslib; roslib.load_manifest('smartcar_teleop')import rospyfrom geometry_msgs.msg import Twistfrom std_msgs.msg import Stringclass Teleop:    def __init__(self):        pub = rospy.Publisher('cmd_vel', Twist)        rospy.init_node('smartcar_teleop')        rate = rospy.Rate(rospy.get_param('~hz', 1))        self.cmd = None        cmd = Twist()        cmd.linear.x = 0.2        cmd.linear.y = 0        cmd.linear.z = 0        cmd.angular.z = 0        cmd.angular.z = 0        cmd.angular.z = 0.5        self.cmd = cmd        while not rospy.is_shutdown():            pub.publish(self.cmd)            rate.sleep()if __name__ == '__main__':Teleop()
为了能让 rosrun 可以执行 teleop.py,我们需要更改 teleop.py 的权限:

sudo chmod +x teleop.py
打开ROS探索(4)使用到的自定义机器人SmartCar,打开一个新的终端,执行
source catkin_ws/devel/setup.bashrosrun smartcar_teleop teleop.py 

效果如下:


参考:

http://blog.csdn.net/hcx25909/article/details/9004617

《ros by example vol 2 indigo》

0 0
原创粉丝点击