【MuJoCo仿真】开源SO100机械臂导入到仿真环境

主要参考:https://github.com/jpata/gym-so100/tree/integration/gym_so100/assets/trs_so_arm100

参考:(八)lerobot开源项目扩展so100的仿真操控(操作记录)_so100机械臂 仿真-CSDN博客

下载:lerobot_so100_sim: lerobot_so100_sim - Gitee.com背景

URDF是Unified Robot Description Format,主要用于ROS中描述机器人的结构、关节、连杆、传感器等。

MJCF是MuJoCo(Multi-Joint dynamics with Contact)的模型格式,用于物理仿真,更注重动力学和接触计算。

 so100模型来源(在solidword画好后导出):https://github.com/TheRobotStudio/SO-ARM100/blob/4e9c5588d8a8415b6a6c2142a0ce8c32207cf3e9/URDF/SO_5DOF_ARM100_8j_URDF.SLDASM/urdf/SO_5DOF_ARM100_8j_URDF.SLDASM.urdf

下载so100的xml,并拖入MuJoCo

git clone https://gitee.com/mrqiguan/lerobot_so100_sim.git

调节右侧的参数可以动 

完整界面


​为什么不能直接将 URDF 导入 MuJoCo?​

虽然 MuJoCo 支持导入 URDF,但 URDF 格式与 MuJoCo 的仿真需求存在显著差异,直接导入可能导致以下问题:

  1. ​视觉与碰撞模型分离​
    URDF 的 <visual> 和 <collision> 标签通常使用不同的几何体(例如高精度网格与简化凸包)。MuJoCo 默认会丢弃 <visual> 几何体(通过 discardvisual="true"),导致模型不可见。因此需要通过 <compiler discardvisual="false"> 显式保留视觉模型。

  2. ​物理参数缺失​
    URDF 缺乏对摩擦、执行器动态特性(如 impratiocone="elliptic")等仿真关键参数的描述,这些需手动添加以确保逼真的物理交互。

  3. ​碰撞优化不足​
    URDF 的碰撞模型可能过于复杂或缺少必要优化。例如:

    • 需要手动提取 ​​凸包碰撞网格​​(如夹爪的凸包化)以提高计算效率。
    • 添加 ​​额外碰撞几何体​​(如夹爪的辅助碰撞盒)以增强接触检测。
  4. ​关节与执行器配置​
    URDF 不定义关节的阻尼、执行器控制模式(如位置/速度控制)等,需在 MJCF 中通过 <default> 和 <actuator> 明确指定。

  5. ​模型层级与命名冲突​
    URDF 的复杂嵌套结构可能导致 MuJoCo 解析时的路径错误(例如材质或网格引用失效),需通过 strippath="false" 保留完整路径。


​转换步骤的必要性​

  1. ​保留视觉模型​

    <mujoco><compiler discardvisual="false" strippath="false"/></mujoco>

    强制保留视觉网格,避免模型在仿真中不可见。

  2. ​统一默认属性​
    将重复的材质、关节属性提取到 <default> 中,简化模型并确保一致性。

  3. ​优化碰撞模型​

    • 将伺服电机网格分离为独立文件,减少内存占用。
    • 为夹爪创建 ​​凸包碰撞网格​​(例如 gripper_collision.stl),替代原始非凸网格以加速碰撞检测。
  4. ​增强物理交互​

    • 添加 impratio="10" 提高接触力的各向异性,模拟非弹性碰撞。
    • 使用 cone="elliptic" 替代默认的圆锥摩擦模型,更贴近真实摩擦行为。
  5. ​避免自碰撞干扰​
    通过 <exclude> 阻止基座(Base)与俯仰关节(Rotation_Pitch)的错误接触检测。

  6. ​执行器与控制​
    添加 <position> 执行器并设置 kp(刚度系数),使关节能响应位置控制指令。


​总结​

URDF 是面向机器人描述的标准格式,而 ​​MJCF 是专为物理仿真优化的格式​​。直接导入 URDF 可能导致模型在 MuJoCo 中表现异常(如穿透、抖动、控制失效)。通过上述转换步骤,可确保:

  • 视觉与碰撞模型的完整性
  • 物理参数符合仿真需求
  • 计算效率与稳定性提升

