版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
仿真工具Gazebo与URDF课程内容urdf与xacro宏介绍Gazebo机器人仿真Gazebo与ROS的通信接口2©NXROBO2022机器人建模©NXROBO20223要描述什么?有哪些部件部件间如何相对运动……如何更好地描述?urdfurdf介绍urdf(unifiedrobotdescriptionformat)是ROS中描述机器人的一种语言在ROS开发中占据了非常重要的地位。urdf定义了一系列XML标签来描述机器人模型,最核心的两个标签为<link>——机器人部件/连杆/刚体<joint>——机器人关节/运动副urdf主要用途在于标识机器人物理模型——有哪些部件、每个部件的尺寸、部件间以何种关节连接、关节限制等可容易实现关节空间坐标与笛卡尔坐标的转换,如配合robot_state_publisher包使用,可根据关节的值确定出部件的位置和姿态©NXROBO20224<robot>标签根标签,是其它标签的容器,其作用类似于launch文件中的launch标签有一个属性name,用来设置机器人的名字©NXROBO20225<link>标签用于描述机器人某个部件(也即刚体部分)的外观和物理属性机器人底座、轮子、激光雷达、摄像头...每一个部件都对应一个link在link标签内,可以设计该部件的形状、尺寸、颜色、惯性矩阵、碰撞参数等一系列属性属性name,设置部件名字©NXROBO20226子标签<joint>标签joint标签用于描述机器人关节的运动学和动力学属性还可以指定关节运动的安全极限机器人的两个部件(parentlink与childlink)以"关节"的形式相连接不同的关节有不同的运动形式:旋转、滑动、固定、旋转速度、旋转角度限制属性name,设置关节的名字属性type,设置关节类型©NXROBO20227子标签Joint类型Revolute:转动关节,但是有转动范围,必须要求之后的limit参数中必须含有上下界才合法。Continuous:连续转动关节,没有转动范围。Prismatic:平动关节,也需要上下界的定义Fixed:完全固定,连接的两个link幷没有可动关系,可以理解为纯粹为了标识固定传感器相对位置与姿态而设立的。Floating:允许link与link之间有完全6个自由度的转换,跟fixed一样,一般是标识一些环境物体或者无人机在全局位置姿态的。Planar:与floating类似,用于标识地面机器人在地面上的位置姿态。©NXROBO20228Joint类型Gearbox:描述了齿轮传动的转动关系。Ball:球关节,两个转动自由度的合成。Screw:类似于螺丝的运动,单个自由度,但转动与平动位移的合成。取消了floating与planar。©NXROBO20229urdf的自身的一些问题urdf本身设计有一些缺陷整个joint与link成树状描述,而机器人存在一些的物理模型例如并联机构,环状机构等就无法表示一些标签设置也不是非常合理,还有整个xml语法上也不是非常灵活这些问题的存在使urdf在一些情况中显得非常鸡肋,但是对于大部分移动机器人与机械臂,urdf已经够用关键是已经有大量现成工具,使得urdf在ROS中的地位还是不可撼动。©NXROBO202210XACRO宏介绍复杂的机器人常常有多达十几个joint和link,许多joint或link非常相似,整个urdf文件显得非常冗长、复杂Urdf文件中还经常存在一些值计算依赖XACRO是ROS中简化大型xml文件的写法、增加结构性与扩展性的XML宏语言提供了属性定义,数学运算,条件判断和宏定义等功能使用宏能极大增加urdf文件的层次感与可读性,在各个机器人公开的ROSurdfpackage中,基本都是用XACRO工具进行组织。注意:必须在robot标签中加入xmlns:xacro="/wiki/xacro"属性!!©NXROBO202211XACRO宏介绍属性:使用<xacro:property>标签定义,用${属性名称}来调用该参数。数学运算:在变量的大括号中可以使用基本的数学运算,可以使用Python数学模块中的函数和常量©NXROBO202212XACRO宏介绍条件判断:表达式中的结果必须是0、1、true或false,在<expression>中任何结果为布尔值的Python表达式都是可以的。©NXROBO202213XACRO宏介绍宏定义:使用xacro:macro来定义一个宏,参数用空格分割,参数可以用:=来添加默认值©NXROBO20221415©NXROBO2022定义-仿真/模拟(Simulation),泛指基于实验或训练的目的,将原本的系统、事务或流程,建立一个模型以表征其关键特性(keycharacteristics)或者行为/功能,予以系统化与公式化,以便进行可对关键特征做出模拟。(维基百科)应用场景-当所研究的系统造价昂贵、实验的危险性大或需要很长的时间才能了解系统参数变化所引起的后果时,仿真是一种特别有效的研究手段。应用领域-电气、机械、化工、水力、热力、社会、经济、生态、管理等等。重要工具
-计算机ROS中的仿真软件-gazebo、stage、matlab等Why-仿真的定义
16©NXROBO2022gazebo是一款功能强大的三维物理仿真平台具备强大的物理引擎高质量的图形渲染方便的编程与图形接口开源免费其典型应用场景包括测试机器人算法机器人的设计现实情景下的回溯测试Why-Whygazebo?17©NXROBO2022Why-Robotsimulationmadeeasy18©NXROBO2022Why-Robotsimulationmadeeasy19©NXROBO2022gazebooverview:https:///watch?v=SK5GuC1jgg8
What-gazebooverview20©NXROBO2022gzserver产生传感器数据更新物理参数可以运行在云端gzclient基于QT的用户界面控制仿真特性可同时运行多个人机界面What-Architecture21©NXROBO2022Ver2.2Ver5.0Ver7.0What-版本进化22©NXROBO20220:3D视图区1:工具栏2:模型列表3
:模型属性项4
:时间显示区What-界面布局23©NXROBO2022gazebo_ros-主要用于gazebo接口封装、gazebo服务端和客户端的启动、URDF模型生成等。gazebo_msgs-是gazebo的Msg和Srv数据结构。gazebo_plugins
-用于gazebo的通用传感器插件。gazebo_ros_api_plugin和gazebo_ros_path_plugin这两个Gazebo的插件实现接口封装。What-与ROS的接口24©NXROBO2022安装如果你已经成功安装了桌面完整版的ROS,可以直接跳过这一步骤,否则,请使用如下命令进行安装:sudoapt-getinstallros-indigo-gazebo-ros-pkgsros-indigo-gazebo-ros-control命令启动roscorerosrungazebo_rosgazebolaunch启动roslaunchgazebo_rosempty_world.launchHow-安装25©NXROBO2022How-机器人仿真的步骤开始仿真修改机器人模型创建仿真环境26©NXROBO2022How-empty_world.launch27©NXROBO2022paused
-以暂停状态启动Gazebo,默认为false。use_sim_time
-ROS的node是否使用Gazebo通过/clocktopic发布的仿真时间,默认为true。gui
-启用Gazebo的用户交互接口来控制视图,默认为true。headless-禁用仿真渲染组件的功能,当gui:=true时,不能使能此参数,默认为false。debug-在gdb中启动gzserver(GazeboServer)以用于调试,默认为false。How-参数28©NXROBO2022world_name以相对路径指定了world模型的定义文件,绝对路径由GAZEBO_RESOURCE_PATH这个环境变量决定。默认为/usr/share/gazebo-x.x,对indigo版本来说为/usr/share/gazebo-2.2默认本地模型数据库路径为~/.gazebo/modelsHow-worldmodel建议:为保证模型顺利加载,请提前将模型文件下载并放置到本地路径下。
https:///osrf/gazebo_models/downloads/
29©NXROBO2022Gazebo-
使用SDF(SimulationDescriptionFormat)仿真描述格式定义仿真环境和模型。ROS-
使用URDF(UniversalRoboticDescriptionFormat)通用机器人描述格式来定义机器人模型,且此格式定义的文件不能直接用于Gazebo,使用中需加以转换,添加用于描述仿真定义的标签。How-worldmodel30©NXROBO2022How-创建仿真环境直接添加环境模型31©NXROBO2022How-创建仿真环境直接添加环境模型32©NXROBO2022How-创建仿真环境使用BuildingEditor33©NXROBO2022How-创建仿真环境使用BuildingEditor34©NXROBO2022必须步骤
在每一个<link>内添加<inertia>标签。向URDF文件中的joint添加<transmission>标签向URDF文件中添加ros_control插件,并添加相应插件的controller配置文件可选步骤
在每一个<link>内添加<gazebo>标签。将外观颜色转换成Gazebo格式;将stl文件转换成dae文件,获得更好的渲染效果;添加传感器插件。在每一个<joint>内添加<gazebo>标签。设置适当的阻尼动力系数;添加执行器控制插件在<robot>标签内添加<gazebo>How-模型修改35©NXROBO2022添加<inertia>标签How-模型修改36©NXROBO2022添加<transmission>标签How-模型修改37©NXROBO2022How-ros_controlros_control是为用户提供的应用与机器人之间的中间件,包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等等,可以帮助机器人应用快速落地,提高开发效率对不同类型的控制器(底盘、机械臂等),ros_control可以提供多种类型的控制器但是这些控制器的接口各不相同,为了提高代码的复用率,ros_control还提供一个硬件的抽象层38©NXROBO2022How-ros_controlControllerManager:机器人可能有多个controller,管理器提供一种通用的接口来管理不同的controllerController:完成每个joint的控制,请求下层的硬件资源,提供了PID控制器,读取硬件资源状态,在发布控制命令HardwareRescource:为上下两层提供硬件资源的接口RobotHW:硬件抽象层和硬件直接打交道,通过write和read方法来完成硬件的操作RealRobot:要有自己的嵌入式控制器39©NXROBO2022How-ros_control40©NXROBO2022How-进行仿真添加ros_control插件URDF文件controller配置文件lanuch文件41©NXROBO2022How-进行仿真添加传感器插件URDF文件42©NXROBO2022How-模型加载加载用gazebo_ros功能包下名为spawn_model的python脚本,通过封装接口向Gazebo发起服务调用,请求加载指定的URDF文件。rosrungazebo_rosspawn_model-file`rospackfindbaxter_description`/urdf/baxter.urdf-urdf-z1-modelbaxter43©NXROBO2022How-模型加载对于xacro格式的机器人模型,需要先进行转换成URDF再加载
44©NXROBO2022How-模型加载roslaunchlitebot_descriptiongazebo_room_world.launchroslaunchlitebot_d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三按时工作制度
- 临时工作制度
- 华三工作制度
- 六必谈工作制度
- 保健料工作制度
- 2026 年中职高分子材料加工工艺(材料成型技术)试题及答案
- 中班幼儿安全故事
- 睡眠安全照护课件
- 幼儿安全我知道
- 幼儿园后勤园长工作培训
- 城发公司行业分析
- 口腔材料学课件
- 麻醉科临床诊疗指南2020版
- 中建综合支架专项施工方案
- 非常规时段施工安全管理方案
- 2023年北京市中国互联网投资基金管理有限公司招聘笔试题库含答案解析
- 普通气动调节阀规格书
- 如何保证伙伴成功举绩
- GB/T 41155-2021烧结金属材料(不包括硬质合金)疲劳试样
- 发展经济学 马工程课件 0.绪论
- GB/T 17989.2-2020控制图第2部分:常规控制图
评论
0/150
提交评论