智能终端应用开发基础 课件 第8-14章 ROS简介与基础 -多机器人系统综合应用_第1页
智能终端应用开发基础 课件 第8-14章 ROS简介与基础 -多机器人系统综合应用_第2页
智能终端应用开发基础 课件 第8-14章 ROS简介与基础 -多机器人系统综合应用_第3页
智能终端应用开发基础 课件 第8-14章 ROS简介与基础 -多机器人系统综合应用_第4页
智能终端应用开发基础 课件 第8-14章 ROS简介与基础 -多机器人系统综合应用_第5页
已阅读5页,还剩194页未读 继续免费阅读

下载本文档

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

文档简介

第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工具可以在不重启系统的情况下,动态配置ROS系统中的参数,但是该功能的使用需要在代码中设置参数的相关属性。工具启动:使用rosrunrqt_reconfigurerqt_reconfigure命令启动工具后,在界面中输入框、滑动条或下拉框进行设置即可实现参数的动态配置。参数动态配置工具05RViz三维可视化工具RViz安装与启动01RViz已集成于ROS桌面完整版,安装ROS即享。安装命令是sudoapt-getinstallros-melodic-RViz,启动是roscore后rosrunRVizRViz。RViz主界面布局02启动成功的RViz主界面包含0:3D视图区,用于可视化显示数据;1:工具栏,提供视角控制、目标设置、发布地点等工具;3:显示项列表。界面区域功能详解03显示当前选择的显示插件,可以配置每个插件的属性;3:视角设置区,可以选择多种观测视角;4:时间显示区,显示当前的系统时间和ROS时间。安装并运行RViz添加完成后,RViz左侧列出已添加插件;点击插件列表前加号展开属性列表,按需求设置。重要属性为“Topic”,声明订阅来源,成功订阅后中间区显示数据。如果显示有问题,请检查属性区域的“Status”状态。Status有四种状态,如果显示的状态不是OK,那么请查看错误信息,并详细检查数据发布是否正常。点击RViz界面左侧下方的“Add”按键,罗列默认支持的所有数据类型显示插件。在列表中选择需要的数据类型插件,然后在“DisplayName”里填入名称。数据以适当的消息类型被发布之后,可在RViz中进行数据可视化。通过选择相应的RViz插件来订阅这些消息,即可直观地展示数据。检查与调试添加显示数据插件配置插件属性数据可视化准备数据可视化RViz默认数据展示:RViz作为三维可视化平台,默认支持坐标轴、摄像头图像、地图、激光等多种类型数据的展示,为用户提供了丰富的可视化选项。插件扩展机制:默认可以显示的数据不仅仅如此。支持插件扩展机制,以上数据的显示都基于默认提供的相应插件。编写插件的形式进行添加。插件扩展机制感谢您的观看与聆听第10章

机器人平台技术与应用Contents01.机器人定义与组成02.激光雷达03.深度相机04.机器人教学平台介绍05.运行机器人01机器人定义与组成机器人定义机器人是自动执行工作的机器装置,可受人类指挥、运行预设程序或遵循AI原则行动,协助或取代人类工作,如生产、建筑及危险作业。机器人协会定义机器人为可编程序操作器,用于搬运材料、零件、工具,或通过改变程序动作完成各种作业的特殊机械装置。科学家定义机器人为自动化机器,具有与人或生物相似的智能能力,如感知、规划、动作和协同,是一种具有高级灵活性的自动化机器。国际标准组织描述机器人为动作机构似人或其他生物体,通用性强,工作多样,动作程序灵活,具智能性如记忆、感知等,可独立工作。数字化、云计算和AI技术进展推动机器人应用扩展,下一代机器人将涵盖更广泛概念,如无人驾驶汽车、智能家电等,都将会机器人化。机器人协会定义国际标准定义机器人定义展望科学家定义机器人定义控制系统控制系统基于处理器(如ARM、x86)实现任务处理、输出控制命令,相当于人的大脑,完成算法、关节控制、人机交互等功能。传感系统传感系统包括内外两部分,相当于人体感官和神经,内部包括里程计、陀螺仪等,外部包括摄像头、红外等环境检测传感器。驱动系统驱动系统驱动执行机构,转换控制命令为执行机构信号,如直流电机用PWM驱动板,伺服需专业驱动器,工业常用气压液压。执行机构执行机构是直接面向工作对象的机械装置,相当于人体的手和脚。根据不同的工作对象,适用的执行机构也各不相同。机器人组成02激光雷达测距原理01激光雷达通过发射激光束并接收目标回波,对比发射与回波信号,经处理后获取目标距离、方位、高度、速度、姿态及形状等参数,实现探测、跟踪和识别。三角测距法02三角测距法通过激光器和CCD接收器的配合,利用光学路径和三角公式计算被测物体距离。随着目标距离的变化,反射光在CCD上成像位置也不同。TOF飞行时间测距03TOF测距法通过记录激光脉冲的发射和回返时间差,结合光速计算距离。该方法无需复杂运算,实时性高,适用于长距离测量,对环境光影响小。激光雷达简介角度分辨率决定激光雷达一次完整扫描能返回多少个样本点,直接影响其空间感知能力。样本点越多,对环境的描绘越细致,能提供更多的空间信息。可视范围是激光雷达完整扫描的广角,定义了其有效探测和感知的范围。范围外为盲区,超出此区域的目标可能无法被雷达探测到,影响感知性能。扫描频率反映激光雷达完成一次完整扫描的速度,通常在10Hz及以上。频率越高,意味着雷达能更快获取周围环境信息,适用于需要实时响应的应用场景。测距分辨率衡量激光雷达在特定距离下的测距精确程度,通常与真实值相差5-20mm。该指标越高,表示雷达对距离变化的感知越敏感,定位能力越强。可视范围扫描频率角度分辨率测距分辨率激光雷达参数03深度相机深度相机应用:通过三维坐标还原真实场景,实现精准的场景建模和识别。在机器视觉、自动驾驶等前沿技术应用中发挥着不可或缺的作用,推动技术的持续发展。深度相机功能:普通彩色相机捕捉视角内物体,但不测量距离;深度相机则提供每个点到摄像头的距离,结合2D坐标,可确定图像中每点的三维空间坐标。深度相机简介通过近红外激光器投射结构光到物体上,红外摄像头采集反射光信息,运算单元处理结构变化得深度信息,构建三维结构,光源为不可见红外激光。结构光深度相机双目立体视觉通过左右相机捕捉图像,计算视差获取三维信息,成本低,室内外适用,但对环境光、纹理、计算复杂度高,且基线限制测量范围。双目立体视觉通过发射激光脉冲并检测反射光相位偏移,计算目标物距离,检测距离远、受环境光干扰小,但对设备要求高、资源消耗大、边缘精度低。TOF深度相机深度相机分类04机器人教学平台介绍供电系统机器人采用专用电源板,支持多电压输出,为底盘、机械臂及传感器模块稳定供电,确保机器人高效、持续工作。接口扩展性通过USB接口连接激光雷达、高清相机等模块,Nano主控配备USB3.0HUB,实现接口扩展,满足多样化传感需求。控制器配置配备NvidiaJetsonNano作为ROS主控制器,底盘与机械臂拥有独立控制器,实现高效协同作业,确保机器人运行流畅。模块化设计Abot机器人采用模块化设计理念,底盘与机械臂实现相对独立,便于单独控制与维护,提升了机器人的灵活性与扩展性。硬件框架

