版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、每周工作报告 南开大学机器人与信息自动化研究所1ros - robot operating system: 现状与应用实例李宝全李宝全南开大学南开大学 :2014-7-3南开大学首届机器人学博士生论坛南开大学首届机器人学博士生论坛2 ros- robot operating system现状现状几个应用例程综合实例:体感远程控制3 应用火爆的ros ros repositories (50) map:4 应用火爆的ros robotics & automation magazine, ieee 该杂志上设立了专题讨论区:ros topics 下方图片是在最新一期中ros topics的论文5
2、应用火爆的ros 新加坡南洋理工大学(ntu)机器人相关实验室大家都在用,已经形成了全民一起上的局面 所见的应用设备: pioneer3at/dx kinect ar.drone turtlebot6 ros体系 main:由willow garage公式维护核心部分程序 universe:全球范围的代码,由其它个人/组织维护相关知识库(repository),即功能包(例如先锋机器人的rosaria,kinect的openni_tracker, 语言识别pocketsphinx)7 几点说明 虽然ros的名字为“机器人操作系统”,但不是真正的操作系统,只是说它可以提供类似于操作系统的一些服务
3、,比如底层通讯, 分布式控制。 对于机器人的相关功能,不使用ros也能实现. 但ros使得机器人软件搭建的工作更方便,效率更高。8 ros的程序的核心 节点 即可执行文件 由.cpp文件编译生成而来(指c+) 节点之间的通讯 节点间信息的发布与接收 publish subscribe9 节点 将整个工程(project)模块化,每个节点即为一个模块。 每个节点都可以单独维护,比如现在有n个节点已经在运行了,用户可以再编写第n+1个节点,然后编译,然后运行,即有n+1个节点共同运行。 每个节点有唯一的名字 节点之间可借助网络跨主机共同运行.10 节点之间的通讯 发布者publisher 订阅者s
4、ubscriber 话题: 发布者与订阅者之间的通讯方式 话题的名称: topic:发布者与订阅者之间数据传输“管道”的名字,为一字符串 消息: message: 传输数据的类型,例如int, char,自定义类型。11 ros- robot operating system现状几个应用例程几个应用例程综合实例:体感远程控制12 ros的几个例程 hello world 图像 先锋机器人p3at/p3dx kinectskeleton voice network通讯13 hello world程序 节点: 2个 节点talker (talker.cpp) : 包含一个发布者 节点listene
5、r (listener.cpp) : 包含一个接收者 节点间的通讯: topic(话题的名称):“chatter” message(传递的数据类型):std_msgs:string string为 ros自定义的数据类型 string中包含唯一变量为 std:string data14 hello world程序15 hello world程序16 hello world程序17 hello world程序18 ros的几个例程 hello world 图像图像 先锋机器人p3at/p3dx kinectskeleton voice network通讯19 ros的几个例程: 图像 图像的发布
6、: 对应ros中的publisher. 以如下三个图像源举例: kinect的rgb摄像头 笔记本内置摄像头 外接usb摄像头 图像的接收: 对应ros中的subscriber 图像的处理: 可以与opencv相结合 (opencv与ros均属于willow garage公司, 所以.) 用户可以在该步骤中进行任意的图像处理操作(“so you can do everything in this step”) 图像的显示: 与opencv相结合20 图像的发布: kinect的rgb摄像头 首先对kinect设备进行配置, 并进行初始化 由于kinect与ros相互支持, 因此配置过程非常简便
7、 初始化kinect的过程就是发布一些列topic的过程, 这些topic包括: /camera/rgb/image_color: 该话题即对应于我们需要的rgb图像数据 至此图像发布的任务完毕 若想把图像显示出来, 需要进行下一节“图像的接收与显示” /camera/rgb/image_raw: rgb图像的原始数据 /camera/grey : 这是灰度图像 /camera/depth: 这是场景深度图像21 图像的发布: kinect的rgb摄像头图图: rviz中显示出的中显示出的kinect发布的点云信息发布的点云信息22 图像的发布: 笔记本内置摄像头 对于笔记本内置usb摄像头的
8、图像获取, 要比kinect复杂. 这是由于ros对kinect的支持包括了图像topic的发布, 而对于计算机的内置/外置usb摄像头, 需要我们自己做些操作 下载usb_cam包: https:/ . 包含如下3个文件 /usb_cam.h /usb_cam.cpp: 由于是在ubuntu (12.04)系统下进行的, 因此里面用到了linux的v4l2视频驱动与服务 /usb_cam_node.cpp 摄像头的图像在此节点中发布23 图像的发布: 笔记本内置摄像头24 图像的发布: 外置usb摄像头 也需要利用包usb_cam 由于外接usb摄像头的设备名为video1,因此将设备名的语
9、句修改为 除此之外, 其它操作与上一节的内置摄像头图像发布一致25 图像的接收,处理与显示 ros的图像数据使用sensor_msgs/image的消息格式 cvbridge: 属于ros的库, 在vision_opencv(堆stack) /cv_bridge(包package) /image_geometry中. 用以转换sensor_msgs/image至cv:mat 该部分功能: 从相应topic中获得sensor_msgs:image图像信息(接收者),并将其转化为cv:mat的形式, 并显示图像。 当然, 该部分首先需要图像源来发布一个图像topic,例如上节的kinect, 内置
10、usb摄像头, 外接usb摄像头26 图像的接收,处理与显示27 图像的接收,处理与显示28 图像的接收,处理与显示 上页的image_converter节点对应于图像发布源为kinect, 若想要获得外置/内置摄像头的图像时, 将订阅者的topic改为 “/image_raw”即可. 改为 因此将该节点修改后重新编译并运行, 便可以继续获取另一个图像源的图像. 这也体现了ros的代码维护非常灵活.29 图像的接收,处理与显示30 ros的几个例程 hello world 图像 先锋机器人先锋机器人p3at/p3dx kinectskeleton voice network通讯31 先锋机器人
11、p3at/p3dx p3at/p3dx的配置 角速度和线速度控制量的发布 控制量发布的节点: 对应publisher 控制量的接收 控制量接收的节点: 对应subscriber 即控制机器人的运动32 p3at/p3dx的配置 由于p3at是串口通讯, 我的笔记本上仅有usb口, 因此首先需要配置usb转串口. 安装rosaria aria是activmedia公司为先锋机器人提供的驱动与服务 由于该公司也支持ros, 因此发布了rosaria版本33 角速度和线速度控制量的发布 话题名称/rosaria/cmd_vel“ 该话题名称要与下一节接收节点中的一致 消息类型为ros自定义的: ge
12、ometry_msgs:twist 在该twist数据结构中, 包括了角速度控制量与线速度控制量34 角速度和线速度控制量的发布35 控制量的接收 首先下载包rosaria: https:/ 该包中含有rosaria.cpp文件 将该文件编译为节点rosaria, 并运行该节点 节点rosaria的功能: 接收上节的twist数据结构(即订阅者), twist中含有角速度与线速度的数据. 将控制量发送给先锋机器人, 即让机器人做相应运动.36 控制量的接收37 ros的几个例程 hello world 图像 先锋机器人p3at/p3dx kinectskeleton(人体骨骼识别人体骨骼识别)
13、 voice network通讯38 kinectskeleton 由于用到了kinect的骨骼识别, 因此首先需要安装nite 之后下载包openni_tracker: https:/ openni_tracker节点将用户的骨骼位置发布(发布者) topic为 “/tf” message为tf2_msgs:tfmessage, 一个tfmessage的对象包括了一个关节的位置与姿态信息39 kinectskeleton40 kinectskeleton41 kinectskeleton图图: rviz显示出的发布的显示出的发布的tf的信息的信息42 ros的几个例程 hello world
14、 图像 先锋机器人p3at/p3dx kinectskeleton voice network通讯43 voice 语音识别 语言发布 综合: 声音的接收与发声44 voice: 语言识别 包pocketsphinx的安装与配置 pocketsphinx用以语言识别, 并发布(publish)识别结果string 识别结果的接收与显示 将pocketsphinx发布的string其获取(subscribe)后从屏幕上显示45 voice46 voice: 语言发布 包sound_play的安装与配置 利用程序来控制发声47 voice: 综合: 声音的接收与发声 利用pocketsphinx对
15、语言进行识别, 并以string的消息类型来发布 接收pocketsphinx发布的string 将string显示到屏幕上 发声: 将string朗读出来 当然也可以朗读其它语句, 即实现了人机之间的对话48 voice: 综合: 声音的接收与发声49 ros的几个例程 hello world 图像 先锋机器人p3at/p3dx kinectskeleton voice network通讯通讯50 network通讯(以两主机为例) ros的分布式特点: 对两主机进行简单配置后, 若有相同的topic, 则节点之间即可跨主机利用网络进行通讯. 因此网络通讯/控制变为十分简单. 实验场景: 取
16、名为”hal”的电脑上连接先锋机器人p3at, 并连接wifi 取名为”marvin”的电脑(我的笔记本)没有连接设备, 但与”hal”连接了同一个wifi 目标: 让”marvin”将先锋机器人的控制命令通过wifi发送给”hal”, 然后”hal”再把此命令发送给先锋机器人51 network通讯(以两主机为例)52 ros- robot operating system现状几个应用例程综合实例综合实例: :体感远程控制体感远程控制53 ros综合实例: 实验目标 通过网络, 远程控制机器人的运动 使用者在kinect前移动, 当距离kinect超过1米时, 让远方的机器人做前进运动; 当
17、距离kinect小于1米时, 让机器人后退; 并且机器人的运动速度与使用着距kinect 1米的误差成正比. 将上一章 “几个应用例程” 结合在了一起.54 ros综合实例: 实验场景 取名为”hal”的电脑上连接先锋机器人p3at, 并连接wifi 取名为”marvin”的电脑(我的笔记本)连接了kinect, 并与”hal”连接了同一个wifi55 ros综合实例:实现方法 通过kinect读取用户的骨骼位置(kinectskeleton) 根据用户的头部位置, 主机“marvin”来设计p3at的线速度量. 通过wifi将机器人的速度控制量传到主机“hal”上 “hal”将速度控制量发送到p3at上56 ros综合实例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长沙卫生职业学院《西方现代建筑思潮》2024-2025学年第二学期期末试卷
- 机关内部审计考核制度
- 湘南学院《城市公共交通系统运营与规划》2024-2025学年第二学期期末试卷
- 机构内部岗位管理制度
- 杭州采购内部控制制度
- 扬州大学《行政管理学概论》2024-2025学年第二学期期末试卷
- 民政机构内部控制制度
- 海关内部培训制度
- 煤矿内部保安管理制度
- 煤矿安全科内部考核制度
- 蔬菜配送安全培训课件
- 部队普通车辆装卸载课件
- 办公楼垃圾分类与回收管理执行手册
- Python程序设计 课件 第9章 NumPy与数值计算
- 2024年青海高等职业技术学院单招职业技能测试题库及答案解析
- 2023.12六级真题第1套
- 森林公园管理课件
- 《汽车机械基础》-绪论
- 乡村积分超市管理办法
- 军队招标投标管理办法
- 《变迁中的家园》教学课件-2025-2026学年苏少版初中美术八年级上册
评论
0/150
提交评论