本页介绍了teleop_twist_keyboard的用法, 包含如何使用键盘控制机器运动的功能。
本页内容
运行环境准备
软件平台
- Ubuntu 16.04 AMD
- ROS Kinetic
硬件平台
(以下任选其一)
- Slamware 套装 (基于Slamware导航方案的用户机器人系统)
- Apollo/Ares/Athena等底盘系统
例程下载
编译运行
1.下载Slamware ROS SDK以及ROS例程。
2.将ROS sdk中的src文件夹放入一个空的工作目录,如:catkin_ws。将ROS 例程中的slamware_ros_sample文件夹也放入src文件夹下。使用catkin工具初始化工作空间。
cd catkin_ws/src catkin_init_workspace
3.编译
cd .. catkin_make
4.配置工作空间系统环境
source devel/setup.bash
5.启动slamware_ros_sdk_server_node节点
roslaunch slamware_ros_sdk slamware_ros_sdk_server_node.launch ip_address:=10.6.128.141 //如果是AP模式,ip_address是192.168.11.1
6.重新打开一个终端窗口,重复第4步,并启动teleop_twist_keyboard_node节点。按照提示,按W/S/A/D键,控制机器向前/后/左/右方向运动
roslaunch slamware_ros_sample teleop_twist_keyboard.launch
代码描述
定义键盘按钮
moveBindings = { 'w':(1.0, 0.0), 's':(-1.0, 0.0), 'a':(0.0, 1.0), 'd':(0.0, -1.0) }
定义pub,制定消息topic以及消息类型
pub = rospy.Publisher('/cmd_vel', Twist, queue_size = 1)
初始化节点
rospy.init_node('teleop_twist_keyboard_node')
按键时,将速度赋给linearX和angularZ
key = getKey() print(key) if key in moveBindings.keys(): linearX = moveBindings[key][0] angularZ = moveBindings[key][1] else: linearX = 0.0 angularZ = 0.0 if (key == '\x03'): break
根据topic所需类型发布消息
twist = Twist() twist.linear.x = linearX twist.angular.z = angularZ pub.publish(twist)