XML:是一种类似于HTML,但是没有使用预定义标记的语言。因此,可以根据自己的设计需求定义专属的标记。是一种将数据存储在一个可以搜索、共享的格式中的方法。更重要的是,因为XML的基本格式是标准化的,若你在本地或互联网上跨系统或平台共享获取XML,接收者仍可解析信息。

由XML衍生出的格式:MJCF:mujoco专用格式,URDF:用于描述机器人的一种标准格式。

XML是树结构,A是根节点,B、C、D等是子节点,每一个子节点都只有一个父节点。

eg.A代表人,B代表大脑,E代表手,I、J代表左右手,就这样描述了一个人。

代码示例

<!--注释内容-->

< >代表节点 ,<person name...>是节点的开始,</person>代表节点结束

若节点后面没有子节点,<Rhand/>就代表<Rhand></Rhand>这样写更简洁

MJCF格式中,机器人建模使用运动学树来描述,worldbody建立了一个空间,模型中所有物体都要放在其中,body指空间即在worldbody中划出一块空间,joint指两刚体之间的约束关系,geom是几何体,(inertial指刚体的惯性、site是一个标记点)

一个机械臂一般大致由这几部分组成,

<complier>编译器设置,

<default>默认属性模板:geom默认材质、摩擦、joint默认阻尼、body默认质量,后面写geom、joint时,如果不单独指定参数,就自动继承<default>里的值。

<asset> 资源仓库:存放模型用到的外部资源,mesh:机械臂各个连杆的 STL/OBJ, 三维模型texture、material:颜色、贴图、渲染材质。

<worldbody>世界刚体树。

<actuator>驱动器,给关节施加控制输入,控制器输出就是传给 actuator。

<keyframe>关键帧,预存一组模型状态(关节角度、位置),可以一键重置仿真到该姿态。

mujoco简单控制脚本编写

ikpy.chain逆运动学求解使用

model导入模型 data导入模型数据

with mujoco.viewer.launch_passive(model,data) as viewer使用可视化窗口

        while viewer.is running():主仿真循环

               mujoco.mj_step(model,data)步进计算,默认间隔为0.0002s

               viewer.sync()将改变同步到可视化窗口

状态表示:位置(xyz空间坐标系)+ 姿态(旋转矩阵、欧拉角等)合在一起称为位姿

机器人状态表示:关节->位姿(关节空间->笛卡尔空间)

关节空间只关注关节角的变化,不关注末端的位置

笛卡尔空间按照指定轨迹去运动,不关注关节角的变化

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