微信公众号:robot_learning123
分享机器人与人工智能相关的技术与最新进展,欢迎关注与交流。
原文链接:MuJoCo的机器人建模

MuJoCo是目前机器人强化学习中最流行的仿真器,官方论坛提供了一些常见机器人的模型,但是如果其中没有自己需要的机器人模型,就只能自己建一个了。本文主要记录一下如何根据ROS的URDF模型修改并建立一个MuJoCo的机器人模型。由于官方没有一个详细的过程,所以以下内容也主要是自己的摸索,并不一定完全正确。

MuJoCo最主要的参考资料就是官方文档了,建模部分主要参考Modeling和XML Reference。MuJoCo的模型有三种:xx.mjb(二进制文件), xx.txt, xx.xml,我们常用的还是xml格式的,便于阅读和修改。

1. URDF模型准备

首先,如果是一个比较复杂的机器人模型,需要对其进行一定的修改,才能生成一个能用的MuJoCo模型。此处用到的机器人模型如下https://github.com/DualUR5Husky/husky:

1.1 mesh文件

URDF的mesh文件通常有两类:包含材质颜色等信息的dae文件(非必须)与用于碰撞的stl文件。由于MuJoCo并不支持dae文件,只支持stl文件,因此,如果URDF模型中有dae文件,需要全部转换为stl文件。可以使用MeshLab等软件进行转换。

一般ROS系统加载URDF模型,很多都会分开成很多子部分加载,但是MuJoCo是不能识别ROS的package路径的,所以最好把所有的mesh文件单独拷贝到一个文件夹内,同时保持唯一的命名,参考此处http://www.mujoco.org/forum/index.php?threads/multiple-mesh-folders.3720/。

1.2 URDF文件

ROS系统很多采用xacro格式,此处需要转换成一个单一的urdf文件格式,同时mesh文件改为绝对路径,保证可以找到相应的mesh文件。也要注意把对应的dae文件格式修改为stl文件格式。最后,在xacro/urdf文件添加一些必要的MuJoCo的tag用于控制编译选项。

  <mujoco><compiler meshdir="../meshes_mujoco/" balanceinertia="true" discardvisual="false" /></mujoco>

其他tag可以参考链接http://www.mujoco.org/book/XMLreference.html#compiler。meshdir是必须的,如果编译时有以下bug,则需要添加balanceinertia

Error: inertia must satisfy A + B >= C; use 'balanceinertia' to fix
Object name = inertial_link, id = 3

discardvisual这个tag默认是true,也就是丢掉视觉效果部分,保留碰撞部分。如果模型很复杂,它会把很多mesh文件进行简化,变成球、圆柱、立方体等,视觉效果会差很多,因此建议设为false,具体参考http://www.mujoco.org/forum/index.php?threads/meshes-ignored-when-converting-urdf-to-mjcf.3433/。另外,在MuJoCo的界面,可以通过按键盘数字键0和1进行视觉上的切换(视觉mesh与碰撞mesh)。

从xacro文件生成urdf文件的命令(如果有urdf文件则不需要此步):

rosrun xacro xacro --inorder model.xacro > model.urdf

检查urdf文件:

check_urdf model.urdf

在RViz中可视化:

roslaunch urdf_tutorial display.launch model:=path/to/your/urdf/file

2. 生成基本模型

在确认URDF模型没有问题后,进入MuJoCo的可执行文件夹内执行命令进行转换(如默认的~/mujoco/mujoco200/bin):

$./compile /path/to/model.urdf /path/to/model.mjb
$./compile /path/to/model.urdf /path/to/model.txt
$./compile /path/to/model.urdf /path/to/model.xml

官方说明可以转换成三种模型,我们一般用xml的格式。

$./compileUsage: compile infile outfileinfile can be in mjcf, urdf, mjb formatoutfile can be in mjcf, mjb, txt format

测试生成的基本模型:

$ ./simulate /path/to/model.xml

3. 添加必要参数

由于上面生成的模型只是最基本的模型,仅包含基本的运动学链,缺少物理属性,如此处https://github.com/openai/mujoco-py/issues/216所说,还需要添加一些其他的tag,具体根据需要可以查看官方文档。

添加光照、地面、桌子等:

再添加一些更真实的属性:

