前文中记录了随机移动机器人的开发过程,本文内容为Turtlebot3 Gazebo仿真环境下Teleop-bot 键盘操控移动机器人,主要包含以下几个部分:
1、键盘驱动(按键驱动发布keys话题)
2、运动生成器(订阅keys话题发布cmd_vel话题)
3、速度斜坡曲线
4、参数服务器
6、rviz 机器人、传感器和算法 3D可视化系统使用
1、键盘驱动(按键驱动发布keys话题)
代码及注释如下:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import select
import tty
import termios
import rospy
from std_msgs.msg import String
key_pub=rospy.Publisher('keys',String,queue_size=1)
rospy.init_node('keyboard_driver')
rate=rospy.Rate(100)
# 保存原来属性
old_attr=termios.tcgetattr(sys.stdin)
# 设置为单字符响应模式
tty.setcbreak(sys.stdin.fileno())
print "Publishing keystrokes. Press Ctrl+C to exit..."
while not rospy.is_shutdown():
if select.select([sys.stdin],[],[],0)[0]==[sys.stdin]:
# 发布按键
key_pub.publish(sys.stdin.read(1))
rate.sleep()
#恢复属性
termios.tcsetattr(sys.stdin,termios.TCSADRAIN,old_attr)
可以通过rostopic echo命令查看keys 话题发布的消息:
wsc@wsc-pc:~/wanderbot_ws$ rostopic echo keys
data: "a"
---
data: "a"
---
data: "a"
---
data: "z"
---
data: "s"
2、运动生成器(订阅keys话题发布cmd_vel话题)
运动生成器代码及注释如下:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import rospy
from std_msgs.msg import String
from geometry_msgs.msg import Twist
# 定义按键定义
key_mapping={
'w':[0,1],
'x':[0,-1],
'a':[-1,0],
'd':[1,0],