Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法详细讲解及如何从零构建一个机械臂模型(一)

Stella981
• 阅读 1107

Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法基础及如何从零构建一个机械臂模型(一)

  • Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法基础及如何从零构建一个机械臂模型(一)

  • 一、机械臂仿真效果图

  • 二、机器人组成结构图

  • 三、URDF基本介绍

  • 四、xacro在UDRF上的改进

  • 五、机械臂xacro建模基本组成部分

  • robot定义

  • link定义

  • joint定义

  • 机械臂所需颜色定义

  • 基本参数定义

  • 六、机械臂xacro建模常用语法

  • xacro常量定义及使用:

  • 数学公式计算

  • 宏定义及宏调用

  • 文件包含

  • 七、更多示例

一、机械臂仿真效果图

首先先展示一下完成后的机械臂模型效果图:
Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法详细讲解及如何从零构建一个机械臂模型(一) Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法详细讲解及如何从零构建一个机械臂模型(一)

二、机器人组成结构图

Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法详细讲解及如何从零构建一个机械臂模型(一)

  • 执行机构:类比于人体的四肢,属于直接面向工作对象的机械装置;
  • 驱动系统:类比于人体的肌肉和筋骨,负责驱动执行机构,将控制系统下达的命令转换为执行机构需要的信号;
  • 传感系统:类比于人体的感官及神经系统,负责完成信号的输入和反馈,包括内部与外部传感系统;
  • 控制系统:类比与人体的大脑,负责实现任务及信息的处理调度,输出控制命令信号。
    四类系统的协同控制关系如下图所示:
    Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法详细讲解及如何从零构建一个机械臂模型(一)

三、URDF基本介绍

  • URDF(Unified Robot Description Format),全称为标准化机器人描述格式;
  • 属于一类XML格式的模型文件,用于描述机器人关节组成、自由度集合、位姿变换以及工作空间等相关概念;
  • 类似于D-H参数的表示方法来表示机器人各个Joint及Link之间的连接关系;
  • 是对机器人仿真模型搭建的必经之路。

四、xacro在UDRF上的改进

  • 精简模型代码;
  • 创建宏定义概念;
  • 增加文件include功能;
  • 提供包括常量、变量、数学计算、条件语句等内容的编程接口。

五、机械臂xacro建模基本组成部分

robot定义

  • 是一个完整机器人模型的最顶层标签;

  • < link >和< joint >标签必须包含在< robot >标签内;

  • 一个完整的机器人仿真模型,由一系列的< link >和< joint >标签组成,数量取决于机器人模型的自由度数量。

    ... ...
    <joint> ... </joint>
    <joint> ... </joint>
    

link定义

  • 描述机器人某个刚体部分的外观属性和物理属性;

  • 描述连杆模型的尺寸(size)、颜色(clor)、形状(shape)、惯性矩阵(inertial matrix)、碰撞检测(Collision)等内容;

  • 每个Link在机器人模型上会成为一个独立的坐标系。

joint定义

  • 描述两个Link之间的关系,分为以下6种类型(type):
    Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法详细讲解及如何从零构建一个机械臂模型(一)

  • 包含了关节运动的位置和速度限制;

  • 描述了机器人关节的运行学和动力学的相关属性;

  • Joint和Link的关系如下:

  • Ros机械臂仿真建模基础:URDF模型进化版本xacro模型文件语法详细讲解及如何从零构建一个机械臂模型(一)

机械臂所需颜色定义

     <material name="Black">
        <color rgba="0 0 0 1"/>
    </material>
    <material name="White">
        <color rgba="1 1 1 1"/>
    </material>
    <material name="Blue">
        <color rgba="0 0 1 1"/>
    </material>
    <material name="Red">
        <color rgba="1 0 0 1"/>
    </material>

基本参数定义

   <xacro:property name="M_PI" value="3.14159"/>
   <!-- link1 参数定义 -->
   <xacro:property name="link0_radius" value="0.05" />
   <xacro:property name="link0_length" value="0.04" />
   <xacro:property name="link0_mass" value="1" />
    <!-- gripper参数定义 -->
   <xacro:property name="gripper_length" value="0.03" />
   <xacro:property name="gripper_width" value="0.01" />
   <xacro:property name="gripper_height" value="0.06" />
   <xacro:property name="gripper_mass" value="0.5" />

六、机械臂xacro建模常用语法

xacro常量定义及使用:

    <!-- 常量定义 -->
    <xacro:property name="M_PI" value="3.14159"/>


    <!-- 常量使用 -->
     <origin xyz="0 0 0" rpy="0 ${M_PI/2} 0" />

