智能机器人系统控制技术 课件 第8章 机器人软件系统_第1页
智能机器人系统控制技术 课件 第8章 机器人软件系统_第2页
智能机器人系统控制技术 课件 第8章 机器人软件系统_第3页
智能机器人系统控制技术 课件 第8章 机器人软件系统_第4页
智能机器人系统控制技术 课件 第8章 机器人软件系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第8章机器人软件系统基于ROS2的智能机器人软件开发教材第8章教学课件目录1机器人软件系统概述智能机器人软件系统的组成与架构2ROS系统介绍机器人操作系统的核心概念与特性3ROS2软件框架文件系统、计算图与开源社区4ROS2通信机制发布-订阅、服务与动作通信模型5ROS2常用组件开发工具与功能包详解6micro-ROS嵌入式开发资源受限设备的ROS2解决方案8.1机器人软件系统概述智能机器人软件系统的组成与架构智能机器人软件系统架构感知系统功能定位:获取外界环境信息,是机器人理解世界的"感官"核心组件:摄像头(视觉)、激光雷达(距离)、超声波(近距离)、IMU(姿态)等多传感器融合决策系统功能定位:负责机器人行为的规划和决策,是机器人的"大脑"核心技术:人工智能、机器学习、路径规划、任务调度、状态机管理控制系统功能定位:实现机器人行为的执行,是机器人的"神经系统"核心技术:运动控制、反馈控制、PID调节、力控制、轨迹跟踪通信系统功能定位:确保机器人与外部系统或其他机器人之间的通信,是机器人的"语言系统"核心技术:Wi-Fi、以太网、CAN总线、蓝牙、5G等通信协议,支持多机器人协作和远程操作ROS框架的核心价值标准化接口和工具模块化功能包管理高度可复用和可移植强大的开源社区支持现代机器人开发趋势基于ROS构建的智能机器人软件系统具有高度的灵活性和可扩展性,能够快速原型设计和实验,加速机器人技术的创新和应用落地。8.2ROS系统机器人操作系统的核心概念与特性ROS的特点与优势分布式进程架构以节点(Node)为最小单位进行编程,每个进程独立运行,通过发布-订阅机制收发数据优势:点对点设计分散计算压力,支持多机分布式部署功能包单位管理模块化设计,每个功能节点可单独编译,使用统一消息接口优势:便于移植、复用和二次开发,提高代码可维护性开源项目集成集成OpenCV、PCL等大量开源库,提供丰富的算法资源优势:快速开发智能应用,避免重复造轮子组件化工具包提供RViz、RQt、Rosbag等可视化工具和仿真软件优势:友好的开发和调试环境,提升开发效率多语言支持支持C++、Python、Lisp等多种编程语言优势:采用语言中立接口,开发者可选择熟悉的语言开源社区生态拥有庞大的ROSWiki社区,数千万软件包,上千款机器人优势:BSD协议免费使用,活跃的社区支持核心优势总结:ROS通过标准化接口、模块化设计、丰富的工具链和活跃的社区,极大地简化了机器人软件开发,使开发者能够专注于实现具体的机器人功能,而无需从头构建通信、控制和感知模块。ROS版本演进:从ROS1到ROS2ROS版本命名规则ROS版本以世界城市名字命名,按字母顺序排列。主要分为ROS1和ROS2两个大版本,LTS(LongTermSupport)版本提供5年支持周期。ROS1:Kinetic(2016)→Melodic(2018)→Noetic(2020,最后一个ROS1版本)ROS2:Foxy(2020)→Galactic(2021)→Humble(2022LTS)→Jazzy(2024LTS)JazzyJalisco(2024LTS)最新特性GazeboHarmonic深度集成ROSBag主题筛选功能RViz2增强可视化DDS安全特性强化多平台支持(Windows/macOS)ARM64架构原生支持ROS1vsROS2架构对比ROS1:中心化Master节点,单点故障风险,TCPROS/UDPROS通信ROS2:去中心化DDS架构,无单点故障,支持多平台ROS2DDS通信机制DDS核心概念DDS(DataDistributionService)是OMG组织制定的实时数据分发标准,ROS2将其作为底层通信中间件,提供高效、可靠的分布式数据交换能力。1发布-订阅模型支持节点间松耦合的异步通信2自动发现机制节点自动检测网络上的其他节点3QoS策略配置灵活配置可靠性、历史记录、延迟等常见DDS实现FastDDS默认实现,高性能低延迟默认CycloneDDS开源轻量,资源受限环境开源RTIConnext商业级,极致实时性商业ROS2DDS架构RMW层:ROSMiddlewareInterface,屏蔽不同DDS实现的差异ClientLibrary:rclcpp(C++)和rclpy(Python)提供上层API优势:开发者无需关注DDS细节,通过ROS2API即可使用DDS的强大功能8.3ROS2软件框架文件系统、计算图与开源社区ROS2文件系统结构三层架构1文件系统层ROS的内部结构、文件结构和所需的核心文件2计算图层进程之间(节点之间)的通信网络3开源社区层ROS资源的获取和分享,知识、算法和代码共享工作区(Workspace)结构ros2_ws/├──src/#源码目录,包含所有ROS2包├──build/#构建目录,中间文件├──install/#安装目录,可执行文件└──log/#日志目录colconbuild构建工作区colcontest运行测试功能包(Package)结构my_package/├──package.xml#包元数据├──CMakeLists.txt#构建配置├──src/#源代码├──include/#头文件├──launch/#启动文件├──msg/#消息定义├──srv/#服务定义├──action/#动作定义├──config/#配置文件├──urdf/#机器人模型└──scripts/#Python脚本package.xml:定义包名、版本、依赖、许可证CMakeLists.txt:定义编译规则、依赖、安装环境设置:source/opt/ros/jazzy/setup.bash加载ROS2环境,source~/ros2_ws/install/setup.bash加载工作区环境ROS2计算图核心概念节点(Node)计算图中的基本处理单元,执行特定任务(传感器处理、控制、监控等)特点:独立进程,可发布/订阅话题、提供/调用服务、发送/接收动作话题(Topic)节点间异步通信的通道,用于传输传感器数据、控制命令等连续流数据示例:/cmd_vel传输速度命令给机器人底盘服务(Service)同步的请求-响应通信机制,适用于需要即时反馈的操作示例:/add_two_ints接受两个整数并返回它们的和动作(Action)用于长时间运行任务的通信机制,支持目标、反馈、结果和取消示例:/move_base机器人导航到指定目标位置参数(Parameters)用于配置节点行为的键值对,支持运行时动态调整示例:robot_speed控制机器人的最大速度高级特性QoS策略:可靠性、历史、耐久性、延迟预算命名空间:逻辑分组,避免名称冲突Launch文件:Python编写,灵活配置多节点启动分布式架构:支持多主机、多网络拓扑核心优势:ROS2计算图通过DDS中间件实现真正的分布式架构,节点可以在不同物理机器上运行,自动发现机制简化了系统配置,QoS策略满足不同实时性需求8.4ROS2通信机制发布-订阅、服务与动作通信模型发布-订阅通信模型核心概念发布者(Publisher)向特定话题发布消息的节点,创建发布端口发送数据订阅者(Subscriber)订阅特定话题接收消息的节点,创建接收端口监听数据话题(Topic)发布者和订阅者之间共享的数据通道,有唯一名称和固定数据类型C++代码示例//创建发布者autopublisher=this->create_publisher("topic_name",//话题名称10//队列大小);//创建订阅者autosubscription=this->create_subscription("topic_name",10,std::bind(&NodeClass::topic_callback,this,_1));//回调函数voidtopic_callback(conststd_msgs::msg::String::SharedPtrmsg){RCLCPP_INFO(this->get_logger(),"Iheard:'%s'",msg->data.c_str());}通信模型示意图核心优势松耦合发布者和订阅者无直接依赖,通过话题通信扩展性同一话题可有多个发布者和订阅者异步通信发布者无需等待响应,订阅者异步处理应用场景•传感器数据发布(激光雷达、相机图像)•控制指令传递(速度、转向命令)•状态信息广播(机器人位置、电池电量)服务通信模型核心概念服务通信是一种同步的请求-响应机制,适用于需要即时处理和获取结果的操作,如查询传感器状态、控制设备操作等。服务端(ServiceServer)提供服务,处理客户端请求并返回结果客户端(ServiceClient)调用服务,发送请求并等待响应服务(Service)通信通道,定义请求和响应的数据结构(.srv文件).srv文件定义示例#请求部分int64aint64b---#响应部分int64sum定义了一个简单的加法服务,请求包含两个整数,响应返回它们的和服务通信示意图C++代码示例//创建服务端autoserver=this->create_service("add_two_ints",std::bind(&NodeClass::handle_service,this,_1,_2,_3));//创建客户端autoclient=this->create_client("add_two_ints");//发送请求autorequest=std::make_shared();request->a=5;request->b=3;autoresult=client->async_send_request(request);应用场景•设备控制(启动/停止设备)•状态查询(查询传感器状态)•参数配置(修改设备参数)•计算服务(坐标转换、数学运算)动作通信模型核心概念动作通信是服务通信的扩展,专门用于长时间运行的任务,支持目标发送、进度反馈、结果返回和任务取消。目标(Goal)客户端发送的任务目标,定义预期结果反馈(Feedback)任务执行过程中的进度信息结果(Result)任务完成后返回的最终状态.action文件定义示例#Goalint64order---#Resultint64[]sequence---#Feedbackint64[]partial_sequenceFibonacci序列计算动作,目标为序列长度,反馈为当前计算值,结果为完整序列动作通信示意图动作vs服务任务复杂性:动作适合长时间任务,服务适合即时请求反馈机制:动作支持中间反馈,服务没有任务取消:动作可随时取消,服务无法中止应用场景•导航任务(机器人移动到目标点)•机械臂操作(抓取和放置物体)•路径规划(复杂轨迹计算)•长时间计算任务8.5ROS2常用组件开发工具与功能包详解Launch启动文件与TF工具Launch文件(Python)ROS2使用Python编写Launch文件,提供灵活的多节点启动配置。fromlaunchimportLaunchDescriptionfromlaunch_ros.actionsimportNodedefgenerate_launch_description():returnLaunchDescription([Node(package='my_package',executable='my_node',name='node_name',output='screen',parameters=[{'param':'value'}],remappings=[('/old','/new')]),])核心功能:多节点启动、参数传递、主题重映射、事件处理TF坐标变换工具TF用于跟踪和管理机器人不同坐标系之间的变换关系。TF广播器(Broadcaster)发布坐标系之间的变换信息TF监听器(Listener)订阅并查询任意坐标系间的变换静态TF广播器发布固定不变的变换(如传感器安装位置)#查看TF变换ros2runtf2_rostf2_echo[parent][child]#生成TF树PDFros2runtf2_toolsview_frames应用场景:Launch文件用于系统启动配置,TF用于机器人导航、多传感器数据融合、机械臂运动学计算等需要坐标变换的场景RViz2可视化工具RViz2核心功能RViz2是ROS2的三维可视化工具,用于查看传感器数据、机器人模型、路径规划等信息。传感器数据可视化:激光雷达、深度相机、IMU等机器人模型展示:URDF/SDF模型、姿态状态路径规划与导航:路径点、运动轨迹、目标点坐标系可视化:TF树、坐标变换关系交互与标记:设置导航目标、添加标记常用显示类型RobotModel机器人模型LaserScan激光雷达PointCloud2点云数据TF坐标变换Path规划路径Map栅格地图RViz2界面示例启动命令:ros2runrviz2rviz2加载配置:ros2runrviz2rviz2-dconfig.rviz配置保存:可将显示配置保存为.rviz文件,便于重复使用RQt工具箱与Rosbag数据记录RQt常用插件RQt是基于Qt的图形化工具集,提供多种插件用于调试和开发。RQtGraph计算图可视化ros2runrqt_graphrqt_graphRQtConsole日志查看ros2runrqt_consolerqt_consoleRQtPlot数据绘图ros2runrqt_plotrqt_plotRQtReconfigure参数动态配置ros2runrqt_reconfigurerqt_reconfigureRosbag数据记录与回放Rosbag用于记录和回放ROS2话题数据,便于调试和分析。记录数据#记录所有主题ros2bagrecord-a#记录指定主题ros2bagrecord/topic1/topic2#设置输出目录ros2bagrecord-a-omy_bag回放数据#回放Bag文件ros2bagplaymy_bag#调整回放速度ros2bagplaymy_bag-r2.0#查看Bag信息ros2baginfomy_bag应用场景:RQt用于实时调试和监控,Rosbag用于离线数据分析、算法验证、场景复现Gazebo仿真与Nav2导航Gazebo仿真器Gazebo是高性能开源仿真器,支持物理模拟、传感器数据生成、环境建模。物理引擎:ODE、Bullet、DART、Simbody传感器模拟:摄像头、激光雷达、IMU、GPS环境建模:复杂场景、建筑物、地形插件系统:自定义机器人行为、传感器#启动Gazeboros2launchgazebo_rosempty_world.launch.py机器人模型格式URDF(UnifiedRobotDescriptionFormat)ROS标准格式,定义链接、关节、传感器SDF(SimulationDescriptionFormat)Gazebo原生格式,功能更强大Nav2导航框架Nav2是ROS2的官方导航框架,提供路径规划、避障、定位等功能。Costmap2D全局/局部代价地图,表示可通行区域PlannerServer全局路径规划器(A*、Dijkstra算法)ControllerServer局部路径控制器(DWB、TEB算法)AMCL自适应蒙特卡洛定位算法BehaviorTree行为树管理导航任务流程Nav2工作流程1.启动Nav2节点和地图服务器2.加载地图或使用SLAM建图3.在RViz2中设置导航目标点4.Planner计算全局路径5.Controller实时避障和跟踪MoveIt2与行为树MoveIt2运动规划框架MoveIt2是ROS2的机械臂运动规划框架,提供运动规划、碰撞检测、抓取生成等功能。运动规划:生成无碰撞路径(OMPL库)逆运动学(IK):计算末端位姿对应的关节角度正运动学(FK):根据关节角度计算末端位姿碰撞检测:实时监控机器人与环境碰撞抓取生成:计算最佳抓取点和姿态可视化:RViz2集成显示规划路径行为树(BehaviorTree)行为树是用于任务执行和决策逻辑的建模工具,通过树状结构组织行为节点。控制节点Sequence:顺序执行子节点Selector:选择第一个成功的子节点Parallel:并行执行多个子节点执行节点ActionNode:执行特定动作ConditionNode:检查条件是否满足节点状态:Success(成功)|Failure(失败)|Running(运行中)应用场景:MoveIt2用于机械臂控制、抓取操作;行为树用于Nav2导航任务管理、复杂机器人行为控制8.6micro-ROS嵌入式机器人开发micro-ROS架构与组件micro-ROS简介micro-ROS是ROS2的扩展版本,专门为资源受限的嵌入式设备(微控制器)设计,使小型设备能够参与ROS2分布式系统。轻量级客户端库,适应嵌入式资源限制保留ROS2核心功能(发布/订阅、服务、动作)支持多种RTOS(FreeRTOS、Zephyr、NuttX)适用于物联网、传感器节点、小型机器人micro-ROS架构微控制器端micro-ROS客户端库、RTOS、节点(发布者/订阅者/服务)代理节点(Agent)运行在PC上,转发micro-ROS与ROS2网络通信通信协议MicroXRCE-DDS(DDS轻量级实现)主要组件rclcROSClientLibraryforC核心MicroXRCE-DDS轻量级DDS实现通信rmw_microxrceddsRMW层实现中间件micro_ros_arduinoArduino平台支持平台micro_ros_setup构建系统工具支持平台:FreeRTOS、Zephyr、NuttX等RTOS,以及Arduino、ESP32、STM32等硬件平台micro-ROS机器人开发实例实例说明通过micro-ROS实现两轮差速驱动机器人运动控制,微控制器接收速度指令并控制电机。硬件组成驱动轮式机器人+STM32微控制器+电机驱动器+编码器软件架构micro-ROS客户端(STM32)+代理节点(PC)+ROS2系统(PC)开发流程1安装ROS2和micro-ROS工具链2编写STM32微控制器代码,订阅/cmd_vel3构建并烧录固件到微控制器4在PC上运行代理节点5使用ROS2发布速度指令控制机器人核心代码示例//订阅/cmd_vel主题rcl_subscription_tcmd_vel_sub;rclc_subscription_init_default(&cmd_vel_sub,&node,ROSIDL_GET_MSG_TYPE_SUPPORT(geometry_msgs,msg,Twist),"/cmd_vel");//回调函数:接收速度指令voidcmd_vel_callback(constvoid*msgin){constgeometry_msgs__msg__Twist*msg=(constgeometry_msgs__msg__Twist*)msgin;floatv=msg->linear.x;//线速度floatw=msg->angular.z;

温馨提示

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

评论

0/150

提交评论