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

无人机目标检测数据集介绍-14,751张图片 无人机检测 航拍图像

无人机目标检测数据集介绍-14,751张图片 无人机检测 航拍图像

🚁 无人机目标检测数据集介绍-14,751张图片 * 📦 已发布目标检测数据集合集(持续更新) * 🚁 无人机实例目标检测数据集介绍 * 📌 数据集概览 * 包含类别 * 🎯 应用场景 * 🖼 数据特性 * 🌟 项目功能 * 🔗 技术标签 * YOLOv8 训练实战 * 📦 1. 环境配置 * 安装 YOLOv8 官方库 ultralytics * 📁 2. 数据准备 * 2.1 数据标注格式(YOLO) * 2.2 文件结构示例 * 2.3 创建 data.yaml 配置文件 * 🚀 3. 模型训练 * 关键参数补充说明: * 📈 4. 模型验证与测试 * 4.1 验证模型性能 * 关键参数详解 * 常用可选参数 * 典型输出指标 * 4.2 推理测试图像 * 🧠 5. 自定义推理脚本(

一文讲清楚RAG 四大模式:Naive RAG、Advanced RAG、Modular RAG 与 Agentic RAG

一文讲清楚RAG 四大模式:Naive RAG、Advanced RAG、Modular RAG 与 Agentic RAG

随着技术迭代,RAG 已从最初的简单架构发展出多种进阶形态。本文将系统解析 RAG 的四大主流模式 ——Naive RAG、Advanced RAG、Modular RAG 与 Agentic RAG,从工作原理、技术特点到适用场景进行全方位对比,为技术选型提供参考。 一、RAG 基础:检索增强生成的核心逻辑 在深入模式解析前,需先明确 RAG 的核心逻辑。简单来说,RAG 由检索(Retrieval) 与生成(Generation) 两大模块构成: 检索模块:从预设知识库中精准定位与用户问题相关的信息片段(如文档、段落、句子); 生成模块:基于检索到的信息,结合大语言模型生成符合上下文、逻辑连贯的答案。 这种 “先检索再生成” 的模式,既保留了 LLM 的语言理解与生成能力,又通过外部知识的引入弥补了模型训练数据过时、事实准确性不足的缺陷。

win11本地部署openclaw实操第2集-让小龙虾具有telegram机器人能力和搜索网站能力

win11本地部署openclaw实操第2集-让小龙虾具有telegram机器人能力和搜索网站能力

1 按照第一集的部署完成后,我们就开始考虑给小龙虾增加telegram机器人和搜索网站能力,实现效果如下: 2 telegram机器人能力部署 C:\Users\Administrator.openclaw的配置文件openclaw.json 增加一段内容 "channels":{"telegram":{"enabled": true, "dmPolicy":"pairing", "botToken":"你的telegram机器人的token", "groupPolicy":"allowlist", "streamMode":"partial", "network":{"

FPGA开发必看:Vivado IP核调用操作指南

FPGA高效开发实战:Vivado IP核调用全解析 你有没有遇到过这样的场景? 项目进度紧张,系统需要实现DDR3缓存、多路时钟分发和高速数据流控,但手写HDL代码从头搭建这些模块不仅耗时,还容易出错。调试几天后发现,问题竟然出在一个看似简单的异步FIFO亚稳态处理上。 这正是 Vivado IP核 存在的意义——它不是锦上添花的工具,而是现代FPGA开发中不可或缺的“工程加速器”。作为Xilinx(现AMD)官方提供的预验证功能模块,IP核让开发者能像搭积木一样快速构建复杂系统,把精力真正集中在核心算法与架构创新上。 本文将带你 深入Vivado IP核的实际应用全流程 ,不讲空泛概念,只聚焦真实项目中你会用到的关键操作、配置技巧和避坑指南。我们将以几个高频使用的IP为例,从添加、配置、连接到调试,一步步还原一个工程师在实际开发中的完整工作流。 为什么非要用IP核?一次对比胜过千言万语 我们先来看一组真实项目的开发数据对比: 模块类型 手动编码(估计工时) 使用Vivado IP核(实际耗时) 时钟管理单元 8~12小时 15分钟(图形化配置 + 自动生成) 异步