最终生成的 MJCF 模型在 MuJoCo 中能实现逼真的动态行为,而未经处理的 URDF 可能仅适用于可视化,无法满足仿真精度要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Socat 用法详解:网络安全中的瑞士军刀

Socat 用法详解&#xff1a;网络安全中的强大工具 引言 socat&#xff08;SOcket CAT&#xff09;是一款功能强大的命令行工具&#xff0c;被誉为“网络瑞士军刀”&#xff0c;广泛应用于数据传输、端口转发和网络调试等场景。它支持多种协议和数据通道&#xff08;如文件、管…

永磁同步电机控制算法--基于PI和前馈的位置伺服控制

一、原理介绍 永磁同步伺服系统是包含了电流环、速度环和位置环的三环控制系统。 伺服系统通过电流检测电路和光电编码器检测电动机三相绕组电流和转子位置θ&#xff0c;通过坐标变换&#xff0c;计算出转矩电流分量iq和励磁电流分量id。 位置信号指令与实际转子位置信号的差…

Lucene多种数据类型使用说明

Lucene 作为一款高性能的全文检索引擎库&#xff0c;其核心功能围绕索引和搜索文本数据&#xff0c;但它也支持多种数据类型以满足复杂的应用场景。以下是 Lucene 支持的主要数据类型及其用途的详细说明&#xff1a; 1. 文本类型&#xff08;Text&#xff09; 用途&#xff1a;…

Web网页布局

目录 一、传统的DIVCSS布局&#xff08;使用率最高的&#xff09; 1.div传统的一块块转 2.以猫眼电影为例‘ 3.div布局格式&#xff08;唯一的id属性&#xff0c;不唯一写class重复的&#xff09; 3.2总体布局样式 二、HTML5语义标签CSS3布局 1.把div改为绿色的语义标签…

大模型基础(五):transformers库(下):快速分词器、自动配置类、快速微调

transformers库&#xff08;下&#xff09; 1 快速分词器1.1 Fast 分词器的核心特点1.2 对比示例1.3 何时使用 Fast 分词器&#xff1f;1.4 注意事项 2 自动配置类 AutoConfig2.1 核心功能2.2 基本用法2.3 主要应用场景2.4 常用函数2.5 与具体配置类的区别2.6 注意事项 3 快速微…

在pycharm profession 2020.3上离线安装.whl类型的包(以PySimpleGUI为例)

今天写个小代码&#xff0c;用到了PySimpleGUI。 在pycharm profession 2020.3的项目中的Terminal里运行如下代码即可安装。 python3 -m pip install --force-reinstall --extra-index-url https://PySimpleGUI.net/install PySimpleGUI 安装方法如图&#xff1a; 安装后使用…

SpringBoot整合RabbitMQ(Java注解方式配置)

1.生产端 1. 创建生产者SpringBoot工程 2. 引入start&#xff0c;依赖坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 3. 编写yml配置&#xff0c;基本…

分析strtol(),strtoul()和strtod()三个函数的功能

字符串转换为数值部分和子字符串首地址的函数有strtol(),strtoul()和strtod()三个函数。 1、strtol()函数 long int strtol(const char *str, char **endptr, int base) //当base0时,若字符串不是以"0","0x"和"0X"开头,则将数字部分按照10进制…

Spring 的事务隔离

在Spring框架中&#xff0c;事务管理是一个非常重要的方面&#xff0c;它允许开发者以声明式的方式定义事务边界&#xff0c;并且通过配置不同的隔离级别来控制并发事务的行为。Spring支持多种事务管理方式&#xff0c;包括编程式事务管理和声明式事务管理&#xff08;如使用Tr…

单片机自动排列上料控制程序

/****L2233 CODE11549 2025 4 18 08:53*******/ /***轴承上料机控制 提升 摇摆 光电检测***/ /***2025 3 21 电机控制PCB板 PAST ***/ /*2.3 2.2 1.2 1.3 1.4 1.5 1.6 1.7 5.3 3.2 ***/ /*启动 解锁 光电 接近 前停 后停 电机前 电机后*/ #include &quo…

