ROS笔记九(基于Python、Kinetic):gazebo中通过键盘输入控制turtlebot机器人移动和转向

ROS实验---自己编写发布者节点,发布速度信息控制机器人 ROS实验---自己编写发布者节点,发布速度信息控制机器人 ROS发布者节点的实现和机器人仿真控制。 阅读详情

前言:

Twist消息能描述所有的3D运动,在控制差分驱动的平面运动机器人时,只需要使用其中的两个参数:线性速度(前进/后退)和绕竖直轴的角速度。所以只需要简单地发送线速度(米每秒)和角速度(弧度每秒)命令。这里需要两个程序:一个程序用来监听键盘地敲击事件然后通过ROS消息发布出去,另一个订阅这个ROS消息并输出一个Twist消息,从而实现键盘输入控制机器人地自由移动。

1.键盘驱动:

使用Python的termios和tty库将终端设置成原始模式并捕获键盘敲击事件,然后将事件以std_msgs/string的消息形式发布。

#!/usr/bin/env python

import sys, select, tty, termios
import rospy
from std_msgs.msg import String

if __name__ == '__main__':
  #发布一个‘keys’消息,消息类型String,缓冲为1
  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)

运行效果:

2.运动生成器:

使用w、x、a、d和s是机器人前进、后退、左转、右转和停止。

#!/usr/bin
TurtleBot ROS建图实战:从TF坐标系到slam_gmapping调参 SLAM(同步定位与地图构建)是机器人自主导航的基础能力,其核心在于多传感器数据融合、坐标变换(TF)一致性与概率地图更新机制。在ROS生态中,TurtleBot作为经典教学平台,天然承载了2D激光SLAM的完整技术链路:以轮式里程计提供运动先验,激光雷达采集环境观测,通过slam_gmapping实现栅格地图构建。该过程深度依赖TF树闭环、topic消息时序对齐及节点参数物理意义理解,尤其在真实硬件约束下(如Atom CPU算力、URG-04LX测距精度、USB供电稳定性),参数调优不再抽象,而是与轮胎摩 阅读详情

相关推荐

ROS学习总结2-实时监听键盘输入(python)

在使用ROS开发移动机器人时,发现teleop_twist_keyboard这个包很好用,可以通过监听键盘输入来控制机器人的移动,具有很好的实时性。这个包用一个程序实现了'监听键盘输入'和'键盘输入转twist消息'两个部分的内容,实际使用中,可能第一部分的使用需求更大一些,因此根据github上的源码提取了其中'监听键盘输入'的部分。 #!/usr/bin/env python import...

NiYintang的博客 6882

ROS中实现Python和C++键盘按键监听事件

通过注册回调函数,我们可以方便地获取键盘按键的信息,并进行相应的处理。在ROS(机器人操作系统)中,我们经常需要实现键盘按键的监听事件,以便与机器人进行交互或者控制。Python和C++是ROS中常用的编程语言,下面将分别介绍如何在ROS中使用Python和C++实现键盘按键的监听事件。在该函数中,首先初始化了ROS节点,并打印出键盘监听节点已启动的信息。,当键盘按键被按下时,该回调函数将被调用,并打印出按下的按键名称。函数来注册回调函数,以监听键盘按键的按下事件。函数,用于获取键盘按键的ASCII码。

loop_code966的博客 680

python实时检测键盘输入函数的示例

今天小编就为大家分享一篇python实时检测键盘输入函数的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

DAC8568 Controller

DAC8568 ControllerDAC8568 简介串行接口三级目录 DAC8568 简介 PIN Description Name Description LDAC‾\overline{LDAC}LDAC load DACs SYNC‾\overline{SYNC}SYNC 低电平有效,电平触发控制, 该输入为输入数据的帧同步信号. 当SYNC为低,使能DAC内输入移位寄存器,并在随后的所有时钟沿采样数据。 在第32个时钟之后,DAC更新输出。 若不到32个时钟SYNC被置高(即

u010170039的博客 5132

AWR1642+DCA1000EVM 不使用mmWave Studio软件采集原始ADC数据 Timeout问题汇总

DCA1000 EVM Timeout问题汇总

Jesy_Hsu的博客 1476

异步bus交互(一)— 两级DFF同步器

异步bus交互(一)— 两级DFF同步器 跨时钟域处理 & 亚稳态处理 1.问题产生 现在的芯片(比如SOC,片上系统)集成度和复杂度越来越高,通常一颗芯片上会有许多不同的信号工作在不同的时钟频率下。比如SOC芯片中的CPU通常会工作在一个频率上,总线信号(比如DRAM BUS)会工作在另一个时钟频率下,而普通的信号又会工作在另外的时钟频率下。这3个不同时钟频率下工作的信号往往需要相互沟通和传递信号。 不同时钟域下的信号传递就涉及到跨时钟域信号处理,因为相互之间的频率、相位不一样,如果不做处理或者

qq_44816673的博客 5121

C# ArcGIS Engine二次开发——实现“加载shp文件”

private void AddShpDataToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog OpFileDialog=new OpenFileDialog();//OpenFileDialog:打开文件对话框 OpFileDialog.Title="添加矢量数据"; OpFileDialog.Filter="(*.shp)|*.shp";//filter:过滤器;"(*.shp)|*.shp"

weixin_42191203的博客 5254

图像做旧算法原理及代码解释

该图像做旧算法主要通过一系列的图像处理操作来模拟旧照片的效果。整体流程包括:首先对输入图像进行颜色调整,降低饱和度并增加黄色调以营造出旧照片的色彩风格;接着添加高斯噪声来模拟旧照片可能存在的颗粒感;最后通过在图像上随机绘制线条来模拟旧照片的划痕和瑕疵。综上所述,该图像做旧算法通过对颜色的调整(包括饱和度降低、色相偏移)、添加高斯噪声以及模拟划痕和瑕疵等一系列操作,从多个方面模拟了旧照片的特征。

m0_44975814的博客 901

SAP FICO资产明细表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO资产明细表开发说明书(包括源代码,测试样例及FS)

我好像病了的博客 1472

开关电源和线性电源Multisim电路仿真实验汇总——硬件工程师笔记

本文系统介绍了稳压电源的基础知识与应用实验。首先阐述了稳压电源的定义与类型,包括线性稳压电源(如LM7805/7905)和开关稳压电源(降压/升压/升降压式)的工作原理、参数特点及优劣势。随后详细讲解了各类稳压电源的实验设计,如线性稳压电源的电路实现、开关稳压电源的PWM控制方法等。最后汇总了硬件工程师相关的笔试面试资源,涵盖器件知识、电路仿真、企业真题等内容。全文结合理论分析与Multisim仿真,为电子工程学习者提供了稳压电源的实用技术参考。

XU157303764的博客 1640

配置适合Gurobi的机器硬件环境需要考虑的因素

介绍了在为gurobi选择合适的硬件环境时,需要考虑三个方面的因素;

Linshaodan520的博客 1064

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: ROS笔记八(基于Python、Kinetic):gazebo初探——实现turtlebot移动并避开障碍
下一篇: ROS笔记十(基于Python、Kinetic):rviz基础——快速配置并渲染点云和摄像机图像数据
进击的香皂
博客等级 码龄8年 34粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值