ROS控制器采用JetsonNano作为ROS节点控制器,运行Ubuntu18.04withJetPack系统,并安装Melodic版本的ROS机器人操作系统。底盘控制器OpenCRP机器人运动控制器以STM32F103为核心,集成IMU传感器,支持4路直流电机闭环控制,便于USB软件升级。激光雷达塔克T1激光雷达经过优化,专为ROS机器人设计,具备高测量频率和精度,适用于家庭、实验室等环境,光磁融合供电通信。核心组件说明专用电源板提供12V、7.2V和5V电源输出,满足机器人不同模块需求,方便用户进行功能扩展与升级。电源接口机器人对激光雷达和机械臂的USB通讯与控制端口进行了绑定,确保数据通信的准确性和稳定性,提升整体运行效率。USB端口核心组件说明集成1080PRGB相机与深度感知功能,配备双立体声麦克风及高端ISP芯片,支持环境光调节,优化图像质量,适合机器人视觉处理。深度相机机械臂末端配备1080P高清摄像头,具备120°广角与UVC免驱功能,支持语音识别,并配备云台实现手动调节视角。摄像头配备6自由度机械臂,采用高精度舵机与金属齿轮传动,结合进口双滚珠轴承和CNC铝合金中壳,确保长久稳定运行。机械臂核心组件说明05运行机器人ROS分布式协同01由于ROS具有分布式的特性,所以我们可以在多台计算机上进行协同工作,前提是已经在计算机上配置好了环境变量ROS_MASTER_URI。ROS_MASTER_URI配置02ROS_MASTER_URI的值为运行ROSMASTER计算机的IP地址,必须将所有要协同工作的计算机的ROS_MASTER_URI设为相同的值。ROS_IP配置03除ROS_MASTER_URI外,还要配置环境变量ROS_IP为本机的IP地址,机器人的配置机器人上的环境变量默认已经配置完毕,配置都已写入~/.bashrc文件中。配置环境变量ROS_IP自动检测:此处ROS_IP的配置为自动检测IP地址,并且将ROS_IP作为ROS_MASTER_URI,当用户打开终端时,终端中会显示配置好的环境变量。建议手动设置IP:建议将机器人的IP地址配置为手动(本例设置为192.168.31.101),这样我们机器人的IP地址就不会每次都变化,我们的其他电脑也不需要再重新配置环境变量了。PC虚拟机配置:修改PC虚拟机的环境变量,修改的内容与机器人类似,我们需要做的就是把ROS_MASTER_URI修改为机器人的IP地址,~/.bashrc文件中的ROBOT_IP环境变量即为机器人IP。更新环境变量配置:执行下面的命令来更新我们的配置,,更新并应用环境变量更改,确保系统配置的一致性。配置环境变量Ssh远程连接ssh远程连接可以让我们在终端中直接登陆上远程机器的系统,输入以下命令来连接到机器人(将IP地址替换为自己的地址),<table><tr><td>sshxtark@192.168.31.101</td></tr></table>。Ssh命令别名如果上一节的ROBOT_IP已经配置好,我们也可以使用一个ssh命令的别名来连接到机器人,此别名设置如下图,首次连接会有如下提示,我们输入yes并按回车继续进行。Ssh登录远程机接下来ssh提示我们需要输入远程机器人的用户密码,我们输入密码(此机器人用户名和密码默认都是xtark)按下回车即可登录到远程机器,登录后终端等同直接在机器人上执行。远程连接机器人Ssh断开连接想要从此终端断开与远程机器的连接,则只需要在终端中按下Ctrl+D即可断开,Sssh远程连接是控制远程机器人系统的直接方式,允许在终端中直接输入命令,这些命令会在机器人上执行。Vnc远程桌面对于大多数应用场景来说是不方便的,如果我们需要用到ROS机器人的图形界面时怎么办呢?可以采用远程桌面连接的方式进行远程连接机器人的图形界面。Vnc连接远程机在Linux下内置的VNC服务是较为方便的,所以我们采用VNC协议进行连接,VNC远程软件,在Linux下我们采用Ubuntu内置的Remmina,在Windows下我们采用免费的VNCViewer。远程连接机器人Vnc连接实例以VNCViewer为例,连接步骤如下图,确保机器人与我们PC在同一局域网下且已经配置好IP即可开始连接,机器人VNC服务器登录账号为xtark,密码为xtark。Vnc新建连接新建连接,输入IP地址和VNC主机名称(用户自定义),单击OK按钮,输入机器人VNC密码,点击确定即可连接到机器人远程桌面。远程连接机器人ROS节点列表:在PC虚拟机上执行rosnodelist-a命令后,成功看到rosout节点以及运行此节点的主机地址为机器人的主机地址,证明我们已经配置好了ROS的环境变量。Ssh连机器人:首先我们用ssh连接到机器人,然后打开一个终端并运行roscore,如图10-28所示roscore是ROS的根节点,它初始化并管理整个ROS系统。验证配置要点三控制节点原理运行原理非常简单,机器人内置了底盘驱动节点,存放在xtark_driver功能包中,节点名称也叫xtark_driver,此节点通过订阅话题,cmd_vel来获取控制底盘移动的命令。要点一要点二控制底盘移动话题的消息类型为geometry/Twist,此消息类型为两个三维向量,分别控制底盘的线速度和角速度,详细内容如图10-30所示。想要控制机器人移动,只需要向此话题发布Twist类型的消息即可。键盘控制节点robot内置了通过键盘来发布消息的节点,存放在xtark_ctl包中,名称为xtark_twist_keyboard.py,此外这个功能包中还有一个launch文件,xtark_bringup_keyboard.launch。要点三键盘控制机器人移动键盘控制机器人移动Launch文件内容:可以帮我们集成启动底盘驱动节点和键盘控制节点,此文件内容如图10-31所示,我们只需要运行此launch文件即可用键盘来控制底盘移动。远程控制机器人:因为机器人会到处乱跑,所以我们最好是以远程的方式控制它,首先回到自己的虚拟机上执行ssh命令连接到机器人例如。连接机器人:输入正确的密码后,输出内容提示我们已经连接上了机器人系统,可以开始通过键盘控制节点的运行来远程操控机器人移动了。键盘控制机器人:运行launch文件后看到提示按下对应键即可控制机器人运动如图10-33所示robot运动键盘控制键是方便用户通过键盘上的特定按键来直接控制机器人的运动方向。感谢您的观看与聆听第11章