力扣119题解

记录 2025.5.5 题目&#xff1a; 思路&#xff1a; 代码: class Solution {public List<Integer> getRow(int rowIndex) {List<Integer> row new ArrayList<Integer>();row.add(1);for (int i 1; i < rowIndex; i) {row.add((int) ((long) row.get(i…

国产化海光C86架构服务器安装windows实录

最近几年与红蓝关系急转直下&#xff0c;尤其是科技领域尤为突出。随之而来的就是软硬件的国产化大潮。由于行业的原因根据要求必须使用国产化服务器、国产化操作系统、国产化数据库、国产化中间件。虽然闭关锁国断开红蓝联系可以在一定程度激发国产化发展&#xff0c;但是不得…

Oracle OCP证书有效期是三年?

这一段时间&#xff0c;网上经常传出消息Oracle OCM认证证书有效期为三年&#xff0c;其实这个假消息&#xff0c;通过博睿谷与Oracle官方人员确认&#xff0c;OCP认证证书有效期是永久的。 OCP证书本身永久有效&#xff0c;但老版本的OCP证书代表着更多的项目经验&#xff0c…

Python 闭包:函数式编程中的魔法变量容器

闭包与匿名函数的常见混淆 在编程社区中&#xff0c;闭包(closure)和匿名函数(anonymous function)经常被混为一谈&#xff0c;这种混淆有其历史根源&#xff1a; 历史发展因素&#xff1a;在早期编程实践中&#xff0c;在函数内部定义函数并不常见&#xff0c;直到匿名函数广…

迅睿CMS导入别站数据库

<?php if (isset($_GET[go])) {$host localhost;// 数据库服务器$username uname;// 数据库用户名$password pwd;// 数据库密码$database database;// 数据库名$cmscid $_GET[cmscid];$mtabcid $_GET[mtabcid];if ($_GET[go] step1) {//第一步&#xff1a;先获取CMS…

基于C++、JsonCpp、Muduo库实现的分布式RPC通信框架

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;项目 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 项目介绍JsonCpp库简单介绍Muduo库简单介绍C11异步操作——std::future1. 使用 std::async 关联异步任务2. std::packaged_task 配…

EPSG:3857 和 EPSG:4326 的区别

EPSG:3857 和 EPSG:4326 是两种常用的空间参考系统&#xff0c;主要区别在于坐标表示方式和应用场景。以下是它们的核心差异&#xff1a; 1. 坐标系类型 EPSG:4326&#xff08;WGS84&#xff09; 地理坐标系&#xff08;Geographic Coordinate System&#xff09;&#xff0c;基…

Docker 使用与部署(超详细)

目录 引入 入门使用 部署对比 镜像仓库 命令解释 基础 常见命令 示例 数据卷的使用 数据卷的概念 数据卷的使用 挂载本地目录文件 镜像 结构 Dockerfile 容器网络 部署 DockerCompose 语法 ​编辑 基础命令 引入 当我们在 Linux 上部署一个集成了很多中间件…

JAVA在线考试系统考试管理题库管理成绩查询重复考试学生管理教师管理源码

一、源码描述 这是一套在线考试源码&#xff0c;基于SpringBootVue框架&#xff0c;后端采用JAVA语言&#xff0c;可以用于重复考试&#xff0c;一、管理员功能&#xff1a;1、考试管理&#xff1a;包括考试查询与添加考试功能&#xff0c;2、题库管理&#xff1a;管理所有题库…

在Qt Creator中使用CUDA

要在Qt Creator项目中使用CUDA进行GPU加速计算&#xff0c;你需要进行一些配置。以下是详细步骤&#xff1a; 1. 安装必要软件 安装最新版本的NVIDIA CUDA Toolkit 确保已安装Qt Creator和兼容的编译器(如MSVC或GCC) 2. 创建Qt项目 打开Qt Creator&#xff0c;创建一个新的…