《鸿蒙机器人编程》3-实践课-动手编译及运行第一个ROS程序-实训指南_第1页
《鸿蒙机器人编程》3-实践课-动手编译及运行第一个ROS程序-实训指南_第2页
《鸿蒙机器人编程》3-实践课-动手编译及运行第一个ROS程序-实训指南_第3页
《鸿蒙机器人编程》3-实践课-动手编译及运行第一个ROS程序-实训指南_第4页
《鸿蒙机器人编程》3-实践课-动手编译及运行第一个ROS程序-实训指南_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实践课-动手编译及运行第一个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_velcmd_vel:订阅海龟控制的速度信息发布的TOPIC为:pose、color_sensorpose:发布海龟的位置、朝向、及线速度和角速度color_sensor:发布海龟底层的颜色三个服务为:set_pen、teleport_relative、teleport_absoluteset_pen:为设置画笔颜色及宽度的服务接口teleport_relative:以相对位置控制海龟运动teleport_absolute:以绝对位置控制海龟运动turtle对象创建中,同时以生成的海龟名为参数对NodeHandle进行了实例化,所以上面提到的发布的TOPIC及提供的SERVICE都是有海龟名这个命名空间的。二.创建及编译工作空间$mkdir-pcatkin_ws/src在终端上,利用cd命令进入工作空间,然后用catkin_make编译。$cd~/catkin_ws

$catkin_make或$cd~/catkin_ws$catkin_make-DCATKIN_WHITELIST_PACKAGES=“turtlesim”1.将项目源代码中的turtlesim功能包复制到工作空间的src目录下2.编译turtlesim功能包$cd~/catkin_ws

$catkin_make3.新建终端,运行roscore$roscore4.动手运行ROS节点,控制小乌龟运动运行小乌龟节点$sourcedevel/setup.bash$rosrunturtlesimturtlesim_node查看发布的TOPIC及其数据和提供的服务,rostopic和rosservice工具$rostopiclist让海龟作圆周运动(可使用rqt工具):$rostopicpub-r10/turtle1/cmd_velgeometry_msgs/Twist'{linear:{x:0.2,y:0,z:0},angular:{x:0,y:0,z:0.3}}'生成新的海龟(可使用rqt工具):$roservicecallspawn330myturtle启动键盘控制:$rosrunturtlesimturtle_teleop_key5.查看launch文件,运行roslaunch启动launch文件:$roslau

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论