ROS开发笔记(5)——基于 python 开发 Turtlebot3 Gazebo仿真环境下键盘操控移动机器人(Teleop-bot )

前文中记录了随机移动机器人的开发过程,本文内容为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], 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值