版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
ROS简介与基础Contents01.引言02.初识ROS04.服务通信与开发03.ROS基础与通信01引言AI引领新革命:AI技术的注入,为机器人行业带来前所未有的发展机遇,机器人与AI携手,将如互联网般再次革新我们的生活,引领全新科技革命。机器人时代来临:自20世纪70年代起,计算机、传感器与电子技术飞跃,机器人技术步入黄金期,从工业迈向家庭、医疗、教育、救援、军事,领域广泛。机器人技术革新ROS操作系统介绍工具与库函数:ROS提供丰富工具和库函数,支持代码获取、编译、编写及跨机运行,旨在促进机器人软件的开发与复用。ROS定义:开源元操作系统,专为机器人设计,集成硬件抽象、底层控制、函数实现、消息传递及包管理,提供全面基础服务。节点框架:ROS采用分布式节点框架,节点封装于程序包中,支持分享与发布。此设计促进工程协作与独立开发,同时ROS工具可整合所有工程。联合系统:类似于代码储存库的联合系统,支持工程的协作及发布。这个设计可以使一个工程的开发和实现从文件系统到用户接口完全独立决策。ROS软件架构详解02初识ROSROS历史与特点ROS起源与发展:自2000年斯坦福大学STAIR项目起,ROS历经多年发展,成为机器人研究开源协作框架,推动机器人技术跨领域革新。分布式网络架构:采用TCP/IP通信,实现模块间松耦合连接,支持话题异步流、服务同步流等多种通信,便于多机器人协同工作。多语言支持:设计为语言弱相关框架,使用简洁定义语言跨语言交互,支持Python、C++、Java等多语言编程,促进代码复用与模块化设计。精简集成与复用:模块化设计提升软件复用性,统一消息接口简化移植。集成OpenCV、PCL等开源库,加速机器人应用开发与功能创新。组件化工具包:集成3D可视化rviz、消息查看工具及物理仿真环境等组件,为机器人开发者提供一站式开发平台,提升开发效率与仿真测试能力。免费并且开源:BSD许可赋能,自由修改发布,促进代码共享与商业化应用。全球开发者维护,代码库持续增长,加速机器人生态繁荣与技术创新。ROS主要支持Ubuntu,也适用于OSX、Android等。本书选ROSMelodicMorenia,Ubuntu16.04LTS为长期支持版,稳定可靠。系统要求与选择为确保软件源最新,需启用restricted、universe、multiverse仓库。可通过Ubuntu软件中心检查并调整设置。配置Ubuntu软件仓库需将ROS官方或国内镜像源地址加入sources.list.d/ros-latest.list,便于后续安装时正确下载ROS相关软件。添加sources.listROS安装与配置通过curl命令下载ROS签名密钥并安装,确保软件包的完整性和来源可靠性,为后续安装操作提供安全基础。设置密钥为终端会话启用ROS软件包,需将setup.bash(或setup.zsh)命令的输出追加至对应shell的配置文件中。环境变量配置通过apt-get更新包索引后,可选择安装ROS桌面完整版、桌面版、基础版或单个软件包,以满足不同开发需求。安装软件包ROS安装与配置安装rosinstall、wstool和build-essential等工具,以便于管理和构建自己的ROS工作区,支持多包下载与编译。执行rosdep初始化与更新操作,确保在编译源码时自动安装系统依赖,同时满足ROS核心功能组件的运行需求。初始化rosdep配置开发依赖ROS安装与配置架构简介ROS架构分三层,OS层依托Linux(含Ubuntu、macOS等),中间层主打TCPROS/UDPROS通信与Nodelet进程内通信优化,应用层通过Master管理节点。计算图通过节点、话题、服务及节点管理器构建端对端拓扑结构,实现分布式计算模块的高效连接与协同工作,特别适用于复杂动态的机器人系统开发。开源社区依托发行版管理软件源、Wiki记录文档、邮件列表促进交流、Answers解答疑问及博客发布资讯,构建全方位资源平台,加速ROS软件的知识共享与开发创新。文件系统采用分层文件夹结构组织功能包、元功能包及消息、服务定义,支持自定义扩展,实现代码、配置与数据的清晰分离,便于管理与复用。ROS架构解析话提和服务区别话题异步广播适用于数据实时更新少逻辑处理;服务同步调用适合数据量少但逻辑处理强的场景,两者互补满足ROS通信需求。参数管理机制利用ROSMaster管理全局参数,节点间通过RPC查询和更新参数值,实现数据共享和配置灵活性,无需直接交互。服务通信机制简化双向通信流程,节点注册后直接TCP连接交换数据,ROSMaster匹配并提供地址信息辅助建立连接。话提通信机制通过RPC实现节点间信息注册与匹配,TCP建立网络连接后进行数据传输,ROSMaster作为核心协调节点间的通信过程。ROS通信机制ROS开发基础小乌龟例程:通过turtlesim功能包学习控制小乌龟移动,掌握ROS节点、话题和服务的基本用法,以及参数调整。工作空间和功能包:介绍ROS工作空间结构及src、build、devel、install目录作用,并步骤展示如何创建功能包和编译工作空间。自定义软件包:深入剖析catkin_create_pkg生成的package.xml和CMakeLists.txt,展示如何自定义这些文件以满足特定需求。深入工作空间:解释ROS工作空间Overlaying机制,展示如何通过多个工作空间管理功能包,包括查看环境变量和包路径。创建自定义的ROS消息和服务:介绍msg和srv文件定义及存放规则,展示如何生成跨语言源代码,并使用rosmsg和rossrv命令查看消息和服务的定义。话题通信开发:分析小乌龟例程的节点关系和话题通信,使用rostopic和rqt_graph工具调试话题,实现数据发送与订阅,优化节点间的信息交互。03ROS基础与通信小乌龟例程乌龟控制流程:安装turtlesim包后,启动ROSMaster,运行turtlesim仿真器,再启动键盘控制节点,即可通过方向键控制小乌龟在仿真界面移动,享受编程乐趣。turtlesim入门包:turtlesim功能包是ROS提供的入门级功能包,通过键盘控制小乌龟移动,初学者可借此了解ROS基础功能及辅助工具使用,奠定开发基础。工作空间概览:ROS功能包源代码存放于工作空间,其采用Catkin编译系统,包含src、build、devel、install四目录,分别用于存储源码、编译缓存、可执行文件及安装文件。创建与编译:创建工作空间并初始化,包含运行catkin_make编译及设置环境变量;同时创建功能包,依赖特定包如std_msgs、roscpp等,确保路径唯一并编译以集成开发。创建工作空间和功能包自定义package.xml生成后需编辑description描述,添加maintainer维护者信息,选定license许可证,并列出所有依赖项,确保软件包正确编译与运行。消息生成定义新msg后,需更新package.xml并修改CMakeLists.txt以包含消息生成依赖;使用rosmsgshow验证消息识别,确保ROS正确处理新定义的消息格式。服务复制与适配创建新服务时,利用roscp复制现有srv定义,确保消息依赖正确处理。更新package.xml和CMakeLists.txt以支持服务代码生成,并通过rossrvshow验证服务识别。依赖管理在package.xml中声明依赖项,包括buildtool_depend、build_depend、run_depend等,并确保在CMakeLists.txt中正确设置这些依赖项以生成消息。自定义软件包工作空间覆盖机制01ROS通过Overlaying机制管理多个工作空间,按环境变量中路径顺序查找功能包,优先匹配最前端路径,实现功能包覆盖,简化开发并支持多版本共存。路径管理与环境变量02查看ROS环境变量时,关键在于理解ROS_PACKAGE_PATH如何影响功能包查找顺序。通过设置或修改此变量,可灵活控制ROS在运行时加载特定版本的功能包。覆盖风险与策略03工作空间覆盖虽便利,但需注意版本兼容性和依赖关系变化可能引发的风险。合理组织工作空间,避免不必要的复杂性和潜在的冲突,是高效使用ROS的关键。深入工作空间在ROS中,msg文件定义了消息格式,用于不同语言间的消息传递;srv文件则定义服务,包含请求和响应部分,两者均支持跨语言服务调用。Msg与Srv定义定义新msg后,需编辑package.xml并修改CMakeLists.txt以包含消息生成依赖;使用rosmsg工具生成源代码,确保消息类型在ROS中跨语言使用。消息生成与转换利用roscp复制现有srv定义至新包,确保消息依赖正确处理。更新package.xml和CMakeLists.txt以支持服务代码生成,并通过rossrv工具验证服务识别。服务复制与适配修改CMakeLists.txt以包含新msg和srv生成,并重新编译软件包;使用rosmsg和rossrv工具分别显示消息和服务信息,验证ROS是否正确识别并处理自定义类型。代码生成与验证创建自定义的ROS消息和服务话题分析通过rqt_graph分析小乌龟例程的节点关系,理解话题/turtle1/cmd_vel如何实现键盘控制速度指令的发布与订阅,以及节点间的动态交互。使用rostopic工具如echo和list调试话题通信;echo显示话题数据,list列出所有活跃话题及其发布者、订阅者信息,助力深入理解ROS话题机制。通过rostopicecho命令查看/turtle1/cmd_vel话题发布的数据,确认其包含linear和angular速度信息,确保小乌龟控制逻辑正确实现。结合rqt_graph的实时刷新功能与rostopicecho的订阅操作,观察话题数据的实时变化及节点间的交互情况,有效定位并解决通信问题。rostopic工具消息类型验证图形化调试话题通信开发04服务通信与开发服务节点间通信通过ROS服务框架实现,允许同步请求与响应。客户端发送请求至服务端,服务端处理后返回结果,适用于复杂逻辑处理和数据交换。服务节点通信编写ROS服务涉及定义.srv文件,内含请求和响应消息类型,以及实现服务端的C++代码,接收请求、处理并返回响应,完成服务节点开发。编写服务文件服务节点开发涵盖定义.srv文件、编写C++处理逻辑、编译运行,需确保依赖正确、代码无误,运行后测试验证服务功能,保障节点稳定运行。编译运行测试编写服务节点客户端节点客户端节点是使用ROS服务的核心,发送请求并接收服务端的响应。它负责启动连接、发送请求数据、接收并处理响应,是实现ROS服务通信的关键部分。编写客户端逻辑编写ROS客户端逻辑涉及定义服务类型、启动与服务端的连接、发送请求数据、接收并处理响应,确保数据正确传输与处理,是实现ROS服务通信的关键。测试客户端功能编写完客户端节点后,进行充分的测试是验证其功能正确性的关键。这包括模拟各种输入条件、检查响应数据的准确性以及处理异常情况,确保客户端的稳定性。编写客户端节点节点构建系统ROS采用Catkin作为构建系统,支持make和ament。Catkin基于make,而ament是轻量级构建系统,提供跨操作系统兼容性。了解并掌握Catkin和ament的使用。编译设置编译设置位于工作空间根目录的CMakeLists.txt和package.xml中。这些文件定义了构建规则和包依赖项,确保所有节点都按需编译,并引入必要的系统和库依赖项。编译节点编译节点前需确保工作空间正确设置,然后通过catkin_make或colcon等工具编译。编译过程生成可执行文件和库,确保节点正确链接和运行,为后续开发打下基础。构建节点与编译运行检验01编译完成后,运行检验是确保服务端和客户端正常工作的关键步骤。这包括启动ROSMaster和其他相关节点,以及运行服务端和客户端进行实际通信测试。测试覆盖率02测试覆盖服务端和客户端的所有功能分支和数据类型,确保无遗漏。这包括正常操作、异常情况和边界条件测试,以提高服务的可靠性和稳定性。日志调试03运行中查看日志以监控节点状态和识别潜在问题。日志包含关键信息如连接尝试、数据接收和错误消息,帮助快速定位并修复问题,确保服务端和客户端稳定运行。检验服务端和客户端感谢您的观看与聆听第9章
ROS常用组件Contents01.rosbag数据记录与回放02.launch文件03.TF的作用与使用04.rqt工具箱05.RViz三维可视化工具01rosbag数据记录与回放启动roscore进程,作为ROS系统的主节点,随后在终端中运行turtlesim节点,以启动turtlesim可视化工具。初始化ROS节点在乌龟移动时,确保选中启动turtle_teleop_key的终端窗口,以便通过键盘方向键控制乌龟在屏幕上的移动。记录话题数据执行turtle_teleop_key命令,启动一个允许用户通过键盘方向键控制turtlesim中乌龟移动的节点。启动键盘控制录制数据使用rostopic工具检查当前系统中发布的所有话题,包括/turtle1/color_sensor、/turtle1/cmd_vel等。列出话题创建目录以存储数据,运行rosbagrecord-a命令录制所有发布的话题数据至bag文件,持续记录直至系统状态变化。录制数据在turtle_teleop节点所在的终端窗口中控制乌龟移动约10秒后,按Ctrl+C停止rosbagrecord命令。停止录制录制所有发布的话题123运行rosbaginfo查看bag文件内容,确认包含的话题、消息数量和类型,验证录制的数据完整性。查看bag文件使用rosbagplay命令回放bag文件,重现系统运行过程,通过控制乌龟移动验证数据回放的一致性。播放bag文件调整rosbagplay的等待时间和发布速率,观察乌龟移动轨迹的变化,实现自定义的播放控制。自定义播放检查并回放bag文件03检查内容查看subset.bag文件内容,确认仅包含指定话题的数据,验证录制数据子集的准确性。01启动节点重新启动turtlesim节点和键盘控制节点,确保系统处于可录制状态,为录制特定话题做准备。02录制子集使用rosbagrecord命令,指定输出文件为subset.bag,并仅订阅/turtle1/cmd_vel和/turtle1/pose话题。录制数据子集行为微妙变化:turtlesim的移动路径对系统定时敏感,rosbag无法完全复制录制时的系统运行行为,包括消息处理过程中的微小变化。路径差异:乌龟路径在rosbag回放时可能与原始键盘控制路径有细微差异,受系统定时精度影响,整体形状相似但非完全一致。rosbag录制和回放的局限性02launch文件launch文件介绍Launch文件一键启动:Launch文件集合节点与参数,简化一键启动。ROS系统复杂,需并行运行多节点,手工启动繁琐。Roslaunch工具助力,一键启动,高效管理。Roslaunch简介:Roslaunch是ROS启动工具,支持SSH启动多节点,设置参数,重启进程,自动启动roscore。读取.roslaunch和XML文件,指定参数和节点及运行机器。传递参数参数设置语法:在启动文件中,若需为节点设置参数,采用与ROS重映射相同的语法。例如,为my_file.launch文件中的节点设置arg参数,其值为value。启动时设置参数:若要启动的文件指定了需要设置的参数,则可以使用与ROS重映射参数相同的语法进行设置,例如$roslaunchmy_file.launcharg:=value。Launch文件还包含machine、env、test等高级标签,分别用于定义机器信息、设置环境变量、以及指示测试节点运行。Group标签用于将一组配置应用于其内部节点,支持命名空间ns。Arg标签则用于定义启动参数,提升启动文件的可重用性和可配置性。Node标签内可定义name、pkg、type等属性,同时支持env、remap等子标签,实现环境变量设置、参数重映射等功能。Launch文件核心为node标签,定义ROS节点。同时包含rosparam、param、include等标签,分别用于参数设置、参数传递、文件导入。Group与Arg标签Node节点配置Roslaunch高级标签Launch文件基础标签解析launch文件03TF的作用与使用避免障碍物碰撞通过实时跟踪和变换坐标,TF能够确保机器人在复杂环境中精确导航,避免与障碍物发生碰撞,提升机器人操作的安全性和可靠性。参考系跟踪TF,即时间参考系,功能包通过树型数据结构,以时间为轴,跟踪多个参考系变化,维护坐标变换关系,确保数据准确性。坐标变换在机器人系统中,TF帮助用户查询不同参考系间的坐标变换,如机器人、激光雷达、相机等相对位置,为导航、感知提供基础数据。分布式操作TF的分布式操作特性确保所有节点组件均可访问参考系变换关系,无需中心服务器存储,提高系统灵活性和可扩展性。TF的作用坐标系变换01在小车系统中,base_laser和base_link是两个关键坐标系。激光传感器感知障碍物时,需将激光数据从base_laser变换到base_link,确保数据准确性。精度提升02在小车系统中,通过坐标变换精确调整激光雷达数据,减少误差,提升系统精度,满足高精度导航需求,确保机器人在复杂环境中稳定运行。ROS与TF框架03ROS提供了TF框架,极大地简化了坐标系转换的复杂性,使得开发者无需手动处理繁琐的坐标关系,提高了开发效率和系统稳定性。TF示例广播TF变换:向系统中广播参考系之间的坐标变换关系,直接将变换关系插入TF树中,无需同步。监听TF变换:接收并缓存系统中发布的所有参考系变换,并从中查询所需要的参考系变换。TF使用方法04rqt工具箱日志输出工具工具启动:使用rqt_console命令可启动该工具,界面可视化展示日志内容,支持按级别过滤,方便调试和监控ROS系统运行状态。消息概述:rqt_console工具用来图像化显示和过滤ROS系统运行状态中的所有日志消息,包括info、warn、error等级别的日志。计算图展示:rqt_graph工具可以图形化显示当前ROS系统中的计算图,节点和边清晰展示,便于理解和分析系统运行状态。工具启动:在系统运行时,使用rqt_graph命令即可启动该工具,通过图形化界面观察计算图,提升系统分析和调试效率。计算图可视化工具数值曲线绘制:rqt_plot是一个二维数值曲线绘制工具,可以将需要显示的数据在xy坐标系中使用曲线描绘。工具启动:使用rqt_plot命令启动工具后,在界面上方的Topic输入框中输入需要显示的话题消息,rqt_plot工具将数据以曲线形式展示。数据绘图工具动态配置:rqt_reconfigure工具可以在不重启系统的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026侨都文创(江门)有限公司招聘2人考前冲刺密卷含完整答案详解【考点梳理】
- 2026年佳木斯市东风区街道办人员招聘考试参考题库及答案详解
- 学生思想动态调查报告(3篇)
- 第四季度预备党员思想报告2026(3篇)
- 2026年河池市金城江区街道办人员招聘笔试模拟试题及答案详解
- 2026年江苏省镇江市法检系统书记员招聘考试模拟试题及答案详解
- 2026年常州市武进区街道办人员招聘考试备考题库及答案详解
- 2026年天津市河东区街道办人员招聘笔试备考试题及答案详解
- 2025年贵港市覃塘区街道办人员招聘笔试试题及答案详解
- 2026年衡阳市蒸湘区法检系统书记员招聘考试模拟试题及答案详解
- 2026年安徽省中考数学试题(原卷版)
- 2026年医师定期考核中医试题(完整版)附答案
- 国家癌症中心2025年癌症统计报告
- 沪滇协作资金实施方案
- 钢筋混凝土盖板更换专项施工方案
- 肺部穿刺后的术后护理
- 医学情景模拟教学课件
- 2025年四川省机关事业单位考调/选调工作人员考试(综合知识/综合应用能力测试)历年参考题库含答案详解(5套)
- 生殖道沙眼衣原体感染
- 口腔正畸数字化检查诊断专家共识
- 2024年译林版新教材高中英语选择性必修一全册单词默写(汉译英)
评论
0/150
提交评论