Mujoco足式机器人强化学习训练02(URDF转XML)

Mujoco足式机器人强化学习训练02(URDF转XML)

URDF文件转XML文件

在安装完成mujoco playground以后,设计到三维模型的导入,在sw转出的文件大多为URDF格式,但是mujoco仿真的时候大多支持xml文件

xml文件官方地提供了转换脚本,需要下载mujoco工程文件,注意和上节下载的mujoco playground不是一个工程文件

1. mujoco工程文件下载

https://mujoco.org/download/mujoco210-linux-x86_64.tar.gz exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/.mujoco/mujoco210/bin 

2. 在URDF文件中添加代码

<mujoco><compilermeshdir="../meshes/"balanceinertia="true"discardvisual="false"/></mujoco>

meshdir:stl网格文件存放地址
balanceinertia=“true” 启用惯量平衡(仿真更真)
discardvisual=“false” 保留视觉几何体(可视化好看)
此处需要注意,需要与link平级,直接写在最上面就行

在这里插入图片描述

3. 转化命令

cd ~/.mujoco/mujoco210/bin ./compile /path/to/model.urdf /path/to/model.xml 

此处可以直接写urdf文件的绝对地址,以及保存xml文件存放的绝对地址

如果想要仿真验证xml文件的转化是否成功,可以执行

./simulate /path/to/model.xml 

4. 在xml文件中添加执行器(actuator)

actuator可以理解为电机,个人认为mujoco比较严谨,每一个关节都需要制定actuator才能有动力,而不是像leggedgym封装的一样,直接输入活动关节数目进行自动对应

actuator有多种格式,即可以设置位置模式、力矩模式、速度模式、以及general通用格式等
此处只介绍position设置方法

<actuator><positionclass="hexapod"name="RF_HAA"joint="RF_HAA"/><positionclass="hexapod"name="RF_HFE"joint="RF_HFE"/><positionclass="hexapod"name="RF_KFE"joint="RF_KFE"/><positionclass="hexapod"name="RM_HAA"joint="RM_HAA"/><positionclass="hexapod"name="RM_HFE"joint="RM_HFE"/><positionclass="hexapod"name="RM_KFE"joint="RM_KFE"/><positionclass="hexapod"name="RB_HAA"joint="RB_HAA"/><positionclass="hexapod"name="RB_HFE"joint="RB_HFE"/><positionclass="hexapod"name="RB_KFE"joint="RB_KFE"/><positionclass="hexapod"name="LF_HAA"joint="LF_HAA"/><positionclass="hexapod"name="LF_HFE"joint="LF_HFE"/><positionclass="hexapod"name="LF_KFE"joint="LF_KFE"/><positionclass="hexapod"name="LM_HAA"joint="LM_HAA"/><positionclass="hexapod"name="LM_HFE"joint="LM_HFE"/><positionclass="hexapod"name="LM_KFE"joint="LM_KFE"/><positionclass="hexapod"name="LB_HAA"joint="LB_HAA"/><positionclass="hexapod"name="LB_HFE"joint="LB_HFE"/><positionclass="hexapod"name="LB_KFE"joint="LB_KFE"/></actuator>

笔者使用的是六足机器人,所以具有18个活动关节,所以此添加了18个位置模式的电机

注:由于这18个关节高度重复,此处运用了class的概念(用来设置kp和damping,以及forcerange等参数),class的具体用法可以参考mujoco官方的xml文档的说明

5. 在xml文件中添加传感器(sensor)

根据笔者这段时间对mujoco的使用,mujoco的传感器以及其他功能的添加,主要在xml文件中进行实现,(个人认为十分方便、主打一个什么都开放🐶)

目前笔者使用到的传感器,一般都是监控某一个点的数据
site的定义:

<sitename="imu"pos="0 0 0"group="5"/>

传感器定义:

<sensor><gyrosite="imu"name="gyro"/><velocimetersite="imu"name="local_linvel"/><accelerometersite="imu"name="accelerometer"/><framezaxisobjtype="site"objname="imu"name="upvector"/><framelinvelobjtype="site"objname="imu"name="global_linvel"/><frameangvelobjtype="site"objname="imu"name="global_angvel"/></sensor>

如果想替换进自己的xml文件,只需要在xml中创建这个点即可

5. 在xml文件中添加碰撞体

此处需要注意,虽然mujoco支持直接使用stl网格文件作为碰撞体,但是在强化学习训练的过程中,如果没有将mesh文件简化,在训练的过程中会一直报错,并且运算量会显著增大,所以此处建议简化碰撞体!!!

<geomcondim="1"contype="0"conaffinity="0"/>