MuJoCo的机器人建模相关推荐

  1. mujoco机器人建模教程和优质资源总结-长期更新

    mujoco机器人建模教程和优质资源总结-长期更新 前言 最近要利用mujoco搭建一个定制化的击球模型,有一些基础的功能我找不到实现的例程.因此想着能不能做一个归纳和总结,在准备向社区"白 ...

  2. Blender钢铁机器人建模与动画全流程制作视频教程

    Blender钢铁机器人建模与动画全流程制作视频教程 流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确) ...

  3. ROS中阶笔记(二):机器人系统设计—URDF机器人建模

    ROS中阶笔记(二):机器人系统设计-URDF机器人建模 文章目录 01 URDF理论 1.1 什么是URDF 1.2 模型< robot > 1.2.1 < link > e ...

  4. ros如何订阅关节力矩信息_ROS中阶笔记(二):机器人系统设计—URDF机器人建模...

    1 URDF理论 1.1 什么是URDF Unified Robot Description Format,统一机器人描述格式: ROS中一个非常重要的机器人模型描述格式: 可以解析URDF文件中使用 ...

  5. 机器人建模中移动关节如何建立坐标系_机器人标准DH建模法

    运动学问题是在不考虑引起运动的力和力矩的情况下,描述机械臂的运动.这篇文章是我翻过了几本机器人教材再参考网上各种博客的总结,先说看资料过程中的感想/结论:网上的博客基本不完整,要详细地了解DH建模法还 ...

  6. 六自由度机器人(机械臂)运动学建模及运动规划系列(三)——机器人建模及运动学分析的Matlab仿真

    在完成机器人的建模以及运动学分析之后,可以利用Matlab中的Robotics工具箱进行仿真. 本篇目录 一.工具箱下载 二.机器人建模仿真 三.机器人运动学计算仿真 四.小结 一.工具箱下载 要在M ...

  7. Matlab - Solidworks 机器人建模(4)—— 如何把SolidWorks模型导入到Matlab (Simscape模型)

    Matlab - Solidworks 机器人建模(4)-- 如何把SolidWorks模型导入到Matlab (Simscape模型) 1.说在前面 本文会介绍怎么直接把solidworks的模型转 ...

  8. matlab 4轴机器人建模,SCARA机器人运动学分析及MATLAB建模仿真.pdf

    SCARA机器人运动学分析及MATLAB建模仿真.pdf 100 SCARA机器人运动学分析及 MATLAB建模仿真 SCARA机器人运动学分析及MATLAB建模仿真 KinematicAnalysi ...

  9. ROS系列:第六章 机器人建模

    文章目录 六.机器人系统仿真 1.概述 仿真优势: 仿真缺陷: 2. URDF集成Rviz基本流程 1.创建功能包,导入依赖 2.编写 URDF 文件 3.在 launch 文件中集成 URDF 与 ...

  10. ROS系统MoveIt玩转双臂机器人系列(一)--ROS机器人建模

    ROS系统MoveIt玩转双臂机器人系列(一)--ROS机器人建模 注:本篇博文全部源码下载地址为:Git Repo. 1. 下载到本地后解压到当前文件夹然后运行:catkin_make 编译. 2. ...

最新文章

  1. Spark中常用的算法
  2. Cadence 电源完整性仿真实践(二)
  3. SQL Server 执行 字符串
  4. 服务器怎么修改密码_亚马逊账号登陆不上,修改密码后遭冻结怎么办?有没有什么申诉的办法?...
  5. Python高级——魔法属性和方法
  6. 基于windows server 2008 web服务器的性能,Windows Server 2008之应用程序服务器解析
  7. python3 模板引擎_Python实现的简单模板引擎功能示例
  8. Solr4.8.0源码分析(13)之LuceneCore的索引修复
  9. 用户故事讲解(看最后的例子,你应该就知道怎么样写用户故事了)
  10. python成绩统计及格学平成_强化学习训练Chrome小恐龙Dino:最高超过4000分
  11. 一文读懂随机森林的解释和实现(附python代码)
  12. 第二届中国移动“梧桐杯”大数据应用创新大赛总决赛12强名单发布
  13. A1008 Elevator (20 分)
  14. 电脑键盘没反应?有可能是趴着睡觉时按了它
  15. QPushButton 实现保持按下效果(转载​​)
  16. 【解决】Keil中创建工程时出现-arm_math.h(xxx): warning: #xxxx-D: unrecognized GCC pragma错误
  17. linux使用Quota配额之须配额目录为非独立文件系统并无可分配分区解决办法
  18. 编写各种outofmemory/stackoverflow程序
  19. centOS关机重启,保存内存中数据
  20. 【JAVA】MANIFEST.MF / CERT.SF 中 文件SHA1-Digest计算方法

热门文章

  1. /node_modules/.bin/vue-cli-service: Permission denied
  2. oracle11g64跟32,plsql32 位连接oracle11g64位方法
  3. 沧州中考计算机考试时间,2017年沧州市中考考试科目及时间
  4. 【北亚数据恢复】DELL EqualLogic PS6100服务器raid5磁盘阵列中硬盘出现坏道离线的数据恢复
  5. C# 之 带你玩转命令行版《2048》 -- 附源码分享
  6. 太阳神朱厚丞:揭秘2018年物联网发展趋势
  7. 苹果恢复出厂设置系统也会还原吗_刷机、恢复出厂设置和还原设置,你还不知道有什么区别?...
  8. AMR 文件解析及编解码流程
  9. forward与sendRedirect区别
  10. 启动计算机按住del不放,电脑开机需要按del进入系统怎么办