SLAM建图与自主导航Contents01.引言02.基础理论04.SLAM建图03.准备工作05.amcl功能包与代价地图的配置06.机器人导航实践07.多点连续导航01引言室内机器人定位导航挑战服务型室内移动机器人面临地图构建、定位和路径规划等挑战,需解决精度、稳定性和实时性问题。机器人技术瓶颈室内机器人需实现实时地图更新、准确定位和实时路径规划,以满足快速响应和高效导航的需求。实时性与准确性室内环境复杂多变,光照、障碍物等影响机器人感知和决策,需提升机器人环境适应性和鲁棒性。室内环境复杂性123SLAM通过实时感知环境并构建地图,实现机器人在无GPS信号或先验信息缺失环境中的自主定位与导航。SLAM技术优势SLAM技术从军事领域拓展至扫地机器人、无人机等民用领域,成为智能系统实现自主导航的关键技术。技术应用广泛科研人员持续优化SLAM算法,提升其精度、鲁棒性和实时性,推动相关应用向更广泛领域渗透。算法不断优化SLAM技术崛起及应用03未来展望随着技术不断发展,基于ROS的机器人SLAM与导航技术将更加成熟,为机器人技术的广泛应用奠定基础。01ROS功能包ROS提供了如gmapping、hector_slam、cartographer等功能包,简化了机器人的SLAM和导航开发。02实践项目通过具体项目实践,如使用ROS实现机器人的实时地图构建与自主导航,可深化对理论知识的理解与应用。ROS机器人SLAM与导航实践02基础理论0102SLAM核心概念SLAM,即时定位与地图构建,驱动机器人未知环境自主探索。机器人边移动边构建地图,持续定位自身,实现智能导航与路径规划。盲人比喻借盲人探索比喻SLAM,盲人伸手探测障碍,移动校正地图与位置,体现SLAM核心,机器人亦如此,不断感知、定位、建图,实现自主导航。盲人感知局限盲人探索环境,感知有限,会存在误差,他根据确定程度为障碍物设置概率值,概率越大,障碍物可能性越高,体现SLAM探索的局限性。应用场景家庭、商场、车站等室内场所是室内机器人的主要应用场景,在这些应用中,用户需要机器人通过移动完成某些任务,这就需要机器人具备自主移动、定位的功能。自主导航自主导航与SLAM紧密相连,SLAM生成的地图是机器人移动的蓝图,引导机器人精准定位,规划最优路径,避开障碍物,实现高效、智能的自主移动。030405SLAM简介深度信息获取01机器人SLAM与自主导航的关键在于感知周围环境,特别是深度信息,用于探测障碍物距离。激光雷达、摄像头和RGB-D摄像头是获取深度信息的三种主要传感器。激光雷达02激光雷达是研究最多、使用最成熟的深度传感器,提供精确的距离信息,用于扫地机器人等。其优点是精度高、响应快、数据量小,适合实时SLAM;缺点是成本高。RGB-D摄像头03RGB-D摄像头融合了RGB图像和深度信息,适用于SLAM、图像处理和物体识别。其成本较低,但存在测量视野窄、盲区大和噪声大等缺点,是室内服务机器人的主流方案。传感器简介激光雷达通过发射接收激光束,实现3D扫描,获取周围环境深度信息。机器人利用这些数据实现精准避障,确保在复杂环境中稳定运行。3D扫描与避障在室内定位与建图方面,激光雷达具有显著优势;它为机器人提供精确的环境数据,支持实时地图构建与定位,是实现智能导航的关键技术。室内定位与建图尽管激光雷达具有高精度和稳定性,但成本较高;因此,在选用时需综合考虑性能与成本,选择性价比优的产品,以满足不同应用场景的需求。性能与成本考量激光雷达单目摄像头:单目摄像头以一个摄像头完成SLAM任务,具有传感器简单、适用性强的特点;但实现过程复杂,且在静止状态下无法测量距离,需依赖运动状态下的三角测量原理。双目摄像头:双目摄像头通过两个摄像头协同工作,实现距离信息的感知,无论在运动或静止状态下均能进行有效测量;然而,两个摄像头的精确标定较为复杂,且图像数据量大导致运算量大。摄像头室内应用主流:RGB-D摄像头因其成本低廉且性能稳定,成为室内服务机器人的首选传感器方案;然而,其测量视野相对较窄,且存在盲区和噪声问题,需在实际应用中加以注意。融合感知技术:RGB-D摄像头通过融合RGB图像与深度信息,实现环境的三维重建与深度感知。其独特优势在于能够精准识别物体位置与姿态,为SLAM提供强有力的支持。RGB-D摄像头03准备工作环境深度信息无论是SLAM还是自主导航,获取周围环境的深度信息都是至关重要的。要获取深度信息,首先要清楚ROS中的深度信息是如何表示的。激光雷达扫描数据针对激光雷达,ROS在sensor_msgs包中定义了专用数据结构——LaserScan,用于存储激光消息。LaserScan消息的具体定义如下图所示。雷达驱动与launch文件机器人教学平台的激光雷达节点,可视化机器人的激光雷达发布的数据,机器人的雷达驱动launch文件存放在xtark_driver功能包中。传感器信息启动雷达驱动节点远程连接机器人,启动此launch文件,将雷达驱动起来,然后在PC端(注意,非机器人端)启动RViz,按照添加雷达数据的话题。固定帧修改与显示添加完成后,按将GlobalOptions里的FixedFrame修改为laser,即可在三维界面中看到我们的雷达扫描出的环境深度信息数据。里程计信息里程计根据传感器获取的数据来估计机器人随时间发生的位置变化,在机器人平台中,较为常见的里程计是编码器,例如,机器人驱动轮配备的旋转编码器。传感器信息机器人当前的运动状态,包括x、y、z三轴的线速度与角速度,以及用于校正误差的协方差矩阵。上述数据结构中,除速度与位置的关键信息外。在精度要求不高的机器人系统中,可以使用默认的协方差矩阵;而在精度要求较高的系统中,需要先对机器人精确建模后,再通过仿真。机器人能够发布里程计nav_msgs/Odometry消息,如图11-11所示,包含机器人在自由空间中的位置和速度估算值,pose为机器人当前位置坐标。机器人移动时,编码器测量轮子旋转圈数;知周长,可算速度与距离。里程计通过速度积分求位置,对误差敏感,需精确采集、标定、滤波等措施。精度需求与协方差矩阵导航功能包要求twist编码器测量轮距传感器信息里程计数据估计里程计根据传感器数据估计机器人位置变化,常见里程计为编码器;通过测量轮子旋转圈数和周长,可计算机器人速度和移动距离。深度信息获取无论是SLAM还是自主导航,获取周围环境的深度信息都是至关重要的;要获取深度信息,首先要清楚ROS中的深度信息是如何表示的。LaserScan消息定义LaserScan消息定义包含角度、时间、距离等信息,用于存储激光雷达扫描数据;angle_min和angle_max定义可检测范围。激光雷达数据采集运行机器人教学平台的激光雷达节点,并启动相应的launch文件,可在RViz中可视化激光雷达扫描的环境深度信息数据。环境深度信息数据采集与标定01里程计根据传感器获取的数据来估计机器人随时间发生的位置变化,在机器人平台中,较为常见的里程计是编码器,例如,机器人驱动轮配备的旋转编码器。发布Odometry消息02导航功能包要求机器人能够发布nav_msgs/Odometry消息,包含机器人在自由空间中的位置和速度估算值,以及用于校正误差的协方差矩阵。精度需求与矩阵设定03在精度要求不高的机器人系统中,可以使用默认的协方差矩阵;而在精度要求较高的系统中,需要先对机器人精确建模后,再通过仿真、实验等方法确定。里程计信息04SLAM建图gmapping优缺点gmapping实时构建室内地图,适用于小场景,对激光雷达频率要求低且鲁棒性强。相比Cartographer,gmapping计算量小、精度相当且能利用里程计信息,但构建大地图时受内存和计算量限制,且无回环检测可能导致地图错位。gmapping功能包gmapping功能包采用Rao-Blackwellized粒子滤波算法,订阅深度信息、IMU和里程计,配置参数后输出二维栅格地图。支持的话题和服务包括地图数据发布、坐标变换及动态地图获取,同时提供丰富的配置参数以满足不同应用需求。gmapping建图流程在机器人中启动gmapping建图,需发送SSH命令以远程连接机器人并执行建图文件。该过程包括启动键盘控制节点以手动控制机器人移动,同时在PC上启动RViz并加载配置文件以实时查看地图。建图完成后,使用map_saver节点保存地图。gmappinghector-slam的优点在于无需里程计,适应空中无人机及地面小车在不平坦区域建图,通过高斯牛顿方法优化激光点阵,实现精准映射。但依赖于高频率、低噪声雷达,且建图效果受速度影响,无法有效利用精确里程计信息,存在局限性。hector_slam的核心是hector_mapping节点,订阅激光数据/scan并发布构建的地图及机器人位姿话题。支持的话题包括激光扫描数据、系统命令等,发布的话题有地图Meta数据、栅格地图、机器人位姿等,同时提供服务动态获取地图数据。在机器人中启动hector建图需发送SSH命令以远程连接机器人并执行建图文件,同时启动键盘控制节点以低速控制机器人移动。在虚拟机上启动RViz并加载配置文件以查看建图过程,建图完成后使用map_saver保存地图,并关闭相关节点。hector优缺点hector功能包hector建图流程hector-slamcartographer的优缺点采用基于图网络的优化方法,占用计算资源少,能有效避免建图中移动物体的干扰,并支持大环境。但相较于其他SLAM算法,它占用内存较大,需要考虑到资源消耗问题,在资源受限的环境下需谨慎使用。cartographer功能包需要源码编译安装,将创建一个工作空间catkin_google_ws并下载源码编译。为避免冲突,已安装人员可跳过。安装涉及更新、初始化、合并ROS安装、编译及设置环境变量等步骤,确保所有依赖正确安装。在机器人中使用cartographer在机器人教学平台中,启动cartographer建图算法需发送SSH命令连接机器人并执行集成启动文件。该文件启动了必要的底层驱动和cartographer算法节点。通过虚拟机中的键盘控制节点和RViz进行建图操作。cartographer05amcl功能包与代价地图的配置amcl支持灵活配置,通过调整粒子数、误差界限、更新间隔等参数,可以根据具体应用场景优化定位性能,同时提供初始化姿态、激光模型和里程计模型等高级配置选项。amcl与里程计同为机器人定位工具,里程计依赖连续运动数据定位,而amcl通过匹配激光扫描实现定位,两者结合使用,可以互补优缺点,提升机器人定位的稳定性和准确性。订阅激光雷达、TF变换和地图数据,发布机器人在地图中的位姿估计及粒子云,提供全局定位服务,并通过服务调用实现地图获取和恢复操作,灵活应对不同定位需求。amcl功能包提供自适应蒙特卡罗定位方法,通过粒子滤波器在地图中跟踪机器人姿态,实现自主定位。这种方法基于概率统计,能处理机器人任意状态下的定位问题。里程计与amclamcl话题服务amcl配置参数amcl定位方法amcl功能包本地规划配置文件为本地代价地图提供宽度、高度、分辨率等参数,这些参数适用于局部路径规划和实时避障,确保机器人在复杂环境中能够灵活导航。代价地图配置导航功能包使用代价地图来存储环境障碍信息,通过配置文件设置地图参数,如更新频率、发布频率、静态地图等,以适应不同的导航需求。通用配置文件定义共用的代价地图参数,如障碍物范围、射线追踪范围、机器人足迹、膨胀半径等,这些参数确保了代价地图能够准确地反映环境障碍信息。全局规划配置文件针对全局代价地图,设置参考系、更新频率、是否静态地图等参数,这些参数有助于规划全局路径,实现高效、准确的全局导航。代价地图的配置06机器人导航实践远程连接:通过安全的SSH协议远程连接至机器人,确保实时操作与监控的无界限,为导航任务奠定坚实基础。地图准备:启动机器人激光雷达节点,利用RViz三维可视化工具实时查看并确认雷达扫描到的环境深度信息,为后续导航任务提供精准地图支持。远程链接与地图准备远程连接到机器人,启动gmapping建图文件的集成文件,该文件包含所有gmapping建图所需的节点和配置,用于生成室内地图。启动gmapping启动hector_mapping建图算法的集成文件,该文件包含必要的节点和配置,用于构建地图,适用于空中无人机及地面小车等特殊平台。启动hector启动cartographer建图算法的集成文件,该文件包含所有cartographer建图所需的节点和配置,实现实时高精度2D地图构建。启动cartographer启动导航集成文件RViz可视化与标定坐标变换标定:利用RViz中的工具和功能,对激光雷达坐标系与机器人基坐标系、里程计坐标系之间的变换进行精确标定,确保导航信息的准确无误。RViz配置:在虚拟机上启动RViz,并加载事先准备好的RViz配置文件,该文件包含固定视角、话题订阅等设置,确保三维可视化界面的准确性和实用性。自动避障:机器人通过超声波传感器或激光雷达实时检测到障碍物,并能够自主规划路径,绕开障碍物继续前行,实现智能自主的移动。精度测试:通过模拟复杂环境,在地图上设置随机分布的障碍物,测试机器人在导航过程中的定位精度和路径规划能力,确保其在真实环境中的可靠运行。机器人自动避障导航07多点连续导航导航框架01机器人导航核心在于精准定位与高效路径规划。ROS导航框架集成amcl定位与move_base规划,实现实时避障与智能导航,部署简便,性能卓越。传感器信息02导航功能包需机器人定期发布激光扫描或点云数据,实时感知周边环境。同时,发布里程计信息及TF变换,确保定位准确性与地图更新及时性。控制指令03导航功能包的输出是geometry_msgs/Twist格式的控制指令,这就要求机器人控制节点具备解析控制指令中线速度、角速度的能力,控机器人运动。单点导航基础目标位置机器人导航功能强大,支持多点连续导航。通过逐个设定目标位置,机器人能够自动规划路径,实现多地点间的高效、自主导航,无间断运行。实时更新在执行连续导航任务时,机器人能够根据实时感知的环境信息,灵活调整行驶路线,有效避开障碍物,确保了导航过程的顺畅与安全。状态监控通过远程终端,用户可实时监控机器人状态与导航进度。利用amcl的精确定位能力,用户能准确掌握机器人的位置与运行轨迹,确保任务执行无误。多点连续导航操作RViz配置RViz作为3D可视化工具,在机器人导航中扮演关键角色。通过配置全局与局部成本地图的显示参数,包括透明度、高度等,可直观展现机器人的运行环境与障碍物分布。启动与加载启动RViz后,加载事先准备好的配置文件(.rviz或.config文件),该文件包含了所有必要的视图设置、数据订阅与交互配置,确保了RViz界面与用户需求的一致性。交互操作利用RViz的2D/3D视图功能,对机器人进行远程监控与操控。通过调整视角、缩放画面,实时掌握机器人动态,实现远程操作的直观与便捷,提升用户体验。RViz工具应用感谢您的观看与聆听第12章

