版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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等工具编译。编译过程生成可执行文件和库,确保节点正确链接和运行,为后续开发打下基础。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文物保护工程从业资格综合测试卷(含答案)
- 西师大版小学二年级数学上册《观察物体》辨析拓展教案
- 物业安全管理应知应会
- 患者约束发操作并发症
- 学生家长对学校食堂满意度调查表范本
- 露天煤矿焊工定期维护安全操作规程
- 呼吸与危重症医学科实习生出科考试试题及答案
- 水利工程部门经理年度述职报告
- 线上线下文化娱乐合资企业协议
- 車間級安全培训
- 2026年实验室设计标准规范
- 2026版妊娠合并心脏病课件
- 12.《公共财政概论》第十二章 财政体制 改
- (2026版)中国青光眼慢病管理专家共识课件
- 2026-2030中国改性亚甲基二苯基二异氰酸酯(改性MDI)行业市场发展趋势与前景展望战略分析研究报告
- 林木种质资源库档案管理工程方案
- 医院呼吸科工作制度
- DB42-T 2231.2-2024 应急广播北斗卫星系统技术规范 第2部分:终端及设备
- 多联机中央空调维护保养方案
- 室外广场硬地铺装监理实施细则
- 国网师徒协议书
评论
0/150
提交评论