网站大量收购闲置独家精品文档,联系QQ:2885784924

《鸿蒙机器人编程》课件——8-实践课-动手编译及运行第一个ROS程序.pptxVIP

《鸿蒙机器人编程》课件——8-实践课-动手编译及运行第一个ROS程序.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

实践课-

动手编译及运行第一个ROS程序

课程介绍课程内容:讲解Turtlesim功能包文件结构核心代码简单解读动手编译Turtlesim动手运行ROS节点,控制小乌龟运动目的:掌握功能包的编译与运行掌握rostopic和rosservice命令行工具的使用通过rostopic和rosservice工具了解topic和service的工作机理2?NXROBO2022

TurtleSim运行效果3?NXROBO2022

Turtlesim功能包文件结构功能包下主要有images、include、launch、msg、srv、src、tutorials活页夹及CMakeLists.txt和package.xml文件。Images--海龟图片,用于程序加载和显示Include--功能包头文件launch--启动的配置文件msg、srv--topic和service的数据类型定义文件src--海龟绘制的源代码文件tutorials--控制海龟运动的源代码文件4?NXROBO2022

Turtlesim功能包逻辑结构功能包共有四个node:turtlesim_node:用来绘制窗口及turtlesim,并通过topic和service提供了控制turtlesim的相关接口;teleop_turtle_key:利用turtlesim的相关接口用键盘控制turtlesim的运动;draw_square:利用相关接口控制turtlesim给出矩形轨迹;mimic:提供了复制海龟运动的接口。后三个node是控制turtlesim的三种方式示例,放在tutorials文件夹。5?NXROBO2022

TurtleApp类节点turtlesim_node的入口在turtlesim.cpp中通过QApplication的继承类TurtleApp实现QT程序的初始化,并完成了node的初始化;创建TurtleFrame对象,显示窗口;最后通过QApplication::exec()进入事件循环。node的实例化使用了boost的智能指针,因为在包含档turtle_frame.h中已经进行了对NodeHandle实例化,所以此处使用了reset(),以保证智能指针的正常自动销毁。使用智能指针保证了NodeHandle同一实例对象在TurtleFrame类中的正常使用。6?NXROBO2022

TurtleFrame类TurtleFrame继承自QFrame类,实现有框架的窗口部件其主要作用是窗口部件与事件管理、海龟图片加载显示提供了clear、reset、spawn、kill四个service用来提供海龟的生成与销毁等操作调用接口。7?NXROBO2022

TurtleFrame类——clear服务实现clearCallback通过调用clear函数,用预定的背景色重绘窗口。但并未对海龟图片作任何操作,也就是说只重置背景及清除海龟运动轨迹。8?NXROBO2022

TurtleFrame类——reset服务实现resetCallback先清空存放海龟对象的map,再重新生成海龟,最后调用clear函数。9?NXROBO2022

TurtleFrame类——spawn服务实现spawnCallback通过spawnTurtle函数以服务调用请求的位置、朝向及名字参数生成海龟。此处会对海龟命名重名给出出错提示。10?NXROBO2022

TurtleFrame类——kill服务实现killCallback就是删除指定名的海龟,实际是通过key清除存放海龟对象map的相应条目,调用update()实现重绘。11?NXROBO2022

TurtleFrame类——QT绘制事件QT绘制事件通过update()手动触发或窗口变动自动触发,然后通过重写的paintEvent虚函数槽实现绘制12?NXROBO2022

TurtleFrame类——ROS事件ROS事件通过QT的信号槽机制以16ms为周期进行用onupdate()函数槽实现13?NXROBO2022

实际上海龟的运动是通过海龟图片的平移与旋转实现的。具体代码在Turtle类中,共有一个订阅的TOPIC、两个发布的TOPIC及三个SERVICE。订阅的TOPIC为:cmd_velcmd_vel:订阅海龟控制的速度信息。发布的TOPIC为:pose、color_sensorpose:发布海龟的位置、朝向、及线速度和角速度color_sensor:发布海龟底层的颜色三个服务为:set_pen、teleport_relative、teleport_absoluteset_pen:为设

文档评论(0)

青柠职教 + 关注
实名认证
服务提供商

从业10年,专注职业教育专业建设,实训室建设等。

1亿VIP精品文档

相关文档