Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

本页介绍了teleop_twist_keyboard的用法, 包含如何使用键盘控制机器运动的功能。


本页内容

Table of Contents


运行环境准备

  • 软件平台

    • Ubuntu 16.04 AMDX86
    • ROS Kinetic
  • 硬件平台

          (以下任选其一)

      • Slamware 套装 (基于Slamware导航方案的用户机器人系统)
      • Apollo/Ares/Athena等底盘系统

例程下载

ROS-例程下载


编译运行

1.下载Slamware ROS SDK以及ROS例程。

2.将ROS sdk中的src文件夹放入一个空的工作目录,如:catkin_ws。将ROS 例程中的slamware_ros_sample文件夹也放入src文件夹下。使用catkin工具初始化工作空间。

Code Block
cd catkin_ws/src
catkin_init_workspace

3.编译

Code Block
cd ..
catkin_make

4.配置工作空间系统环境

Code Block
source devel/setup.bash

5.启动slamware_ros_sdk_server_node节点

Code Block
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键,控制机器向前/后/左/右方向运动

Code Block
roslaunch slamware_ros_sample teleop_twist_keyboard.launch



代码描述

Code Block
languagepy
firstline1
title定义键盘按钮
moveBindings = {
    'w':(1.0, 0.0),
    's':(-1.0, 0.0),
    'a':(0.0, 1.0),
    'd':(0.0, -1.0)
}
Code Block
languagepy
title定义pub,制定消息topic以及消息类型
pub = rospy.Publisher('/cmd_vel', Twist, queue_size = 1)
Code Block
languagepy
title初始化节点
rospy.init_node('teleop_twist_keyboard_node')
Code Block
languagepy
title按键时,将速度赋给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
Code Block
languagepy
title根据topic所需类型发布消息
twist = Twist()
twist.linear.x = linearX
twist.angular.z = angularZ
pub.publish(twist)