最新要闻
- 五金店卖什么卖得最好_五金店卖什么
- 天天新消息丨腾讯国漫手游《狐妖小红娘》宣布停运 6月16日关闭服务器
- 电动版帕萨特这模样?大众ID.7申报图亮相
- 视焦点讯!3599元起 铭凡推出NPB7迷你主机:i7-13700H、双雷电4
- 天天速读:丰田醒了 可睁开眼发现:世界已经变了!
- 南方的网友注意了 沙尘已跨过长江!北京影响已到末期
- 天天时讯:紫薯泥怎么做好吃-紫薯泥
- 【天天新视野】本周发布!徕卡M11 Monochrom详细规格曝光
- 旗舰功能全下放!华为nova 11 Ultra曝光:卫星通信、可变光圈都支持
- 焦点速看:米粉催雷军发小米13 Ultra:你敢发我就敢买
- 电脑里破解软件又少一款!Win11原生录屏免费平替了:新增快捷键
- 绝对忠诚?超八成iPhone用户丢机后秒换新款iPhone
- 为什么打不开空间_腾讯官方的解决方法
- 《终结者》T-1000成真!科学家研制出可固液转变机器人 形态科幻
- 当前观点:或命名为“高山” 魏牌全新插混MPV申报:红旗HQ9有话要说
- 印度版大G来啦!4排10座轴距超3米 马力只有90匹
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Turtlebot3仿真代码学习笔记
由于在学习ros的过程中,发现教程中介绍到的Turtlebot3具有较为完备的硬件设计,以及软件驱动功能包,十分适合我们项目在算法仿真上的工作.所以就此展开对turtlebot3的学习,将重点研究可能用到的机器人运动/LDS/Slam等几个部分.
(资料图片仅供参考)
涉及到的turtlebot3功能包的安装与测试,可参考我之前的学习笔记<相关软件和功能包的安装>,这里不再介绍
首先,通过ros学习教程介绍的仿真代码,我首先定位到以下可能相关的功能包:
- 第一部分. 构建仿真世界
$ export TURTLEBOT3_MODEL=waffle #构建空白的世界,只有地板和机器人模型$ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch #或运行这个,构建包含一个实验场地和一个机器人的世界$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
两条roslaunch命令运行的结果分别是:
- 第二部分. 使用键盘驱动机器人
$ export TURTLEBOT3_MODEL=waffle #通过wasdx控制前进,左转,停止,右转,后退$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
- 第三部分. 随机移动并避免撞墙
$ export TURTLEBOT3_MODEL=waffle$ roslaunch turtlebot3_gazebo turtlebot3_simulation.launch
1. turtlebot3_teleop包代码研读
这个包的代码路径为: catkin_ws/src/turtlebot3/turtlebot3_teleop当然也可以使用"roscd+包名"命令通过命令行进入到目录.
1.1 launch文件
首先,来看看turtlebot3_teleop_key.launch文件中的内容:
比较简单,这个 .launch 文件定义了一个名为"model"的变量,默认值为系统中的变量 TURTLEBOT3_MODEL ,这也就是为什么我们需要在程序运行之前输入"export TURTLEBOT3_MODEL=waffle"的原因,作用是指明使用的机器人型号,以显示出不同的机器人模型.
此外,还向master节点注册了一个参数,(键)名为"model",作用是方便在代码中区分不同型号机器人执行的逻辑,参数的值为先前定义的 model 变量的值
最后,向master节点注册了一个运行节点,指明运行的包名为"turtlebot3_teleop",实际运行节点的名称为"turtlebot3_teleop_key",运行文件名为"turtlebot3_teleop_keyboard",运行过程中的调试信息输出到屏幕上.
1.2 node节点运行文件(.py)
该文件在turtlebot3目录下的node目录中,代码使用python编写
1.2.1 包导入以及参数定义
由于代码部分比较长,这里就不粘帖使得篇幅过长了,对于不是很精深的代码,也不贴出了.读者可自行打开文件对照阅读
文件从"geometry_msg/msg"路径导入的"Twist.msg"文件,绝对路径为"/opt/ros/melodic/share/geometry_msg/msg"(我用的是melodic版本),文件内容也很简单
# This expresses velocity in free space broken into its linear and angular parts.Vector3 linearVector3 angular
可见,也就是定义了两个速度向量,分别代表线速度和角速度.
使用 "os.name=="nt"" 这个逻辑表达式,是用于判断代码运行的环境是linux下还是windows下,应该是为了处理不同操作系统环境下从键盘读取输入字母.
之后,定义了不同机器人型号对应的最大速度(角速度,线速度),以及机器人运动的最小单位
1.2.2 功能(辅助)函数
- getKey()函数的基本功能是获取键盘上输入的一个字符,如果是windows操作系统,直接调用getch()函数获取,如果为linux/os系统则使用输入流,读取第一个字符
- vels()输出当前的线速度和角速度数值
- makeSimpleProfile()根据当前速度以及预计达到速度,调整当前速度.即预计速度比当前速度大时,增加当前速度,比当前速度小时,则减小当前速度
- constrain()限制机器人的运行速度,使其速度不能超过最大角速度或线速度
- checkLinearLimitVelocity()调用constrain()函数,根据机器人型号,限制机器人角速度
- checkAngularLimitVelocity()调用constrain()函数,根据机器人型号,限制机器人线速度
1.2.3 程序运行主函数
这一部分首先根据操作系统类型,做必要的键盘输入字符获取准备工作(linux).然后想master节点注册本节点的名字为"turtlebot3_teleop",并注册一个Topic通信,名为"cmd_vel",使用的数据类型(对象为 Twist ).此外,还在参数服务器中获取了需要仿真的机器人型号通过循环,不断从键盘中读入字符,当检测到为"w","x","a","d","s"(或空格)时作出相对应的机器人速度改变操作,最后将改变后的速度赋值给 Twist.linear.x 或 Twist.angular.z 并发布出去,完成一次迭代.程序的异常处理程序是控制机器人停止移动
值得一提的是,程序通信中使用的 Twist 中的 Vector3 ,我们实际上只是设置了 线速度的x方向和 角速度的z方向,而其他方向的值均设置为0.这是因为ros中的坐标轴中,就线速度而言,x轴方向指向机器人的正前方,y轴方向指向机器人的正左侧,z轴方向指向机器人正上方,由于我们只需要机器人向正前方前进,靠旋转来控制机器人朝向,所以只需要用到x轴.机器人的旋转方向满足 "右手定则",即右手卷住的方向为正方向.由于我们只需要机器人在水平面上旋转(总不可能翻滚吧!),所以是为z轴(也就是拇指指向的方向)赋值.举个栗子,机器人要向左旋转速度为1.0,那么应该将1.0赋给Twist.angular.z,使其能够绕z轴正方向(机器人左侧)旋转
通过"rqt_grath"命令得到各节点间通信的关系图,说明我们键盘输入的控制信息通过 cmd_vel 话题(Topic)发给 gazebo 节点,由其进行机器人的控制,进一步了解电机如何驱动机器人运行可以查找了解
2. turtlebot3_simulation(随机避碰运动)部分代码研读
我们在运行这部分代码的时刻可以知道,该仿真的功能包是 "turtlebot3_gazebo" ,代码的 .launch 文件绝对路径为:
~/catkin_ws/src/turtlebot3_simulation/turtlebot3_gazebo/launch/turtlebot3_simulation.launch
2.1 launch文件
打开文件后, .launch文件代码为:
可见, turtlebot3_simulation.launch 文件定义了两个变量,名字分别为cmd_vel和name,默认的初始值分别为"/cmd_vel"和"turtlebot3".
然后定义了一个运行参数,参数键名为"cmd_vel_topic_name",值为"$(arg cmd_vel)",即为前面定义变量"cmd_vel"的值
最后,注册本运行节点信息,节点文件名为"$(arg name)_drive",如果前面的变量默认值没有改变,那么实际上这个位置的值为"turtlebot3_drive". 节点所在功能包为"turtlebot3_gazebo",运行时的名字为"turtlebot3_drive". 同时指定如果本节点运行结束了(或被kill了),将停止运行launch文件中的所有节点. 规定将输出信息显示在终端上.
关键词:
Turtlebot3仿真代码学习笔记
世界热点!.NET 个人博客系统
五金店卖什么卖得最好_五金店卖什么
天天新消息丨腾讯国漫手游《狐妖小红娘》宣布停运 6月16日关闭服务器
电动版帕萨特这模样?大众ID.7申报图亮相
视焦点讯!3599元起 铭凡推出NPB7迷你主机:i7-13700H、双雷电4
天天速读:丰田醒了 可睁开眼发现:世界已经变了!
南方的网友注意了 沙尘已跨过长江!北京影响已到末期
day07-OpenFeign-服务调用
看热讯:stm32 使用多串口通信调试总结
速讯:记录-css实现交融文字效果
环球最新:阿里云 - 连接不同VPC方案
天天时讯:紫薯泥怎么做好吃-紫薯泥
【天天新视野】本周发布!徕卡M11 Monochrom详细规格曝光
旗舰功能全下放!华为nova 11 Ultra曝光:卫星通信、可变光圈都支持
焦点速看:米粉催雷军发小米13 Ultra:你敢发我就敢买
电脑里破解软件又少一款!Win11原生录屏免费平替了:新增快捷键
绝对忠诚?超八成iPhone用户丢机后秒换新款iPhone
全球快讯:从spring boot泄露到接管云服务器平台
ThreadPoolExecutor源码学习
图文介绍 Windows 系统下打包上传 IOS APP 流程
【Visual Leak Detector】使用注意事项
一个TCP 连接可以发送多少个HTTP请求?
为什么打不开空间_腾讯官方的解决方法
《终结者》T-1000成真!科学家研制出可固液转变机器人 形态科幻
当前观点:或命名为“高山” 魏牌全新插混MPV申报:红旗HQ9有话要说
印度版大G来啦!4排10座轴距超3米 马力只有90匹
坚持元宇宙不动摇:Meta百万美元年薪招聘VR程序员
环球观热点:女子下班回工作消息获赔加班费引热议!调查称仅1成多人拒绝下班秒回工作
全球即时:卢拉发推预告:“我将启程前往中国”,期望加强巴中贸易伙伴关系
世界简讯:【一行代码秒上云】Serverless六步构建全栈网站
科创人·中建三局一公司尹奎:数字化变革能创造全新行业,其意义超越形式、范式创新
当前关注:CAD二次开发,安装程序中写注册表
滚动:低代码开发,是稳扎稳打还是饮鸩止渴?
快报:【金融街发布】人民银行:3月货币供应量M2同比增长12.7% 比上月回落0.2个百分点
能打比亚迪宋PLUS DM-i 哈弗枭龙MAX开订:用上Hi4电四驱
焦点关注:两大巨头“世纪大和解”!腾讯视频官方入驻抖音:昵称“鹅家”
天天日报丨13代标压高能轻薄本!华硕无畏15i 2023到手5699元:OLED好屏值得拥有
又来一份10年协议!微软与英国EE达成云游戏合作
焦点播报:《圣斗士星矢》真人版战斗预告:变身画面超燃!
温彬等:食品、能源价格双双下探,促内需政策仍须发力
精彩看点:【业务自动化平台】上海道宁与UiPath致力于让每个企业、每个人都能充分利用自动化带来的成就和优势
微服务保护--Sentinel
ASP.NET Post, FromBody 接参总是null 空值. Web api 前端传递是有值的,怎么回事?
【新华500】新华500指数(989001)11日微跌0.07%
快消息!7000mAh超大电池比肩充电宝!华为畅享60X官宣:实用体验才是王道
世界快资讯:女子看电视惊现3000多秒超长广告 直呼太离谱
环球今亮点!国内最新快递服务满意度出炉:顺丰、京东、邮政排前三 你经常用哪家?
简讯:大家不看电视了?海信:电视开机率低是个伪命题
环球快讯:别YY失控!深圳一辆特斯拉钣喷中心破窗而出 差点掉下来:官方回应
热议:希腊神话的英语典故
重试,让程序更健壮
aix系统如何查看网卡配置
模型训练与推理中为什么需要使用GPU?基本概念梳理
全球球精选!2023年最新iOS打包发布流程汇总
韩总统府称网传美监听韩政府文件部分系伪造
多地现沙尘暴!中央气象台首席预报员:沙尘天气无需根治
英特尔锐炫A750最新驱动游戏实测:进步巨大
刷新认知!男子站临海近乎垂直石壁上钓鱼:网友直呼请勿模仿
环球新动态:世界首个“九尾狐甲鱼”化石被发现:长相奇特怪异
全球第一批25个GPT模型开始自由生活
当前资讯!应用火山引擎 DataTester“避坑”,抖音实现用 A/B 实验快速试错
路由跳转及传参
每日消息!堆叠面积图的优点和缺点有哪些?
跟ChatGPT聊天、需求润色优化,禅道OpenAI 插件发布!
三星9082怎么恢复出厂设置?三星9082手机参数
索尼w570现在值多少钱?索尼w570参数
台式机怎么设置无线上网?台式机怎么调节屏幕亮度?
巧克力键盘是什么意思?巧克力键盘和机械键盘的区别是什么?
诺基亚n82上市价格是多少?诺基亚n82手机参数
每日时讯!鑫顺看市:4.11黄金守住1980关键位,多头或再次卷土重来
当前资讯![网络]应用层协议:HTTP / HTTPS
用ChatGPT问.NET的相关问题,.NET工程师的前景不错
每日热讯!男子被鱼刺卡喉硬吞饭团:结果扎穿食管
天天速看:力压宝马X5 理想L7交付首月狂卖8009台:稳居国内中大型SUV销量第一
世界热门:米其林中国回应顾客用餐后上吐下泻:非常重视消费者健康安全
焦点!紫光展锐首款车规级5G座舱芯片平台A7870公布:6nm加持、NPU算力媲美骁龙8155
全球热推荐:蓝牌要成历史?新款奔腾T90官图:全新车牌引遐想
世界新消息丨又萌又飒!池州一高校女生穿公主裙一“跑”走红
在寻找 LastPass 的更好替代品吗?
当前简讯:金融系统NTP时钟同步(网络校时服务器)架设工作详情
[网络]TCP的三次握手与四次挥手[转载]
每日焦点!Python程序笔记20230301
云图说|图解云消息服务KooMessage
环球微资讯!充电仅需18秒!中科大研发出新型水系锌离子电池
或为问界M9 赛力斯大型SUV专利图曝光:有点“震撼”
天天头条:车评人表扬华为问界:看不见的底盘件 大面积用铝合金材料
环球信息:林州“网红试胆石”出现裂缝仍有游客打卡 官方回应
天天速讯:299元 小米小爱音箱儿童版开卖:童声专项识别优化
世界银行上调2023年全球经济增长预期至2%
关于算法开源乱七八糟事
【报资讯】RDIF.vNext全新低代码快速开发框架平台发布
环球聚焦:基于pdfbox实现的pdf添加文字水印工具
【全球新要闻】老爸老妈浪漫史第五季(老爸老妈的浪漫史第五季结局是什么?)
爷青回!《灌篮高手》中国首映礼官宣:4月15日见
世界信息:快科技App 5.2.1新版发布:新增沉浸式阅读、排行榜一键分享长图
环球通讯!特斯拉下代电机不用稀土 国内专家:屁股决定脑袋 马斯克是迫不得已
今日聚焦!"全聚德连亏三年"登热搜:今年净亏损2.78亿元
时讯:iPhone 15 Pro相机凸起3.78毫米:约2枚1元硬币厚度
通讯!GGII:2022年中国锂电池回收处理废旧锂电池量41万吨,同比增37%