版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TECHNOLOGY第
1
章
ROS
简介触/碰/未/来智/慧/科/技目录CONTENTS01课程导入与目标02030405ROS是什么?——初识ROS为什么用ROS?——解决的问题与目标怎么用ROS?——环境搭建实战本章总结与课后任务TECHNOLOGY01课程导入与目标封面页标题展示02配图说明标题为第1章机器人操作系统(ROS)简介,副标题为开启机器人的“大脑”之门,能吸引学生注意力,让学生对课程有初步的整体认知。01主讲人信息03配图是一张包含多种机器人(机械臂、移动底盘、无人机)且它们之间有信息交互概念的图片,直观展示机器人间信息交互,契合课程主题。主讲人显示为[您的姓名],方便学生了解授课教师。课堂导入——机器人的“灵魂”是什么?PARTONE问题提出提问一个机器人有了精密的机械身体(硬件),还需要什么才能“活”起来,引发学生思考软件和“操作系统”的重要性。PARTTWO类比讲解将机器人与电脑、手机类比,说明电脑需要Windows/macOS,手机需要Android/iOS,机器人也需要能管理硬件、调度任务、方便开发的软件框架。PARTTHREE核心结论引出ROS就是给机器人装上“大脑”的软件框架,让学生初步认识ROS。本章学习目标知识了解目标原理理解目标实践掌握目标了解ROS的起源、概念与核心组成,明确ROS的基本情况,为后续深入学习打基础。理解ROS要解决的核心问题与设计目标,知晓为什么要使用ROS,体会其在机器人开发中的价值。掌握虚拟机、Ubuntu、ROS的环境搭建流程,学会如何搭建开发环境,具备实践操作基础。实践运行第一个ROS程序——小海龟仿真器,通过实际操作验证学习成果,增强学习信心。成果验证目标01020304TECHNOLOGY02ROS
是什么?——初识
ROSROS的官方定义——不只是“操作系统”定义展示展示并解读ROS官方定义“ROSprovideslibrariesandtoolstohelpsoftwaredeveloperscreaterobotapplications...”,让学生了解官方对ROS的表述。本质强调强调ROS本质上是一个分布式通信框架和工具集,而不是传统意义上像Windows那样的操作系统,是运行在UbuntuLinux上的“元操作系统”,明确其独特性质。ROS的核心组成——库和工具核心分类展示以思维导图或分类列表形式,呈现通信核心(通信库、消息传递库等)、机器人核心(里程计与SLAM库等)、开发工具(可视化工具等),让学生了解ROS功能的全面性。教学重点说明不必逐条细讲,重在让学生了解ROS功能的全面性和模块化,指出后续课程会逐一深入,让学生对学习安排有清晰认识。ROS的核心组成——硬件抽象与消息传递硬件抽象讲解用图示解释“应用程序”通过“ROS节点”与“硬件驱动”交互,隔离硬件差异,如不同品牌激光雷达都发布同一种“/scan”话题,让学生理解硬件抽象的作用。消息传递解释用简单图示解释“发布/订阅”模型和“服务”模型,并用“电台广播”“打电话问路”类比,帮助学生理解这一核心机制。ROS的“朋友圈”——开源与BSD许可证开源性质说明说明ROS遵循BSD开源许可证,让学生了解其开源的特点。许可证自由解读解读BSD三大自由,即任意复制发布、修改后可闭源商用、修改后无需公开源码,解释其对ROS广泛应用和商业化的推动作用。本节小结与思考快速回顾ROS定义、核心组成(通信+机器人功能+工具)、通信机制雏形,帮助学生巩固所学知识。内容回顾提出ROS是否是真正的操作系统、通信基本模型是什么、BSD许可证给予什么自由等问题,可作为考点,促进学生思考。互动提问TECHNOLOGY03为什么用
ROS?——解决的问题与目标ROS解决了什么问题?——机器人开发的痛点痛点分析分析机器人开发中功能复杂(涉及多模块)、硬件繁多(接口标准不统一)、算法复用难(“重复造轮子”)等痛点,让学生体会开发的困难。引出必要性从学生角度出发,让他们想象从头写代码的困难,从而引出ROS的必要性,让学生理解使用ROS的原因。ROS的核心目标——代码复用与分布式协作首要目标强调支持机器人研究和开发中的代码重用是ROS的首要目标,明确其在代码利用方面的重要性。实现方式介绍通过分布式进程框架(节点框架)、包与堆栈、联合代码仓库等实现代码复用和分布式协作,以及其简洁设计、语言独立性等特点。生态系统强调强调ROS构建了庞大的开源生态系统,让全世界开发者共享成果,突出其成功不仅在于技术,更在于生态的构建。ROS平台支持平台情况介绍介绍主流平台为Ubuntu和MacOSX,Windows支持尚不成熟,说明课程选择Ubuntu的原因,让学生了解开发平台的选择依据。TECHNOLOGY04怎么用
ROS?——环境搭建实战环境搭建总体路线图路线图展示展示`Windows主机`->`VMware虚拟机软件`->`Ubuntu18.04操作系统`->`ROSMelodic`的流程图,让学生对环境搭建的整体步骤有清晰认识。路线说明说明这是最稳妥、最常用的开发环境,可避免与主机系统冲突,让学生了解选择该路线的优势。第一步:安装VMware虚拟机操作步骤整合将教材图1-1至1-10整合成3-4张关键步骤截图,呈现下载、安装、输入许可证密钥(如有)等核心操作,方便学生掌握关键步骤。第二步:创建并安装Ubuntu18.04操作步骤整合将教材图1-11至1-21整合成4-5张关键步骤截图,包含新建虚拟机(典型配置)、选择ISO镜像等核心操作,并强调下载`Ubuntu18.04.xxLTS`桌面版镜像文件。第三步:系统初始化与增强工具设置分辨率展示教材图1-23截图,说明设置分辨率的目的是让显示更舒服,提升使用体验。安装增强工具展示教材图1-24、1-25的1-2张截图,说明安装VMwareTools的核心目的是实现主机与虚拟机之间的文件拖拽、剪贴板共享、窗口自适应。第四步:安装ROSMelodic(上)——准备操作1:软件源设置展示教材图1-26至1-28的1-2张截图,说明将Ubuntu的软件下载源更换为国内镜像可大幅提升下载速度。操作2:设置ROS源和密钥通过命令框展示添加ROS软件源(清华源)和添加密钥的命令,让学生了解具体操作。第四步:安装ROSMelodic(中)——安装命令说明展示`sudoaptupdate`(更新软件列表)和`sudoaptinstallros-melodic-desktop-full`(安装完整版ROS)的命令框,解释`desktop-full`包含的内容及适合初学者的原因。第四步:安装ROSMelodic(下)——配置与初始化初始化操作说明`sudorosdepinit`和`rosdepupdate`用于安装系统依赖,完成初始化工作。环境变量配置展示`echo\source/opt/ros/melodic/setup.bash\>>~/.bashrc`和`source~/.bashrc`命令,说明其作用是让每次打开终端都能自动找到ROS命令。工具安装说明`sudoaptinstallpython-rosinstallpython-catkin-tools`用于安装额外常用工具。验证安装——经典的“小海龟”例程操作步骤说明通过终端依次执行`roscore`(启动ROS核心)、`rosrunturtlesimturtlesim_node`(启动小海龟仿真器)、`rosrunturtlesimturtle_teleop_key`(启动键盘控制节点)三步走操作,可截图教材图或现场演示。互动安排让学生亲自操作键盘控制小海龟移动,强调成功操作对建立学习信心和兴趣的关键作用。0102常见安装错误与解决锦囊错误提炼提炼教材P19-P21的3个典型错误(密钥问题、软件包找不到、404NotFound),以“问题+解决方案”的卡片形式呈现,培养学生独立解决问题的能力。TECHNOLOGY05本章总结与课后任务本章核心回顾问题引导回顾通过ROS是什么、核心通信机制、主要目标、搭建的开发环境、如何验证成功等关键问题,引导学生回顾本章核心内容,巩固知识。课后习题与思考基础题布置教材习题1、2、3、8、9,用于巩固概念,加深学生对基础知识的理解。实操题布置教材习题4、7,强化动手能力,要求提交环境截图,检验学生的实践操作能力。拓展题布置教材习题10,作为开放性问题,鼓励学生查阅资料,培养专业视野。下节课预告标题展示展示标题为第2章ROS核心概念与文件系统,让学生了解下节课的主题。内容前瞻说明将深入探索ROS的工作空间、功能包等核心概念,开始编写第一个ROS程序,让学生对下节课内容有初步期待和了解。TECHNOLOGY演示完毕感谢您的观看触/碰/未/来智/慧/科/技第2章
机器人简介目录Contents01机器人的发展概述02030405机器人的组成机器人的分类智能机器人小结与习题01PART机器人的发展概述机器人的概念“机器人”一词的起源“机器人”(Robot)一词最早源于文学作品。1920年,捷克作家卡雷尔·恰佩克创作《罗萨姆的万能机器人》剧本,结合捷克语“Robota”(苦役)和波兰语“Robotnik”(工人)创造该词,不仅描述功能,还暗示对人类可能的威胁。此剧讲述罗萨姆公司推出机器人让人类摆脱繁重体力劳动的故事,此后“机器人”逐渐走入人们视野。机器人的定义“机器人三定律”世界各国对机器人定义不同。国际标准化组织认为机器人是能自动定位控制、有编程和多功能操作能力的机械系统;美国机器人工业协会称其为可编程序动作执行任务的多功能操作机;日本机器人协会指工业机器人是能代替人类劳动的通用机器;德国工程师协会定义工业机器人是多自由度、动作可顺序控制的自动机器;简明牛津英语词典将其定义为貌似人、有智力但无人格的自动机;我国强调机器人具备与人或生物相似智能能力和自动化特征。1967年日本会议上,森政弘与合田周平、加藤一郎也分别给出定义。美国科幻小说家艾萨克·阿西莫夫在《我,机器人》中提出“机器人三定律”,即机器人不得伤害人类且确保人类不受伤害;在不违背第一法则前提下服从人类指令;在不违背第一及第二法则前提下保护自己。这三定律是机械伦理学基础,现实中机械制造业都遵循。但阿西莫夫也在小说中探讨不违反定律却伤害人类的可能。机器人的特点自主性机器人能依据预设规则和算法,或通过机器学习自我决策和执行任务,无需人类持续干预。例如一些自主导航的物流机器人,能根据环境自动规划路径完成货物运输任务。灵活性许多机器人可按需重新配置或调整,以适应不同环境和任务。像工业机器人可重新编程执行新生产线任务,服务机器人能适应不同家庭环境。高效性机器人能在短时间内完成大量重复性工作且不易疲劳,在制造业等领域优势显著。比如汽车生产线上的焊接机器人,能持续高效地完成焊接工作。精度性机器人不受人为因素如疲劳或情绪变化影响,具有更高精度和一致性。在电子芯片制造中,机器人能精准完成微小零件的组装。通用性和适应性机器人具有通用性,能执行多种任务和功能;也有适应性,能处理未知物体。如一些多功能服务机器人,既能打扫卫生,又能陪人聊天。人工智能现代机器人通常配备人工智能技术,可进行复杂决策、推理和学习。例如智能客服机器人,能理解用户问题并给出准确回答。02PART机器人的组成控制论范畴执行机构执行机构是机器人主体,包括基座、腰部、臂部、腕部、手部(夹持器或末端执行器)以及行走部(移动机器人)。各部分协作使机器人完成各种动作和任务,如工业机器人通过各部分配合抓取和搬运物品。驱动装置驱动装置根据控制系统指令信号,借助动力元件使机器人动作。主要类型有电力驱动装置(如步进电机、伺服电机等),还有液压和气动驱动装置等。检测装置检测装置分内部信息传感器和外部信息传感器。内部传感器检测机器人内部状况,如关节位置、速度、加速度等;外部传感器感知外部环境信息,如距离、光线、温度等。控制系统控制系统是机器人“大脑”,由硬件和软件组成。硬件包括控制电路板、计算机等,软件包括控制算法、传感器数据处理程序等,负责处理信息并控制机器人动作。01020304系统论范畴硬件机械结构是机器人“骨骼”和“肌肉”,包括基座、关节、连杆和末端执行器等,决定机器人形态和运动能力;感知系统是“感官”,通过摄像头、激光雷达等传感器获取环境信息;控制系统是“大脑”,由中央处理器、存储器、输入/输出接口等组成,接收感知信号并决策控制。01软件机器人操作系统管理和调度硬件和软件资源,常见的有基于ROS的发行版本和AndroidforRobots等;编程语言用于编写控制程序,如Python、C++、Java等;控制软件是“灵魂”,处理感知信息并根据任务需求决策控制。02能源系统电池是动力来源,常见类型有锂离子电池、镍氢电池等,选择需考虑容量、重量、寿命、安全等因素;电源管理负责分配电能,包括电池充放电管理、电压电流监控、节能管理等,可提高机器人续航和稳定性。0303PART机器人的分类按控制方式分类操作型机器人需要通过外部控制进行操作,如一些简单的遥控机器人,需人工操作控制其动作。程控型机器人按照预先编写的程序进行操作,在一些自动化生产线上的机器人常采用这种控制方式。示教再现型机器人通过引导或示教学习,并可重复执行已学习任务,如工业中用于特定装配任务的机器人。数控型机器人采用数控技术进行控制,在机械加工等领域应用广泛。感觉控制型机器人具有感知和适应环境能力,能根据环境变化调整自身行为。适应控制型机器人能够适应环境和任务变化,灵活调整工作方式。学习控制型机器人具有学习能力,可从经验中不断改进自身性能。智能机器人具备高度智能和自主决策能力,能在复杂环境中自主完成任务。按应用环境分类工业机器人主要用于工业领域,如生产线上的操作机器人,可提高生产效率和质量。服务机器人服务于人类生活,如扫地机器人、聊天机器人、陪护机器人、医疗机器人等,为人们生活提供便利。特殊用途机器人用于执行特殊任务,如防爆机器人、扫雷机器人、地下探测机器人、海洋探测机器人等,在危险或特殊环境中发挥作用。按运动形式分类直角坐标型机器人采用直角坐标系进行运动,在一些高精度装配工作中应用较多。圆柱坐标型机器人采用圆柱坐标系进行运动,适用于特定空间的操作任务。球(极)坐标型机器人采用球(极)坐标系进行运动,具有较大的运动范围。平面双关节型机器人具有两个关节并在平面内运动,常用于一些简单的平面操作任务。关节型机器人具有多个关节并可在多个方向上运动,灵活性高,应用广泛。按作业空间分类陆地室内移动机器人主要在陆地室内环境移动,如室内清洁机器人。陆地室外移动机器人主要在陆地室外环境移动,如户外巡检机器人。无人飞机机器人在空中飞行,可用于航拍、物流配送等领域。空间机器人在太空或宇宙中作业,为太空探索等任务提供支持。按功能和用途分类医疗机器人用于医疗领域,如手术机器人、康复机器人等,提高医疗手术的精准度和康复治疗效果。海洋机器人用于海洋探测和作业,探索海洋资源和环境。助残机器人帮助残疾人进行日常生活活动,提升残疾人生活自理能力。清洁机器人用于清洁和卫生领域,如扫地机器人,减轻人们清洁负担。管道检测机器人用于管道检测和维修,保障管道系统的安全运行。按移动方式分类轮式移动机器人采用轮子作为移动方式,移动速度快,适用于平坦地面。步行移动机器人采用步行方式移动,能适应复杂地形。履带式移动机器人采用履带作为移动方式,具有较好的越野性能。爬行机器人采用爬行方式移动,可在狭窄空间或垂直表面移动。蠕动式机器人采用蠕动方式移动,适合在微小空间或特殊环境中作业。游动式机器人采用游动方式移动,用于水下探测等任务。04PART智能机器人智能机器人概述特点智能机器人具备自主决策、自我优化、高度适应性和灵活性等特点。能根据环境变化和任务需求自我调整和优化,实现高效、精准和安全作业,还可与人类交互协作,提高生产效率和生活质量。应用领域可应用于工业生产、医疗护理、家庭服务、军事侦查等多个领域。在工业生产中可提高生产自动化水平;在医疗护理中辅助医生进行手术等操作。人工智能在机器人中的应用机器学习机器人利用机器学习技术从大量数据中学习和提取信息,优化决策和行动。如通过分析历史数据预测未来趋势,做出更准确决策。深度学习深度学习技术帮助机器人理解和处理复杂环境和任务。训练深度神经网络后,机器人可识别分类物体、理解人类语言、感知情感等。计算机视觉计算机视觉技术使机器人通过摄像头感知和理解环境,进行物体识别、人脸识别、场景理解等,实现精准导航、操作和交互。自然语言处理自然语言处理技术让机器人理解和生成人类语言,实现与人类无缝交互,可进行语音识别、语义理解、文本生成等。强化学习强化学习技术帮助机器人在与环境交互中学习和优化行为策略,通过试错调整找到完成任务的最优路径。从控制论角度,机器人由执行机构、驱动装置、检测装置和控制系统等组成,按多种方式分为六大类。智能机器人实现了机器人与人工智能的完美结合。05PART小结与习题小结这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。这里是正文内容,点击即可编辑修改。习题概念问题包括机器人的概念、主要特点、分类等问题,帮助理解机器人的基本定义和特性。组成问题涉及机器人组成可考虑的范畴,控制论和系统论范畴下的主要组成部分等,深入了解机器人的结构。区别与技术问题探讨智能机器人与其他类型机器人的区别,以及智能机器人的核心技术,明确智能机器人的独特之处。其他问题如机器人的交互性体现、发展对人类社会的影响等,从不同角度思考机器人的作用和意义。演示完毕感谢您的观看第3章
ROS的结构目录01ROS结构概述02ROS结构层级详解03ROS数据通信方式04小结与习题01ROS结构概述层次结构介绍层次划分ROS的结构主要包含三个层次,基于Linux系统的OS层提供基本操作系统功能,如文件系统和进程管理等;中间层是核心,包含通信机制和开发库组件,计算图处理节点信息流,节点执行任务,消息负责节点通信;应用层在ROSMaster管理下保证功能节点正常运行。系统实现角度划分从系统实现角度,ROS结构还可划分为开源社区级、文件系统级和计算图级。开源社区是发展的重要推动力量,文件系统描述硬盘组织形式,计算图阐述节点关系。010202ROS结构层级详解ROS开源社区级社区资源模块ROS开源社区级通过资源引入促进开发者软件共享和知识交流。包含发布、库、ROS维基、Bug票据系统、邮件列表、ROS问答和博客等模块。发布允许用户安装特定版本,提供完整测试软件包集合;库是开放分布式资源库,方便开发者复用代码;ROS维基是开放平台,提供学习资源;Bug票据系统基于区块链技术管理票据;邮件列表是全球社区沟通渠道;ROS问答能快速准确回答用户问题;博客分享ROS相关知识。ROS文件系统级文字内容文字内容文字内容文字内容42%58%文件系统概述ROS文件系统基于目录结构,包含机器人程序所需数据和配置文件,具有可扩展性,允许开发者在不同平台共享代码和数据。文件类型与使用支持多种文件类型,开发者可使用标准文件读写函数或ROS特殊函数与硬件交互,如使用“ros::NodeHandle”读取写入配置文件,“tf::TransformListener”获取传感器数据。目录结构与配置采用标准目录结构,包括源代码文件夹、包文件夹、ROS核心库文件夹和共享资源文件夹。配置文件通常存于/etc/目录,可使用“roslaunch”工具加载启动应用程序。还包括综合功能包、功能包清单、功能包、消息类型和服务类型等概念。ROS计算图级计算图模型计算图是表示系统工作的模型和处理进程的点到点网络,由节点组成,节点执行特定任务并通过消息传递交互,依赖关系由“依赖性图”表示。计算图组成元素包含节点、节点管理器、话题、消息、服务、参数服务器和包。节点执行ROS功能,名称唯一;节点管理器提供名称服务等功能;话题是通信媒介;消息是话题数据;服务是话题行动;参数服务器是全局可视共享字典;包用于存储处理消息数据。03ROS数据通信方式通信架构分布式通信架构ROS采用分布式通信架构,即点对点消息传递机制,以解决中央服务器数据瓶颈问题,通过节点管理器统一配置节点间通信。基于话题的异步RPC数据通信通信过程节点Talker向节点管理器发出应答者信息,节点Listener发出申请者信息,节点管理器配置并回应,Listener向Talker发出请求网络连接信号,Talker响应,两者建立连接后Talker发送数据消息完成通信。基于服务的同步RPC数据通信通信过程Talker向节点管理器发出应答者信息,Listener发出申请者信息,节点管理器配置并回应,Listener确认后向Talker发出数据请求信号,Talker响应并返回应答数据。节点连接0102连接过程节点Talker登录,Listener作为订阅者向节点管理器发布更新请求信号,确认对方后向Talker发出话题请求信号,Talker处理并返回结果。节点优缺点优点是鲁棒性强、隔离性好、耦合性低;缺点是过度依赖节点管理器、节点异常多、计算资源浪费大、保密性不强。04小结与习题小结内容总结本章阐明了开源社区级、文件系统级和计算图级内涵,介绍了相关元素及数据通信方式,ROS结构设计为机器人应用开发提供强大支持。习题问题列举包括ROS结构层次、开源社区级作用、文件系统级关注点、基于话题异步RPC数据通信特点以及与基于服务同步RPC数据通信的不同等问题。演示结束,感谢您的观看第4章
ROS的基本操作TechnologyChangestheFutureLife目录Contents0102030405课程说明文件系统与工作空间通信“三剑客”日志与多节点启动编程与调试实战案例06课程总结与作业07RESOLUTIONSFORWORKPART01课程说明使用说明页面布局02截图标注每页左侧留1/3空白,供教师现场板书或激光笔圈画(这有助于教师在讲解过程中进行额外的标注和说明,方便学生理解重点内容)01页面信息03所有终端截图已附“步骤编号”,方便学生跟打(学生可以按照步骤编号逐步操作,提高学习的效率和准确性)右上角统一放“页码/42”与“本章二维码”(含代码仓库&在线仿真链接)(方便学生获取相关资源,进行进一步的学习和实践)封面信息封面标题第4章ROS的基本操作副标题:从理论到实践的跃迁(明确了课程的章节和主题,让学生对学习内容有初步的了解)封面配图左侧代码编辑器暗色主题,右侧rqt_graph彩色节点图,底部终端catkin_make绿色通过提示(营造出浓厚的技术氛围,激发学生的学习兴趣)课堂导入回顾与提问回顾:Node、Topic、Service概念图标(灰);提问:机器人动起来还差哪一步?(红色问号)(引导学生回顾之前学过的知识,并引发他们对新知识的思考)01本章角色本章角色:实操手册(绿色打钩)(让学生明确本章的学习重点是实践操作)02学习目标学习方向工具篇→“找”环境篇→“建”编程篇→“写”调试篇→“看”(清晰地展示了学习的四个主要方向,帮助学生明确学习目标)RESOLUTIONSFORWORKPART02文件系统与工作空间文件系统工具命令展示左侧5条命令彩色卡片(直观地呈现了重要的命令,便于学生记忆)右侧动图:在终端里roscdturtlesim后路径自动跳转(通过动态演示,让学生更清楚地了解命令的实际操作效果)操作演示catkin工作空间空间结构3D树形图:src亮黄(动手区)、build灰(临时)、devel蓝(运行区)(形象地展示了工作空间的结构,帮助学生理解各个区域的功能)实战:创建工作空间创建步骤四步截图纵向排布,每步左上角放“Step1~4”圆形徽章(清晰地展示了创建工作空间的步骤,方便学生按照步骤进行操作)创建功能包命令执行终端高亮:catkin_create_pkglearning_tutorialsstd_msgsrospyroscpp(突出显示关键命令,让学生关注重点操作)文件生成下方弹出package.xml&CMakeLists.txt图标(让学生了解创建功能包时生成的重要文件)两个“身份证”0102清单文件package.xml→清单→依赖关系(介绍了package.xml文件的作用,即管理依赖关系)编译规则CMakeLists.txt→编译规则→可执行文件(说明了CMakeLists.txt文件的功能,用于制定编译规则和生成可执行文件)依赖关系依赖查询rospackdependsturtlesim输出截屏,用红色框圈出“间接依赖”示例(通过实际的输出截图,让学生直观地了解依赖关系的查询方法和间接依赖的概念)RESOLUTIONSFORWORKPART03通信“三剑客”roscore&Node通信过程动图:roscore启动后,Node向Master注册→Master回执→Node开始通信(以动态的方式展示了节点通信的过程,帮助学生理解通信机制)Topic概念通信模型广播塔图标+多个收音机图标=发布/订阅(形象地解释了Topic的发布/订阅通信模型)典型话题右侧列典型话题:/scan、/image_raw、/odom(让学生了解常见的Topic类型)rostopic常用命令上三命令并排:list→echo→type,配键盘控制小海龟GIF(通过并排展示命令和动态的操作演示,让学生掌握rostopic的常用命令)发布命令rostopicpub命令高亮;右侧小海龟转圈GIF与命令参数一一对应(突出显示发布命令,并通过动态演示让学生了解命令参数的使用)0102rqtgraph通信展示完整通信图截屏,用动画圆圈逐步圈出/teleop、/turtlesim、/cmdvel(通过逐步圈出关键节点和话题,帮助学生理解通信系统的结构)Service概念服务模型打电话插画:Client→Server→Response→挂断(形象地解释了Service的服务模型)rosservice实战服务调用rosservicecall/spawn命令与第二只海龟出现GIF同帧对比(通过命令和动态演示的对比,让学生了解服务调用的实际效果)ParameterServer数据存储黑板隐喻:key=value写满黑板;下方rosparamset实时改背景色(用形象的隐喻解释了ParameterServer的数据存储方式,并通过实际操作展示了参数的修改)rosparam实战参数修改左侧终端序列;右侧小海龟背景由蓝变红GIF(通过终端操作和动态演示,让学生了解参数修改的实际效果)三机制对比对比表格3×4表格,最后一列“典型应用”用图标代替文字,方便记忆(通过表格对比,让学生清晰地了解三种通信机制的特点和应用场景)RESOLUTIONSFORWORKPART04日志与多节点启动日志系统日志界面rqt_console界面截屏,红色Error消息自动弹出(展示了日志系统的界面,让学生了解如何查看日志信息)roslaunch原理启动过程火箭发射图:.launch文件→点火→多节点同时升空(用形象的比喻解释了roslaunch的启动原理)roslaunch实战代码展示左侧turtlemimic.launch代码高亮;右侧rqtgraph显示mimic节点与两条重映射cmdvel(通过代码展示和图形显示,让学生了解roslaunch的实际应用)RESOLUTIONSFORWORKPART05编程与调试编写ROS节点(Python)代码示例左侧展示一个简单的Python节点代码示例,如发布者节点(提供了实际的代码示例,让学生学习Python节点编程的基本方法)代码解释右侧用注释形式解释代码的关键部分,如`rospy.init_node`用于初始化节点,`rospy.Publisher`用于创建发布者等(对代码的关键部分进行解释,帮助学生理解代码的含义)编写ROS节点(C++)代码示例左侧展示对应的C++发布者节点代码(提供了C++节点编程的代码示例)代码解释右侧同样用注释解释代码,如`ros::init`初始化ROS节点,`ros::Publisher`发布消息等(对C++代码进行解释,帮助学生掌握C++节点编程)编译ROS节点编译配置展示CMakeLists.txt中编译节点的关键部分,如:add_executable(talkersrc/talker.cpp);target_link_libraries(talker${catkin_LIBRARIES})(展示了编译节点的关键配置,让学生了解编译的过程)配置解释解释`add_executable`用于指定可执行文件的名称和源文件,`target_link_libraries`用于链接所需的库(对编译配置进行解释,帮助学生理解配置的作用)运行ROS节点列出在终端中运行节点的命令,如rosrun<package_name><node_name>(提供了运行节点的命令,让学生掌握节点的运行方法)运行命令给出运行上述Python和C++节点的具体示例,如rosrunlearning_tutorialstalker(通过具体示例,让学生了解如何在终端中运行节点)运行示例自定义消息类型消息作用介绍自定义消息类型的作用和场景(让学生了解自定义消息类型的重要性和应用场景)消息示例展示.msg文件的示例,如:int32num;stringname(提供了自定义消息类型的示例,让学生学习消息文件的结构)结构解释解释消息文件的结构,每个字段的类型和含义(对消息文件的结构进行解释,帮助学生理解消息的定义)生成自定义消息依赖添加说明在package.xml中添加必要依赖的步骤,如:<build_depend>message_generation</build_depend>;<exec_depend>message_runtime</exec_depend>(展示了添加依赖的步骤,让学生了解消息生成的准备工作)配置展示展示`CMakeLists.txt`中配置消息生成的部分:find_package(catkinREQUIREDCOMPONENTSroscpprospymessage_generation);add_message_files(FILESCustomMsg.msg);generate_messages(DEPENDENCIESstd_msgs)(展示了消息生成的配置,让学生了解配置的具体内容)配置解释解释每个配置项的作用(对配置项进行解释,帮助学生理解配置的作用)使用自定义消息代码示例展示使用自定义消息的Python节点代码示例(提供了使用自定义消息的代码示例,让学生学习如何在代码中使用自定义消息)代码解释解释代码中如何导入和使用自定义消息类型(对代码进行解释,帮助学生理解自定义消息的使用方法)自定义服务类型服务用途介绍自定义服务类型的用途(让学生了解自定义服务类型的重要性和应用场景)01服务示例展示.srv文件的示例,如:int32a;int32b;---;int32sum(提供了自定义服务类型的示例,让学生学习服务文件的结构)02结构解释解释服务文件的结构,请求和响应部分的含义(对服务文件的结构进行解释,帮助学生理解服务的定义)03生成自定义服务配置步骤说明在package.xml和CMakeLists.txt中添加服务生成相关配置的步骤,与消息生成类似(展示了服务生成的配置步骤,让学生了解服务生成的过程)配置示例展示配置示例并解释其作用(通过示例和解释,帮助学生理解服务生成的配置)使用自定义服务代码示例展示使用自定义服务的Python客户端和服务器节点代码示例(提供了使用自定义服务的代码示例,让学生学习如何在代码中使用自定义服务)代码解释解释代码中如何创建服务客户端和服务器,以及如何处理服务请求和响应(对代码进行解释,帮助学生理解服务的使用方法)0102调试工具之rqt_plot工具功能介绍rqt_plot的功能,用于实时绘制话题数据(让学生了解rqt_plot的功能和用途)启动命令展示在终端中启动rqt_plot并选择话题的命令,如rqt_plot/turtle1/pose/x(提供了启动rqt_plot的命令,让学生掌握工具的使用方法)示例展示给出一个简单的示例,如绘制小海龟的位置数据(通过示例展示,让学生了解rqt_plot的实际应用)调试工具之rqt_reconfigure说明rqt_reconfigure的作用,用于动态调整ROS参数(让学生了解rqt_reconfigure的功能和用途)工具作用展示如何在终端中启动rqt_reconfigure并调整参数(提供了启动和操作rqt_reconfigure的方法,让学生掌握工具的使用)操作方法给出一个示例,如调整小海龟的速度参数(通过示例展示,让学生了解rqt_reconfigure的实际应用)示例展示调试工具之rosbag工具用途介绍rosbag的用途,用于记录和回放ROS话题数据(让学生了解rosbag的功能和用途)操作命令展示记录数据的命令,如rosbagrecord-Omy_bag.bag/topic1/topic2;展示回放数据的命令,如rosbagplaymy_bag.bag(提供了记录和回放数据的命令,让学生掌握rosbag的使用方法)RESOLUTIONSFORWORKPART06实战案例导航仿真目标场景概述导航仿真的目标和场景(让学生了解导航仿真的目的和应用场景)节点话题展示导航仿真所需的节点和话题,如move_base节点、/cmd_vel话题等(让学生了解导航仿真所需的关键节点和话题)仿真步骤介绍导航仿真的步骤,包括地图创建、定位、路径规划等(让学生了解导航仿真的具体步骤)机械臂控制控制原理介绍机械臂控制的基本原理和方法(让学生了解机械臂控制的基本原理)节点服务控制示例展示机械臂控制所需的节点和服务,如运动规划服务、关节控制话题等(让学生了解机械臂控制所需的关键节点和服务)给出一个简单的机械臂控制示例,如控制机械臂抓取物体(通过示例展示,让学生了解机械臂控制的实际应用)RESOLUTIONSFORWORKPART07课程总结与作业本章总结内容总结以思维导图的形式总结本章的主要内容,包括文件系统、通信机制、编程、调试等方面(通过思维导图,让学生清晰地回顾本章的主要内容)知识强调强调本章所学知识的重要性和应用场景(让学生认识到所学知识的价值)鼓励探索鼓励学生进一步探索ROS的更多功能和应用(激发学生的学习兴趣和探索欲望)课后作业作业布置作业要求参考资料布置课后作业,如编写一个简单的ROS节点,实现特定的功能(通过作业巩固学生所学的知识)要求学生使用自定义消息和服务,完成一个小项目(提高学生的实践能力和创新能力)提供参考资料和代码示例,帮助学生完成作业(为学生提供必要的帮助和支持)010203常见问题解答问题列出列出学生在学习过程中可能遇到的常见问题,如编译错误、节点启动失败等(让学生了解可能遇到的问题)问题解答给出详细的解答和解决方案,帮助学生解决问题(为学生提供解决问题的方法)感谢语感谢表达表达对学生的感谢,鼓励学生积极参与讨论和实践(营造良好的学习氛围)START结束页引导信息显示二维码,引导学生访问代码仓库和在线仿真平台,继续学习和探索(为学生提供进一步学习的途径)演示完毕感谢您的观看!TechnologyChangestheFutureLife第
5
章
ROS
的常用工具目录01课堂导入02本章学习目标03坐标变换——TF204系统启动——launch文件05可视化世界06本章总结07课后作业08拓展知识与优化技巧09学习资源与交流10课程反馈与预告11总结回顾与结束语01课堂导入从“点灯”到“造楼”01前章回顾前几章学会了创建节点、让节点间通过话题/服务通信,就像学会了“砌砖”。例如,我们能实现简单的节点创建和通信功能,为后续更复杂的操作打下基础。02问题提出现在要做一个包含传感器、底盘、机械臂的完整机器人,需管理几十个节点的启动和参数,要知道“激光雷达打在墙上的点”在机器人坐标系中的位置,还想在电脑里看到机器人的状态。这是在实际机器人开发中会面临的复杂问题,需要更强大的工具来解决。03工具引入本章的三个工具TF2(让数据带上“位置上下文”)、launch(一键启动整个系统)、可视化工具(让数据“看得见”)是解决上述问题的答案。它们能提升开发效率,实现更复杂的机器人功能。02本章学习目标学习目标概述坐标篇目标理解TF2的核心思想,掌握viewframes、tfecho等调试工具,能编写广播器和监听器。这有助于在机器人开发中处理不同坐标系间的坐标变换问题,实现更精准的定位和控制。启动篇目标掌握launch文件的XML语法(node,param,arg,include,group,remap),能编写复杂系统的启动脚本。这样可以方便地管理多个节点的启动和参数配置,提高系统的可维护性。可视化篇目标区分rviz(数据显示)和Gazebo(物理仿真)的用途,熟悉Qt工具链的调试功能。通过可视化工具,能更直观地观察机器人的状态和数据,便于调试和优化。03坐标变换——TF2为什么需要坐标变换实际场景举例机器人头顶的激光雷达检测到前方1米处有障碍物,“前方1米”是相对于雷达自身坐标系。但机器人底盘避障需知道障碍物相对于底盘中心的位置,机械臂抓取也需知道其相对于机械臂基座的位置。这体现了不同部件在不同坐标系下对同一物理点的位置需求不同。坐标变换结论同一个物理点在不同“视角”(坐标系)下有不同的坐标值,坐标变换就是解决“如何在不同坐标系间转换数据”的问题。它是机器人实现精准操作的关键技术。初识TF2实验目的通过可视化方式直观感受TF2。让开发者更直观地理解TF2的作用和工作原理。操作流程安装相关软件包,运行演示,观察小海龟跟随现象,使用viewframes查看坐标系树,使用tfecho查看变换关系,使用rviz观察坐标系位置关系。这些操作步骤可以帮助我们深入了解TF2的功能和使用方法。TF2的核心概念坐标系树坐标系树(TFTree)是一个单向无环图,描述了所有坐标系之间的父子关系,根节点通常是world或map。它是TF2进行坐标变换的基础结构。帧ID每个数据(如点云、位姿)都必须指定其所在的参考坐标系,不同坐标系下相同数据的意义不同。帧ID确保了数据的位置上下文信息准确。关键点只要建立了完整的TF树,TF2就可以自动计算出任意两个坐标系之间在任意历史时间点的变换关系。这大大简化了坐标变换的计算过程。TF2能做什么广播变换节点负责发布两个坐标系之间的变换关系,如base_link相对于odom的位置。广播器是TF2数据更新的重要环节。监听变换节点缓存所有广播的变换,并提供查询接口,如计算点在base_link坐标系下的坐标。监听器方便开发者获取所需的坐标变换信息。机器人中的坐标变换问题回顾已知点P在坐标系{B}中的坐标^BP,想求它在坐标系{A}中的坐标^AP。这是坐标变换中的常见问题。公式推导通过旋转和平移公式推导得出^AP=^ABR*^BP+^APBORG,齐次变换矩阵将旋转和平移合并为一个4x4矩阵。虽然不必深挖矩阵计算细节,但要明白TF2封装了这些复杂运算。TF2的工具箱问题提出得到变换矩阵后,如何把它应用到具体的数据上(如点云、位姿)。这是实际应用中需要解决的问题。解决方案TF2提供了一系列转换包,如tf2geometrymsgs处理PoseStamped,PointStamped等,tf2sensormsgs处理PointCloud2数据,tf2_kdl与KDL运动学库交互。通过这些转换包可以方便地进行数据的坐标变换。12多机器人系统的坐标管理单TF树方案多TF树方案所有机器人共用一个TF树,通过给帧ID加命名空间前缀来区分。这种方案简单直接,但需要注意命名空间的管理。每个机器人有自己的tf2_ros::Buffer,通过节点间通信传递变换信息。适用于更复杂的多机器人场景。静态变换优化StaticTransformBroadcaster用于发布固定不变的变换,只需发布一次,减少网络开销。可以提高系统的性能和效率。TF2编程实战项目准备创建功能包,需要显式依赖tf2系列包。为后续的编程工作做好环境准备。C++实战-广播器包含头文件,在回调函数中创建广播器,填充TransformStamped消息,进行四元数转换并广播。强调四元数可避免万向锁问题,tf2::Quaternion::setRPY是转换利器。C++实战-监听器包含头文件,创建Buffer和Listener,在循环中查询变换,进行异常处理,计算控制指令。lookupTransform是监听器的核心,ros::Time(0)是常用用法。编译配置与launch文件在CMakeLists.txt中添加编译规则,解析launch文件,包括启动海龟仿真器、键盘控制、广播器和监听器节点。要理解args参数传递到main函数的argv的方式。运行与观察结果启动launch文件,手动生成第二只海龟,观察小海龟跟随现象,进行可视化验证。通过实际运行和观察可以验证编程的正确性。Python版本与小结Python代码结构更简洁,逻辑相同,适合快速原型。总结TF2核心思想,提出互动提问,如TF2中的frame_id起什么作用,lookupTransform(\\A\\\\B\\time)返回的是什么。04系统启动——
launch
文件为什么需要launch文件0102问题提出一个复杂机器人系统可能有几十个节点,手动配置环境变量、设置参数不可行。这在实际开发中会耗费大量时间和精力。解决方案roslaunch+.launch文件是ROS系统的“启动总指挥”,可以一键启动多个节点并管理参数。提高了系统启动的效率和便捷性。launch文件基础根元素根元素包含所有内容,是launch文件的基本结构。核心元素-节点启动一个节点,指定包名、可执行文件名、节点名称等属性,如output=\\screen\\将节点输出显示在终端,respawn=\\true\\节点崩溃后自动重启,ns将节点放入指定命名空间。传递参数单个参数设置设置单个参数到参数服务器,指定参数名称、值和类型。参数服务器是全局的,launch文件向其写入数据。批量参数加载批量加载/转储参数,通常配合YAML文件使用。可以方便地管理大量参数。变量与复用局部变量launch文件内部的局部变量,提高灵活性,可通过$(argarg_name)使用。包含其他launch文件包含其他launch文件,实现模块化,ns属性可避免命名冲突。使launch文件的结构更加清晰和可维护。通信重映射问题提出节点A发布到话题/topicA,节点B订阅/topicB,如何让它们通信而不修改代码。这在实际开发中可能会遇到。解决方案话题重映射,通过<remap>元素实现,可放在不同元素内部,作用域不同。可以灵活调整节点间的通信关系。逻辑分组与命名空间逻辑分组将一组节点和参数打包,可统一应用条件判断和命名空间。例如启动两个独立的turtlesim实例,互不干扰。控制方法通过命名空间区分不同的节点组,方便控制。可以提高系统的可管理性。条件控制用途根据条件决定是否包含某段配置,常与<arg>结合,实现高度可配置的启动脚本。可以根据不同的需求灵活配置系统。launch文件设计最佳实践模块化将功能相关的节点拆分成独立的launch文件,再用<include>组合。提高代码的复用性和可维护性。参数化用<arg>暴露可配置的变量,避免硬编码。使launch文件更具灵活性。命名空间化为同一机器人的不同部件或多机器人系统使用命名空间隔离。避免命名冲突。版本控制launch文件是代码的一部分,应纳入版本管理。方便团队协作和代码维护。05可视化世界可视化工具全景图工具概述Qt工具链用于2D数据、日志、动态配置,rviz用于3D数据可视化,Gazebo用于3D物理仿真。它们共同构成了ROS的可视化体系。工具关系Gazebo产生仿真数据,通过ROS话题传递给rviz显示,Qt工具在各个环节辅助调试。展示了不同工具之间的协作关系。0102Qt工具链工具介绍rqt_console用于日志查看,可按节点、日志级别过滤;rqt_graph显示通信关系图;rqt_plot实时绘制2D数据曲线;rqtimageview查看图像话题;rqt_reconfigure动态重配置工具。这些工具可以帮助开发者进行系统调试和监控。深度演示以小海龟为例,演示动态修改背景颜色、机器人速度限制等参数。让开发者更深入地了解rqt_reconfigure的使用方法。rviz-3D可视化的主力军0102030405功能概述rviz是ROS中常用的3D可视化工具,通过订阅ROS话题获取数据,显示机器人模型、传感器数据、TF坐标系等。它为开发者提供了直观的可视化界面。启动与界面介绍启动命令为rosrunrvizrviz,介绍界面布局,包括菜单栏、工具栏、Displays面板、Views面板和3D显示区域。让开发者对rviz有初步的认识。基本操作添加显示项,调整视角,保存和加载配置。不同的数据类型需要订阅相应的ROS话题,确保话题名称正确。这些操作可以帮助开发者更好地使用rviz。高级应用-显示机器人模型介绍URDF模型,在rviz中添加“RobotModel”显示项,通过参数服务器或launch文件加载URDF文件。强调URDF文件的重要性和配置方法。高级应用-显示传感器数据订阅激光雷达和摄像头话题,在rviz中添加相应显示项,调整显示属性。让开发者了解如何显示和调整不同传感器的数据。Gazebo-3D物理仿真平台功能概述Gazebo是开源的3D物理仿真平台,支持多种传感器仿真和物体动力学模拟。可以模拟机器人在各种环境中的运动和行为。启动与界面介绍启动命令为roslaunchgazebo_rosempty_world.launch,介绍界面布局,包括菜单栏、工具栏、模型列表、属性面板和3D仿真场景。让开发者对Gazebo有初步的认识。基本操作添加模型,设置环境,运行仿真。可以通过编写SDF文件创建自定义模型,调整仿真场景的参数。Gazebo与ROS的集成通过话题通信,Gazebo与ROS进行数据交互,使用launch文件启动并配置参数。让开发者了解两者之间的通信机制和集成方法。高级应用-自定义仿真场景创建自定义模型,编写插件。可以提高仿真的灵活性和真实性,满足不同的仿真需求。06本章总结内容总结TF2总结核心思想是建立坐标系树实现坐标变换,应用于机器人定位、导航、运动控制等,编程要点是广播器发布变换,监听器查询变换。launch文件总结作用是一键启动复杂ROS系统,管理节点和参数,语法元素包括<node>、<param>等,设计原则是模块化、参数化、命名空间化。可视化工具总结Qt工具链用于2D数据调试等,rviz用于3D数据可视化,Gazebo用于3D物理仿真。07课后作业作业布置TF2部分编写新的TF2广播器和监听器,在多机器人系统中使用TF2进行坐标管理。通过作业巩固TF2的知识和应用能力。launch文件部分编写复杂launch文件,使用参数化和模块化设计,尝试条件控制和命名空间优化。提高对launch文件的掌握程度。可视化工具部分在rviz中显示自己的机器人模型和传感器数据,在Gazebo中创建自定义仿真场景并进行运动仿真。加深对可视化工具的理解和应用。08拓展知识与优化技巧TF2拓展知识高级功能介绍TF2的缓存机制和静态变换广播,说明其在处理历史变换数据和固定坐标系变换中的应用。可以提升对TF2的深入理解和应用能力。与其他组件结合举例说明TF2与ROS导航栈和机器人视觉处理的结合应用。展示TF2在不同场景中的重要作用。launch文件优化技巧讲解使用Python脚本实现动态参数生成,使用YAML文件存储参数。提高参数管理的灵活性和可配置性。动态参数配置设置错误处理机制和日志记录,方便系统调试和分析。可以提高系统的稳定性和可维护性。错误处理与日志记录可视化工具深度应用rviz插件开发介绍rviz插件开发流程和常见示例。可以拓展rviz的功能,满足个性化的可视化需求。Gazebo仿真优化讲解优化Gazebo仿真性能和进行多机器人协同仿真的方法。提高仿真的效率和真实性。09学习资源与交流学习资源推荐官方文档与教程推荐ROS、TF2、Gazebo官方文档和教程,强调其权威性和全面性。为学习者提供可靠的学习资料。在线课程与论坛开源项目与代码库010203推荐在线学习平台上的ROS课程和相关论坛,鼓励学生提问和分享经验。拓宽学习渠道,促进交流和学习。展示优秀开源ROS项目和GitHub代码库,供学生学习借鉴。可以获取更多实际项目的经验和代码资源。学习小组与交流活动学习小组组建鼓励学生组建学习小组,提供小组合作建议。促进学生之间的合作学习和交流。交流活动安排预告交流活动,说明参与方式和好处。激发学生的参与热情,营造良好的学习氛围。10课程反馈与预告课程反馈收集0102反馈方式提供在线问卷、邮件等反馈途径,强调反馈重要性。帮助教师了解学生的学习情况和需求,改进教学。反馈内容引导引导学生从教学内容、方法、实践环节等方面反馈,鼓励提出建议。促进教学质量的提升。下节课预告课程内容简介简要介绍下节课主题和内容,提及与本节课的关联和拓展。让学生对后续学习有初步了解。预习要求提出预习要求,提供参考资料和资源。帮助学生做好预习准备,提高学习效果。11总结回顾与结束语总结回顾重点内容回顾再次强调TF2、launch文件和可视化工具的核心知识点和应用,通过图表或示例巩固内容。帮助学生加深记忆和理解。学习目标达成情况回顾学习目标,说明学生达成情况和需努力的方面。让学生清楚自己的学习进度和不足。结束语鼓励话语用积极话语鼓励学生课后继续学习和实践,表达对学生的期望。激发学生的学习动力。再次感谢感谢学生聆听和参与,期待下节课再见。营造良好的学习氛围。演示结束,感谢您的观看探索未至之境LoremIpsumissimplydummytextoftheprintingandtypesettingindustry.LoremIpsumhasbeentheindustry'sIpsumissimplydummytextoftheprintingandtypesettingindustry.探索AI世界BUSINESS第6章
机器人的
SLAM
与导航目录CONTNENTS01020304课程导入与目标SLAM理论基础——让机器人认识世界导航框架总览——从“我在哪”到“怎么去”导航核心组件深度解析05工程案例——智能服务机器人实战06本章总结与课后任务课程导入与目标PARTWorkSummary01封面页标题信息标题为第6章机器人的SLAM与导航——迈向自主移动,副标题是同时定位与建图+路径规划与避障。该标题清晰地概括了本章的核心内容,展示了课程从基础到高级的进阶方向。配图说明配图是一张包含扫地机器人、自动驾驶汽车、仓储AGV的拼贴图,体现了SLAM与导航在不同领域的广泛应用,让学生对所学内容的实用性有直观认识。主讲人信息主讲人标注为[您的姓名],明确了课程的授课主体。课堂导入——机器人的“灵魂三问”问题提出提出“如果你是一个被丢进陌生房间的机器人,你需要回答哪三个问题”,即“我在哪?”“我周围是什么?”“我怎么去那?”,引导学生思考机器人自主移动面临的关键问题。技术引入引入本章核心,指出SLAM技术解决前两个问题,导航技术解决第三个问题,它们共同构成机器人自主移动的基石,为后续学习做铺垫。本章学习目标理论篇目标理解SLAM的原理、分类和关键步骤,以及导航的全局与局部路径规划,为后续的学习提供理论支撑。框架篇目标掌握ROS导航堆栈的核心组件(move_base,costmap,amcl,gmapping)及其关系,有助于学生构建完整的知识体系。实践篇目标能够完成建图→定位→导航的完整流程,培养学生的实践操作能力。工程篇目标了解真实机器人产品的系统参数和导航实现,让学生将理论知识与实际应用相结合。SLAM
理论基础——让机器人认识世界PARTWorkSummary02什么是SLAM?——鸡生蛋还是蛋生鸡?定义阐释SLAM即SimultaneousLocalizationandMapping,同时定位与建图。它是机器人实现自主移动的关键技术,解决了机器人在未知环境中定位和建图的难题。核心悖论分析指出要定位需要地图,要建图需要知道自己的位置,形成了一个看似矛盾的问题。解决方案说明用概率论的方法同时估计机器人的位姿和环境地图,这是一个迭代优化的过程,通过不断更新和修正来逐步提高定位和建图的准确性。010203SLAM的传感器分类激光雷达SLAM视觉SLAM惯性导航SLAM(IMU)RGB-DSLAM教学讲解重点使用激光雷达获取点云数据,优点是精度高、直接测距、受光照影响小,但成本高、缺乏语义信息。在一些对精度要求较高的场景中应用广泛。使用摄像头获取图像,成本低、信息丰富,但受光照影响大、计算量大、深度需要计算得到。适用于对成本敏感且对语义信息有需求的场景。测量角速度和加速度,高频、短时精度高,但存在积分漂移问题。常用于辅助其他传感器进行定位。结合彩色图像和深度信息,如Kinect、RealSense。能提供更丰富的环境信息,在一些特定的应用场景中有优势。强调现代SLAM系统往往采用多传感器融合的方式,取长补短,以提高系统的性能和可靠性。激光雷达SLAM的关键步骤——算法流水线流程图展示步骤详细解释用流程图展示6个步骤的串联关系,包括数据获取与预处理、特征提取与描述、初始化、自我定位与建图、回环检测与闭环修复、后处理与优化。重点解释自我定位与建图和回环检测与闭环修复这两个步骤。自我定位与建图解决“局部一致性”,回环检测与闭环修复解决“全局一致性”,确保地图的准确性和一致性。常见激光SLAM算法简介Gmapping基于粒子滤波,经典算法,适合小场景,计算量适中,是本章重点介绍的算法之一。HectorSLAM无需里程计,仅依赖激光雷达,适合空中机器人或不平坦地面,但对激光帧率要求高。KartoSLAM基于图优化的SLAM,回环检测能力强,能有效减少累积误差。CartographerGoogle开源,基于图优化,支持多传感器,可生成栅格地图,大场景表现优异,是目前工业界主流算法。视觉SLAM简介(拓展知识)1特征点法如ORB-SLAM系列,通过提取ORB特征,计算描述子,进行匹配来实现定位和建图。2直接法如LSD-SLAM,DSO,不提取特征,直接根据像素灰度信息估计位姿。3教学讲解要点让学生了解视觉SLAM的存在,作为激光SLAM的补充,拓宽学生的知识面。SLAM的输出——地图的几种形式01030204栅格地图(OccupancyGridMap)最常用,将环境划分为网格,每个格子存储被占用的概率,适合导航规划,是本章重点介绍的地图形式。特征地图用点、线、面等几何特征表示地图,紧凑但信息量少。拓扑地图用节点和边表示地图,适合路径规划,但缺乏几何细节。点云地图由原始点云拼接而成,信息丰富,但数据量大,不能直接用于导航。本节小结与思考12核心概念总结总结SLAM是鸡生蛋蛋生鸡问题的概率解法,激光SLAM关键在“匹配+滤波/优化+回环”,帮助学生巩固所学知识。互动提问提出“为什么需要回环检测?如果长时间运行没有回环,地图会怎样?”等问题,引导学生思考累积误差的概念,加深对知识的理解。导航框架总览——从“我在哪”到“怎么去”PARTWorkSummary03什么是导航?定义阐述导航是基于已知地图,通过路径规划和运动控制,使机器人从起点安全、高效地移动到目标点。明确了导航的目标和实现方式。01三要素说明包括定位、规划和控制/避障,分别对应“我现在在哪?”“怎么走到目标?”“怎么避开路上的障碍物?”三个问题,是导航系统的核心要素。02ROS导航堆栈架构图——系统级视角架构图展示展示经典导航架构图,清晰呈现ROS导航堆栈的整体结构。核心组件介绍介绍move_base、全局路径规划器、局部路径规划器、costmap_2d、AMCL和传感器输入等核心组件的功能和作用,帮助学生理解导航系统的工作原理。数据流与通信关系输入数据说明包括tf、odom、scan、map和goal等输入数据,这些数据是导航系统运行的基础。内部处理过程AMCL接收相关数据发布`map`->`odom`的变换,move_base接收目标、定位结果和传感器数据,利用costmap进行规划。输出结果输出`cmd_vel`,即发送给底盘控制器的速度指令,实现机器人的运动控制。路径规划的双层架构01全局路径规划基于静态地图,目标是找到从起点到终点的可行路径,常用算法有A*、Dijkstra、RRT等。02局部路径规划基于动态更新的局部costmap,目标是在全局路径附近生成平滑、避障的实时轨迹,常用算法有DWA、TEB等。03配图说明用一张图展示全局路径和局部路径,直观地体现两者的关系和作用。导航核心组件深度解析PARTWorkSummary04核心组件1——costmap_2d(成本地图)01定义说明将环境表示为网格,每个网格有一个成本值,表示该位置被占用的可能性或通过的危险程度。02成本值含义详细解释不同成本值的含义,如0表示自由空间,1-127表示肯定不在碰撞中但靠近障碍物成本高,128-252表示可能在碰撞中,253-254表示致命障碍物。03作用阐述为规划器提供代价信息,指导路径选择,确保机器人安全、高效地移动。costmap_2d的层级结构(LayeredCostmap)各层介绍包括静态地图层、障碍物层、膨胀层和其他可自定义层,各层叠加形成最终的costmap。教学讲解重点强调这三层叠加的作用,以及如何通过它们实现对环境的准确感知和路径规划。0102核心组件2——move_base(导航指挥官)角色定位作为导航堆栈的中央控制器,协调全局和局部规划。功能介绍接收目标、管理costmap、调用规划器计算路径和速度指令、检测故障并执行恢复行为等。move_base的恢复行为(RecoveryBehaviors)当机器人被障碍物卡住,无法规划路径时,启动恢复行为。应用场景包括保守清除、原地旋转和激进清除等行为,让机器人在被困时有机会“自救”。默认行为链解释这些行为的作用和原理,帮助学生理解机器人在复杂环境中的应对策略。教学讲解要点核心组件3——amcl(自适应蒙特卡洛定位)定义说明基于粒子滤波的定位系统,用粒子估计机器人的位置和姿态。工作原理包括初始化、预测、更新和重采样等步骤,通过不断调整粒子的权重和位置,实现对机器人位姿的准确估计。关键输出输出`map`->`odom`的坐标变换,修正里程计的漂移。里程计定位vsAMCL定位(图6-12解析)里程计定位特点仅靠轮子编码器,误差随时间累积,漂移严重。AMCL定位优势结合里程计和激光雷达与地图的匹配,持续修正位姿,将机器人“拉回”地图中的正确位置。配图解释详细解释教材图6-12,直观展示两者的差异。核心组件4——gmapping(激光SLAM建图)定义说明基于粒子滤波的2D激光SLAM算法,用于构建栅格地图。工作原理简述每个粒子维护位姿估计和地图,根据激光扫描更新地图,选出最可能正确的粒子及其地图。输入输出输入激光扫描、里程计和必要tf,输出栅格地图。坐标系变换(tf)在导航中的角色必须存在的tf关系包括`map`->`odom`、`odom`->`base_link`和`base_link`->`laser_link`等关系,分别由不同节点发布。数据流说明解释AMCL如何根据相关变换和激光数据计算`map`->`odom`的变换,以及tf树在数据转换中的作用。传感器消息类型`sensor_msgs/LaserScan`单线激光雷达数据,包含角度范围、角度分辨率、距离数组等信息。`sensor_msgs/PointCloud`/`PointCloud2`点云数据,用于3D传感器,为导航系统提供更丰富的环境信息。本节小结——导航组件关系图总结图展示用一张图串联所有组件,清晰展示建图、定位和导航阶段各组件的关系和数据流。流程说明包括`gmapping`生成静态地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《AQ 3067-2026 化工和危险化学品生产经营企业重大生产安全事故隐患判定准则》解读课件
- 2025-2026学年黑龙江省双鸭山市高三考前热身历史试卷含解析
- 2025年智能城市建设报告
- 工业互联网平台在2025年智能制造服务领域的应用可行性研究
- 循证康复实践中的康复-团队创新
- 2026年虚拟现实社交平台报告
- 2026年智慧零售物联网数据分析行业报告
- 2025年生物科技行业前沿创新报告及未来五至十年发展报告
- 康复评估的循证康复循证实践提升
- 康复医院运营效率成本提升方案
- 2025年山西省高考理科试卷及答案
- 泵站改造工程设计方案指南
- 滑坡地质灾害防治工程设计方案
- 组装电脑合同协议
- 三级动火安全技术措施方案
- 第二类医疗器械经营备案企业质量管理制度、工作程序目录
- 水下工程潜水施工潜水员安全操作规程
- 消化道出血护理查房课件(完整版)
- MDR革兰阴性杆菌感染-从经验到目标治疗的精准化
- 苏州2025年江苏苏州市卫生健康委员会直属事业单位招聘卫生专业技术人员50人笔试历年参考题库附带答案详解
- 【MOOC】《学术交流英语》(东南大学)章节中国大学慕课答案
评论
0/150
提交评论