- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
ROS星火计划 从0到1搭建ROS环境 NXROBOExBot
PAGE8
实践课-动手编译及运行第一个ROS程序
课程内容:
本节将对Turtlesim功能包进行简单解读,了解功能包结构,创建及编译工作空间,了解launch文件作用及roslaunch命令使用。
教学目标:
了解Turtlesim功能包结构
掌握工作空间运行机制
掌握launch文件使用
一.功能包解析
1.Turtlesim功能包结构
Turtlesim功能包下主要有images、include、launch、msg、srv、src、tutorials活页夹及CMakeLists.txt和package.xml文件。
Images--海龟图片,用于程序加载和显示
Include--功能包头文件
launch--启动的配置文件
msg、srv--topic和service的数据类型定义文件
src--海龟绘制的源代码文件
tutorials--控制海龟运动的源代码文件
功能包共有四个node:
turtlesim_node:用来绘制窗口及turtlesim,并通过topic和service提供了控制turtlesim的相关接口;
teleop_turtle_key:利用turtlesim的相关接口用键盘控制turtlesim的运动;
draw_square:利用相关接口控制turtlesim给出矩形轨迹;
mimic:提供了复制海龟运动的接口。
后三个node是控制turtlesim的三种方式示例,放在tutorials文件夹。
2.核心代码简单解读
①TurtleApp类
节点turtlesim_node的入口在turtlesim.cpp中,通过QApplication的继承类TurtleApp实现QT程序的初始化,并完成了node的初始化;创建TurtleFrame对象,显示窗口;最后通过QApplication::exec()进入事件循环。
node的实例化使用了boost的智能指针,因为在包含档turtle_frame.h中已经进行了对NodeHandle实例化,所以此处使用了reset(),以保证智能指针的正常自动销毁。使用智能指针保证了NodeHandle同一实例对象在TurtleFrame类中的正常使用。
具体代码如下:
②TurtleFrame类
TurtleFrame继承自QFrame类,实现有框架的窗口部件。其主要作用是窗口部件与事件管理、海龟图片加载显示。它提供了clear、reset、spawn、kill四个service用来提供海龟的生成与销毁等操作调用接口。
clearCallback通过调用clear函数,用预定的背景色重绘窗口。但并未对海龟图片作任何操作,也就是说只重置背景及清除海龟运动轨迹。实现如下:
resetCallback先清空存放海龟对象的map,再重新生成海龟,最后调用clear函数。实现如下:
spawnCallback通过spawnTurtle函数以服务调用请求的位置、朝向及名字参数生成海龟。此处会对海龟命名重名给出出错提示。实现如下:
killCallback就是删除指定名的海龟,实际是通过key清除存放海龟对象map的相应条目,调用update()实现重绘。实现如下:
QT绘制事件及ROS事件
QT绘制事件通过update()手动触发或窗口变动自动触发,然后通过重写的paintEvent虚函数槽实现绘制。实现如下:
ROS事件通过QT的信号槽机制以16ms为周期进行,用onupdate()函数槽实现。
③Turtle类
实际上海龟的运动是通过海龟图片的平移与旋转实现的。具体代码在Turtle类中,共有一个订阅的TOPIC、两个发布的TOPIC及三个SERVICE。
订阅的TOPIC为:cmd_vel
cmd_vel:订阅海龟控制的速度信息
发布的TOPIC为:pose、color_sensor
pose:发布海龟的位置、朝向、及线速度和角速度
color_sensor:发布海龟底层的颜色
三个服务为:set_pen、teleport_relative、teleport_absolute
set_pen:为设置画笔颜色及宽度的服务接口
teleport_relative:以相对位置控制海龟运动
teleport_absolute:以绝对位置控制海龟运动
turtle对象创建中,同时以生成的海龟名为参数对NodeHandle进行了实例化,所以上面提到的发布的TOPIC及提供的SERVICE都是有海龟名这个命名空间的。
二.创建及编译工作空间
$mkdir-pcatkin_ws/src
在终端上,利用cd命令进入工作空间,然后用ca
您可能关注的文档
- 《公路技术状况评定》课件——3.5 路面结构强度检测.pptx
- 《公路技术状况评定》课件——1.4沿线设施破损类别与识别.pptx
- 《公路技术状况评定》课件——3.6 路基、桥隧构造物与沿线设施技术状况检测与调查.pptx
- 《国际物流与货运代理》课件——1.1 货运代理的角色与责任.pptx
- 《国际物流与货运代理》课件——2.12国际海运进口业务流程.pptx
- 《鸿蒙机器人编程》1-ROS起源及特色 --教案.docx
- 《鸿蒙机器人编程》1-实践课 - 从0到1搭建ROS环境--实训指南.docx
- 《鸿蒙机器人编程》2-ROS通信与工作机制--教案.docx
- 《鸿蒙机器人编程》2-实践课 - 运行第一个ROS程序--实训指南.docx
- 《鸿蒙机器人编程》3-创建工作空间--教案.docx
最近下载
- 工学一体化课程《小型网络安装与调试》任务2教学单元1教学单元活动方案.docx VIP
- 医疗器械经营质量管理制度及工作程序.docx VIP
- 商业银行综合柜台业务课件.ppt
- 杜邦POM 500P NC010-英文-环保报告(rohs)sgs.pdf
- 关于矿山工程及勘探开发支出资本化与费用化账务处理的操作指引(试行)—定稿.pdf
- 部编版初中语文知识树思维导图知识点.pdf VIP
- 项目四认识智能停车场中的数据处理——体验数据处理的方法和工具教学设计2023—2024学年沪科版(2019)高中信息技术必修1.docx
- 四年级上册数学提升爬坡题-青岛版(五四制)含解析.pdf VIP
- DB5117T 121-2024磷石膏流态固化土应用技术规范.pdf
- 巴林左旗病死畜禽无害化处理项目环评(2021年新版环评)环境影响报告表.pdf VIP
文档评论(0)