机器人视觉01.摄像头标定02.OpenCV图像处理示例03.二维码识别04.视觉目标追踪机器人视觉05.深度相机与VSLAM06.RTAB-SLAM三维建图01摄像头标定误差避免:在机器人视觉应用中,摄像头标定至关重要,它不仅关乎图像的清晰度,更直接影响物体识别的准确性和三维重建的精度,忽略标定或标定不精准都可能导致严重误差。摄像头标定:摄像头标定是矫正图像畸变的关键步骤,通过精确识别摄像头内部参数和畸变系数,可以有效消除拍摄过程中产生的几何和光学畸变,从而提升图像质量。摄像头标定与误差避免安装准备在ROS环境下,进行摄像头标定前,需确保已安装相应的功能包,如“camera_calibration”,该包提供了双目及单目摄像头标定的工具,支持多种标定板模式。ROS摄像头标定功能包启动深度相机:通过roslaunch命令启动深度相机节点,例如xtark_depthcamera.launch,并在RViz中添加三维点云显示,配置话题/camera/depth_registered/points。点云数据解析:点云数据使用sensor_msgs/PointCloud2消息类型传输,包含高度、宽度、字段、大小端顺序、点步长、行步长及数据数组等字段,支持高效存储与处理。深度摄像头捕获三维点云02OpenCV图像处理示例OpenCV图像处理示例涵盖Camshift追踪、凸多边形检测、离散傅里叶变换等,功能强大,轻松应对复杂视觉挑战。图像处理核心图像金字塔采样、相位相关位移检测、RGB颜色空间滤波、前景物体检测、图像平滑、阈值滤波等,助力精准图像分析。图像分析与处理边缘检测、人脸识别、光流计算、轮廓提取、特征追踪、颜色空间滤波、圆环与直线检测、人体识别等,一应俱全。视觉算法大全OpenCV图像处理功能清单人脸检测流程01首先通过ssh远程连接到机器人,启动机器人摄像头驱动launch文件,命令如下,roslaunchxtark_driverxtark_camera.launch。人脸识别启动02然后再新建一个终端,ssh远程连接到机器人启动人脸识别launch文件,命令如下,roslaunchxtark_opencvxtark_face_detection.launch。查看识别结果03最后再打开一个终端,在虚拟机上运行rqt_image_view图像查看节点,rosrunrqt_image_viewrqt_image_view,并选择对应的话题。人脸检测示例03二维码识别ar_track_alvar具备高效标签识别能力,速度不受标签数量增加的影响,同时自动计算标签间空间关系,无需手动测量和输入。功能包在机器人定位、导航、增强现实(AR)应用等领域具有广泛应用,能够提供精确的二维码识别和跟踪服务。功能包能识别多标签捆绑包,通过光流跟踪实现稳定姿态估计,支持自适应阈值处理,确保在各种照明条件下稳定运行。ar_track_alvar是ROS中用于二维码识别的功能包,能够生成不同大小、分辨率和编码的AR标签,并识别跟踪这些标签的姿态。ar_track_alvar应用ar_track_alvar特点ar_track_alvar优势ar_track_alvar介绍识别功能包创建二维码标签参数:createMarker工具提供了灵活的参数配置,不仅支持数字标号,还允许使用字符串、文件名、网址等作为标签编码,同时允许设置二维码尺寸。创建二维码标签:使用rosrun命令的ar_track_alvarcreateMarker工具,结合源码地址,可以轻松创建带有特定标号的二维码AR标签,并保存在当前目录下。生成二维码标签通过执行roslaunch命令启动机器人上的二维码识别程序,该程序包含在xtark_ar_track功能包中,并已配置好相机参数,实现快速识别。启动二维码识别程序在虚拟机中运行RViz可视化工具,并加载二维码识别的配置文件(如xtark_ar_track.RViz),以查看机器人摄像头捕捉到的实时图像。运行RViz查看图像在RViz界面中,当二维码标签进入摄像头视野时,ar_track_alvar功能包将识别并显示带有坐标轴的二维码图像,表明二维码的姿态已被准确识别。二维码识别结果摄像头识别二维码04视觉目标追踪KCF算法介绍KCF,全称为KernelCorrelationFilter,核相关滤波算法,在2014年由JoaoF.Henriques等人提出,以卓越的跟踪效果和速度轰动学术与工业界。KCF是一种高效的判别式跟踪算法,通过训练目标检测器,在跟踪过程中实时检测目标位置,并利用新检测结果更新训练集以优化目标检测器。采用目标周围区域的循环矩阵采集正负样本,利用岭回归训练目标检测器,并成功将矩阵运算转化为向量的Hadamard积,大大降低了运算量。线性空间的岭回归通过核函数映射到非线性空间,在非线性空间通过求解一个对偶问题和某些常见的约束,同样的可以使用循环矩阵傅里叶空间对角化。KCF算法给出了一种将多通道数据有效融入该算法的途径,使得算法能够处理更丰富的目标特征,从而提升跟踪的准确性和鲁棒性。判别式跟踪方法核函数扩展多通道数据融合正负样本采集KCF算法简介利用KCF算法,可以轻松地跟踪任意物体。目标特征越明显,表面越平整,其跟踪效果就越好。例如,跟踪一个泡沫方块或手提箱,都能获得良好的效果。机器人将会利用深度相机来获取物体离机器人的距离,并利用KCF算法使物体保持在画面正中心,机器人将会跟物体保持1.5m左右距离跟踪物体运动。通过终端输入命令$roslaunchxtark_kcf_trackerxtark_kcf_tracker.launch,即可启动KCF跟踪算法,随后呈现清晰的摄像头实时画面。机器人教学平台中的xtark_kcf_tracker程序包提供了基于KCF的物体追踪功Demo。使用VNC远程连接机器人,并打开终端准备运行KCF算法。相机应用启动KCF跟踪算法跟踪效果远程连接KCF物体跟踪算法使用05深度相机与VSLAM深度相机模拟雷达:利用深度相机单行扫描数据模拟激光雷达,实现建图导航。这种方法能降低成本,增加应用灵活性,尤其适用于复杂或动态环境。SLAM建图与导航:通过远程连接机器人,使用gmapping或karto等算法进行slam建图,随后利用导航算法实现自主导航功能,显著提升机器人智能与自主能力。深度相机模拟激光雷达ORB_SLAM简介01RB-SLAM是Zaragoza大学开发的视觉SLAM系统,使用ORB特征,支持单目、双目和RGB-D相机。它包含视觉里程计、跟踪和回环检测,实现全稀疏特征点SLAM。ORB_SLAM优缺点02优点在于代码构造优秀,适合移植;采用g2o优化减少误差;DBOW减少计算量,回环匹配和重定位效果好;关键帧筛选提高追踪鲁棒性;提供详尽实验结果展示性能。机器人ORB-SLAM建图03通过SSH连接到机器人,运行xtark_ORBSLAM.launch启动ORB_SLAM。在虚拟机上打开RViz,加载xtark_orb.RViz配置文件查看算法界面。控制机器人移动进行建图。ORB_SLAMORB-SLAM2介绍:基于单目、双目和RGB-D相机的完整SLAM方案,实现地图重用、回环检测和重新定位。它采用光束法平差优化(BA)确保轨迹精确度,并包含轻量级定位模式追踪未建图区域。机器人ORB_SLAM2建图:通过VNC连接到机器人远程桌面,运行xtark_ORBSLAM2.launch启动ORB-SLAM2。程序打开两个窗口,显示视角图片和关键点地图。初始化后,机器人被精准定位。ORB_SLAM206RTAB-SLAM三维建图RTAB-MapROS节点需要输入TF、里程计和相机输入(RGB-D或双目图像),以及校准消息;可选输入包括2D或3D激光雷达扫描或点云。MapData包含最新添加的节点和Graph,而MapGraph是无数据的纯图;此外,还可输出TF矫正过的里程计、OctoMap、稠密点云地图和2D占用栅格地图。从2013年开始,RTAB-Map已经扩展到完整的基于图的SLAM方法,被用于各种设置和应用,因此RTAB-Map已经发展成为一个跨平台的独立C++库。RTAB-Map,全称为Real-TimeAppearance-BasedMapping,是一个用于基于外观的实时建图的开源库,能够通过内存管理方法实现回环检测。输出类型回环检测输入要求RTAB-Map定义RTAB-SLAM介绍0102建图配置文件机器人使用RTAB_SLAM算法进行建图,在建图中激光雷达数据是可选的,加上激光雷达数据后算法会更精准,效果更好。启动RTAB建图通过SSH连接到机器人,执行roslaunch命令启动RTAB-SLAM深度相机建图,若需融合激光雷达数据,需切换至对应launch文件。RTAB建图界面启动成功后在虚拟机端再打开一个终端,运行RViz可视化界面,并打开rtab_mapping.RViz配置文件,即可看到RTAB-SLAM算法建图界面。3D地图在虚拟机端运行键盘控制节点,可以控制机器人移动,从而建立场景的3D地图;同时RTAB-SLAM建图带有闭环修正环节,可以提高建图精度。保存地图当完成建图后可以直接按下Ctrl+C退出建图节点,算法将会自动保存地图(RTAB-SLAM算法地图保存为*.db格式,自动保存路径为~/.ros/rtabmap.db)。030405机器人RTAB建图导航配置文件机器人使用RTAB_SLAM算法进行导航,在导航中激光雷达数据是可选的,加上激光雷达数据后算法会更精准;单独利用深度相机的launch文件为xtark_RTABSLAM_Navigation.launch。启动RTAB导航通过SSH连接到机器人,执行roslaunch命令启动RTAB-SLAM导航程序(此处选择仅使用深度相机。若需融合激光雷达数据,需切换至对应launch文件并执行相应步骤)。RTAB导航界面启动成功后在虚拟机端再打开一个终端,运行RViz可视化界面,并载入xtark_rtabnav.RViz配置文件;载入后可以看到RTAB-SLAM导航界面,从而实时掌握机器人导航状态。机器人RTAB导航启动导航后,RTAB-SLAM算法可以自动匹配机器人当前位置,无需手动标定机器人位姿;同时默认3D地图存于机器人端,RViz需点击DownloadMap从机器人端下载并显示地图。3D地图同步在远程控制机器人时,确保网络连接稳定,通过下载并显示3D地图,使用RViz工具可指定目标点;同时机器人将自动规划路径并导航至指定目标点,实现精准控制与自主导航功能。远程控制机器人RTAB导航感谢您的观看与聆听第13章