如果你想添加碰撞体,只需要在后面设置contype和conaffinity即可,此处二者都写0代表不参与碰撞

参考文献
1.https://zhuanlan.zhihu.com/p/699075829
2.https://www.bilibili.com/video/BV1tDxAzTEFM/?spm_id_from=333.1391.0.0

Read more

0. 总纲|Java Web 自研框架 18 年Java架构决策复盘

0. 总纲|Java Web 自研框架 18 年Java架构决策复盘

深耕政务信息化 20 年,自研 Java Web 框架支撑省级新农保、全国首例跨省医保结算等核心民生系统,稳定运行 18 年。 本系列不讲空泛理论,只复盘真实生产环境下的架构决策、踩坑经历、落地方案,不求优雅,但求能跑、能扛、能维护。 在长期维护政务系统的过程中,我逐渐形成一套轻量、稳定、无侵入、可长期演进的架构思路。 这套框架没有依赖流行全家桶,而是围绕业务痛点一点点打磨,最终支撑了海量高并发、高可靠的民生业务。 本系列将从以下 10 个核心决策展开: 1. 放弃 Spring,手写轻量 IOC 容器 2. 注解路由 + 参数路由,实现新老代码平滑迁移 3. 统一入参解析,前后端彻底解耦 4. CGLIB + 责任链实现轻量 AOP,搞定事务、日志、

前端API设计最佳实践:让你的API更优雅

前端API设计最佳实践:让你的API更优雅 毒舌时刻 API设计?听起来就像是后端工程师的事情,关前端什么事?你以为前端只需要调用API就可以了?别天真了!如果API设计得不好,前端开发会变得非常痛苦。 你以为随便设计个API就能用?别做梦了!我见过太多糟糕的API设计,比如返回的数据结构不一致,错误处理不规范,文档不完整,这些都会让前端开发者崩溃。 为什么你需要这个 1. 提高开发效率:良好的API设计可以减少前端开发的工作量,提高开发效率。 2. 减少错误:规范的API设计可以减少前端开发中的错误,提高代码的可靠性。 3. 改善用户体验:合理的API设计可以提高应用的响应速度,改善用户体验。 4. 便于维护:良好的API设计可以使代码更易于维护,减少后期的维护成本。 5. 促进团队协作:规范的API设计可以促进前后端团队的协作,减少沟通成本。 反面教材 // 这是一个典型的糟糕API设计 // 1. 不一致的命名规范 // 获取用户列表 fetch('/api/getUsers') .then(response

基于 Spring Boot 的 Web 三大核心交互案例精讲

基于 Spring Boot 的 Web 三大核心交互案例精讲

—知识点专栏——JavaEE专栏— 作为 Spring Boot 初学者,理解后端接口的编写和前端页面的交互至关重要。本文将通过三个经典的 Web 案例——表单提交、AJAX 登录与状态管理、以及 JSON 数据交互——带您掌握前后端联调的核心技巧和 Spring Boot 的关键注解。 1. 案例一:表单提交与参数绑定(计算求和) 本案例展示最基础、最传统的 Web 交互方式:HTML 表单提交。 1.1 后端代码:CalcController.java 使用 @RestController 简化接口编写,并通过方法参数接收表单数据。 packagecn.overthinker.springboot;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.

前端老铁必看:CSS3十六进制透明度搞定UI朦胧美,拒绝设计稿返工

前端老铁必看:CSS3十六进制透明度搞定UI朦胧美,拒绝设计稿返工

前端老铁必看:CSS3十六进制透明度搞定UI朦胧美,拒绝设计稿返工 * 前端老铁必看:CSS3十六进制透明度搞定UI朦胧美,拒绝设计稿返工 * 开篇先唠两句 * 这玩意儿到底是个啥 * 手把手教你玩出花 * 基础操作:8位十六进制拆解 * 进阶玩法:不用backdrop-filter也能唬人的毛玻璃 * 骚操作预警:透明度渐变做动画 * 别光看优点,坑也得踩明白 * 老项目混用rgba()和#RRGGBBAA,维护地狱 * 构建工具压缩CSS时的坑 * 设计师给的色值是6位,你非要加AA * 真实项目里的那些破事 * 电商大促页面:秒杀氛围感拉满 * 后台管理系统:表格行悬停柔和化 * H5活动页:背景图上加文字,清晰度提升秘籍 * 遇到BUG别慌,先查这三点 * 开发者工具显示正常,页面却不对劲 * 移动端安卓机显示异常 * 颜色看起来发灰,AA值算错了 * 私藏的几个野路子技巧 * SCSS变量封装,懒人必备