数学公式计算

     <origin xyz="${(motor_length + wheel_length)/ 2} 0 0" rpy="0 0 0" />

宏定义及宏调用

    <!-- 定义宏macro,宏里定义的函数名为cylinder_inertial_matrix,参数为"m r h",关于惯性矩阵的宏-->
    <xacro:macro name="cylinder_inertial_matrix" params="m r h">
        <inertial>
            <mass value="${m}" />
            <!-- 圆柱体惯性矩阵的标准计算公式 -->
            <inertia ixx="${m*(3*r*r+h*h)/12}" ixy = "0" ixz = "0"
                iyy="${m*(3*r*r+h*h)/12}" iyz = "0"
                izz="${m*r*r/2}" /> 
        </inertial>
    </xacro:macro>


     <!-- 通过函数名cylinder_inertial_matrix来调用之前定义的用来计算惯性矩阵的宏 -->
     <cylinder_inertial_matrix m="${link0_mass}" r="${link0_radius}" h="${link0_length}"/>

文件包含

<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro" />

其中find关键词后加的是功能包的名字(mbot_description)

七、更多示例

参考ROS关于URDF的官方文档,可全面查询URDF及xacro的相关语法及建模方法的详细介绍。

点赞
收藏
评论区
推荐文章
黎明之道 黎明之道
3年前
天池比赛数据挖掘心电图模型调参
Task4建模与调参4.1学习目标学习机器学习模型的建模过程与调参流程完成相应学习打卡任务4.2内容介绍逻辑回归模型:理解逻辑回归模型;逻辑回归模型的应用;逻辑回归的优缺点;树模型:理解树模型;树模型的应用;树模型的优缺点;集成模型基于bagging思想的集成
Stella981 Stella981
3年前
Linux网络基础(一)——网络模型
【网络模型】1.OSI七层模型:(从高到低)应用层表示层会话层传输层网络层数据链路层物理层2.TCP/IP四层网络模型:接入网层网间网络层传输层应用层3.IP地址:——32位的二进制表示,通常用4组8位二进制
领域建模之数据模型设计方法论 | 京东云技术团队
本文通过实际业务需求场景建模案例,为读者提供一种业务模型向数据模型设计的方法论,用于指导实际开发中如何进行业务模型向数据模型转化抽象,并对设计的数据模型可用性、扩展性提供了建议性思考。通过文章,读者可以收获到业务模型向数据模型抽象可参考的一种方法论,并针对后期业务需求变化,尽可能降低模型调整或者模型推a倒重建的风险。本文可以重点关注建模实施流程,针对自己实际业务场景,不断抽象优化自己的数据模型。
ChatGPT小型平替之ChatGLM-6B本地化部署、接入本地知识库体验 | 京东云技术团队
本文期望通过本地化部署一个基于LLM模型的应用,能让大家对构建一个完整的应用有一个基本认知。包括基本的软硬环境依赖、底层的LLM模型、中间的基础框架及最上层的展示组件,最终能达到在本地零编码体验的目的。
直播预告 | 大模型时代 “应用变了”:看大模型如何跑进零售电商应用
走进零售电商,大模型能做什么?今年11.11,应用大模型带来成效显著今天下午2:00,京东云视频号准时直播看京东零售如何破题新解法,大小模型协同大模型将走向多模态,走向具身智能
无人机集群自组织搜索仿真模型设计与实现
摘要:城市威胁背景下无人机集群自组织搜索移动目标问题,是无人机集群作战应用的一个重要发展方向。采用基于Agent的复杂系统建模仿真工具,构建了无人机集群搜索仿真模型框架,设计实现了无人机集群自组织搜索模型。在考虑无人机集群作战可能受到威胁的背景下,展示了无人机集群自组织搜索概念,探索了使用基于概率的有限状态机模型实现集群自主决策的解决方案,并通过案例进行了分
如何让工业制造拥有更强的“数字内核”?
从车间生产线的人工手动组装到智能机械臂几秒完成所有环节从千里迢迢奔赴现场解决难题到运维平台实时查看设备运行情况工业制造正随着信息化和工业化的深度融合变得更加高效、智能。在“中国制造2025”战略和“工业4.0”浪潮下,云计算、大数据、人工智能等新一代信息技术正在和传统制造业相融合,工业互联网的时代已经到来。今年工业互联网已第五次被写入政府工作报告。五年间,从