语音功能介绍Contents01.语音识别框架02.TTS文字转语音03.配置语音识别功能包04.语音识别功能包05.总结与展望01语音识别框架麦克风阵列麦克风阵列是声场采样系统,关键组件为多个声学传感器。作用包括声源定位、噪声抑制、信号提取与分离,提升语音交互体验。声源定位利用麦克风阵列计算声源距离阵列的角度,基于TDOA实现对目标声源的跟踪。精准定位,助力高效语音交互与识别。信号提取与分离在期望方向上形成一个波束,仅拾取波束内的信号,从而达到同时提取声源和抑制噪声的目的。清晰拾音,降噪无忧。硬件介绍灯光控制平台支持设置主麦编号,并具备灯光点亮和关闭功能。操作简便,提升教室氛围与教学质量。智能管理,让教学更轻松。音频获取机器人教学平台通过麦克风阵列获取原始和降噪音频,并获取唤醒角度和主麦编号。设置灵活,满足多样化教学场景。教学平台麦克风教学平台采用平面式麦克风阵列,含6个麦克风,实现360度等效拾音,唤醒分辨率达1度。配置丰富,满足教学需求。混响去除麦克风阵列配合深度神经网络,有效去除混响,提升语音交互真实感与清晰度。技术革新,让声音更加自然悦耳。硬件介绍语音识别流程根据识别系统的类型选择能够满足要求的一种识别方法,并分析出这种识别所需的语音特征参数,作为标准模式存储起来。语音特征参数在专家知识库中进行判决,最佳匹配的参考模板即为识别结果。智能高效,精准识别,让语音交互更加顺畅。专家知识库判决选择要语音特征参数,将这些特征参数的时间序列构成测试模板,再将其与已存在的参考模板逐一比较,并进行测度估计。特征参数识别02TTS文字转语音03授权信息创建应用成功后,点击语音合成界面,记录下所创建应用的APPID、APISecret以及APIKey三个信息。01注册讯飞账号打开讯飞官网,注册并登录讯飞开放平台账号,进入语音合成界面。02创建应用在语音合成界面上,输入自定义应用信息,完成应用创建,并记录APPID、APISecret和APIKey。获取讯飞授权ID在xtark_audio.yaml文件中,根据实际需求调整音频相关参数,如采样率、比特深度等,确保与语音合成API兼容。配置完成后,保存对xtark_audio.yaml文件的修改,并确保文件路径和参数设置无误,随后退出VIM编辑器。将APPID,APIKey与APISecret参数引号中的值替换为用户所创建的语音合成应用的APPID,APIKey与APISecret值。通过SSH远程连接到机器人,切换到xtark_audio/config/路径下,利用VIM编辑器打开xtark_audio.yaml文件。保存并退出替换授权信息配置音频参数配置APPID配置xtark_audio功能包语音合成功能语音合成功能支持中文与英文,可以直接发布中文语句,机器人即可朗读中文语句,实现多种语言的语音合成与播放。启动语音合成通过SSH连接到机器人,启动语音合成launch启动文件,即输入命令$roslaunchxtark_audioxtark_tts.launch。查看话题列表新建一个终端,输入命令查看当前话题列表与话题消息类型,找到/speak话题及其消息类型std_msgs/String。发布语音数据在/speak话题上发布字符串类型数据,机器人即可合成相应语音并播放。例如直接用命令行发布‘Hello,world’字符串。运行xtark_audio功能包03配置语音识别功能包替换为离线资源:删除机器人默认离线语音资源,将讯飞SDK中的离线语音资源拷贝至机器人。确保语音资源与APPID匹配,提升识别准确性。下载离线SDK:在讯飞开放平台,找到已创建的应用,下载离线命令词识别的linuxSDK。下载完成后,得到一个压缩包,解压得到资源文件。下载SDK替换资源替换APPID:用VIM编辑器打开机器人存放APPID的文件,将APPID修改为自己在讯飞开放平台创建的应用APPID,确保语音识别的准确性。替换为自定义资源:将机器人中的离线语音资源和ID替换为自定义资源。这涉及删除默认资源,并拷贝下载的语音资源至指定路径。配置语音参数语音参数说明:语音参数包括唤醒词、录音时长、置信度阈值等,这些参数可以在config文件夹中的yaml文件中进行调整,以满足不同需求。用户参数配置:用户参数文件位于语音功能包的config

温馨提示

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

最新文档

评论

0/150

提交评论