机械臂如何稳稳上桌?Mujoco场景修改实操

embedded/2025/3/31 7:42:06/

视频讲解:

机械臂如何稳稳上桌?Mujoco场景修改实操

前面《常见机械臂模型不用找!Mujoco这儿都有!》中介绍的mujoco-menagerie中机械臂大多都是base_link放在地上的,这些场景往往和真实的场景对应不上,比如机械臂可能是安装在桌子上,或者安装在底盘上,所以就涉及到修改场景模型文件,今天我们就以so-arm100这个机械臂为例,为其添加一个桌子。

首先我们看下so-arm100原有的场景文件

<mujoco model="so_arm100 scene"><include file="so_arm100.xml"/><statistic center="0 -0.2 0.1" extent="0.4"/><visual><headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0"/><rgba haze="0.15 0.25 0.35 1"/><global azimuth="140" elevation="-30"/></visual><asset><texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="512" height="3072"/><texture type="2d" name="groundplane" builtin="checker" mark="edge" rgb1="0.2 0.3 0.4" rgb2="0.1 0.2 0.3"markrgb="0.8 0.8 0.8" width="300" height="300"/><material name="groundplane" texture="groundplane" texuniform="true" texrepeat="5 5" reflectance="0.2"/></asset><worldbody><light pos="0 0 1.5" dir="0 0 -1" directional="true"/><geom name="floor" size="0 0 0.05" type="plane" material="groundplane"/></worldbody>
</mujoco>

原有模型只描述了地面、天空等环境

我们可以参考aloha的场景,他是有桌子的,最起码桌子的mesh文件不用自己找了

然后在so-arm100的scene.xml上做修改,大概如下的步骤:

a. 首先需要把桌子的模型放进assets文件夹中

b. 然后添加路径说明

c. 添加mesh文件以及texture描述

d. 添加位置关系描述

修改后的文件如下,可以重新命名为scene_with_table.xml

<mujoco model="so_arm100 scene"><compiler meshdir="assets" texturedir="assets"/><include file="so_arm100.xml"/><statistic center="0 -0.2 0.1" extent="0.4"/><visual><headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0"/><rgba haze="0.15 0.25 0.35 1"/><global azimuth="140" elevation="-30"/></visual><asset><mesh file="tablelegs.obj"/><mesh file="tabletop.obj"/><texture type="skybox" builtin="gradient" rgb1="0.3 0.5 0.7" rgb2="0 0 0" width="512" height="3072"/><texture type="2d" name="groundplane" builtin="checker" mark="edge" rgb1="0.2 0.3 0.4" rgb2="0.1 0.2 0.3"markrgb="0.8 0.8 0.8" width="300" height="300"/><texture type="2d" file="small_meta_table_diffuse.png"/><material name="groundplane" texture="groundplane" texuniform="true" texrepeat="5 5" reflectance="0.2"/><material name="table" texture="small_meta_table_diffuse"/></asset><worldbody><light pos="0 0 1.5" dir="0 0 -1" directional="true"/><geom name="floor" size="0 0 0.05" type="plane" material="groundplane" pos="0 0 -.75"/><site name="worldref" pos="0 0 -0.75"/><geom mesh="tabletop" material="table" class="visual" pos="0 0 -0.75" quat="1 0 0 1"/><geom mesh="tablelegs" material="table" class="visual" pos="0 0 -0.75" quat="1 0 0 1"/><geom name="table" pos="0 0 -0.1009" size="0.61 0.37 0.1" type="box" class="collision"/><camera name="overhead_cam" focal="1.93e-3 1.93e-3" resolution="1280 720" sensorsize="3896e-6 2140e-6"pos="0 -0.303794 1.02524" mode="fixed" quat="0.976332 0.216277 0 0"/><camera name="worms_eye_cam" focal="1.93e-3 1.93e-3" resolution="1280 720" sensorsize="3896e-6 2140e-6"pos="0 -0.377167 0.0316055" mode="fixed" quat="0.672659 0.739953 0 0"/></worldbody>
</mujoco>

simulate trs_so_arm100/scene_with_table.xml


http://www.ppmy.cn/embedded/177356.html

相关文章

VO、DTO、POJO、PO和DO 的区别

在 Java 开发中&#xff0c;VO、DTO、POJO、PO、DO 等概念经常被使用&#xff0c;它们的主要区别在于 用途 和 设计目的。 &#x1f525; 1. VO&#xff08;View Object&#xff09;—— 视图对象 目的&#xff1a; 用于前端展示&#xff0c;通常是后端返回给前端的数据格式。 …

office_word中使用宏以及DeepSeek

前言 Word中可以利用DeepSeek来生成各种宏&#xff0c;从而生成我们需要各种数据和图表&#xff0c;这样可以大大减少我们手工的操作。 1、Office的版本 采用的是微软的office2016&#xff0c;如下图&#xff1a; 2、新建一个Word文档 3、开启开发工具 这样菜单中的“开发工具…

Python常用爬虫库介绍

Python有非常多的爬虫框架&#xff0c;主要分为三大类。 一种是请求库&#xff0c;比如requests、urllib、httpx等&#xff0c;负责向目标网站发送HTTP请求并获取响应数据。Scrapy也属于这个大类&#xff0c;不过Scrapy功能更加完善&#xff0c;可以提供异步网络请求、高效的数…

从零构建大语言模型全栈开发指南:第三部分:训练与优化技术-3.2.3预训练任务设计:掩码语言建模(MLM)与下一句预测(NSP)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 3.2.3 预训练任务设计:`掩码语言建模(MLM)`与下一句预测(NSP)1. 掩码语言建模(`Masked Language Modeling, MLM`)1.1 MLM的核心原理与数学形式1.2 高级掩码优化技术1.2.1 `Span Masking(SpanBER…

二分算法-day2

1.咒语和药水的成功对数 题目 解析 注意点&#xff1a;函数引用数组要加 &&#xff0c;不然会超时&#xff1b;时间复杂度&#xff1a;O((n m) * log m&#xff1b;空间复杂度&#xff1a;O(1)&#xff1b; 代码 class Solution {int lower_bound(vector<int>&a…

吐血教程:搭建Flutter开发环境

Flutter 1.9 稳定版发布&#xff1a;跨平台开发的未来&#xff1f; 9月11日&#xff0c;在上海举办的谷歌开发者大会“Google Developer Days”上&#xff0c;谷歌Flutter团队宣布正式推出Flutter 1.9稳定版。这是Flutter迄今为止最大的一次版本更新&#xff0c;100余位贡献者…

两个手机IP地址一样说明什么?

在当今数字化时代&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;其重要性不言而喻。然而&#xff0c;当两部手机的IP地址相同时&#xff0c;这背后可能隐藏着多种原因和潜在影响。本文将深入探讨两部手机IP地址相同的含义、可能的原因及其对网络通信和隐私安全的影…

每日一题第15届蓝桥杯c/c++本科B组省赛第3题

#include<iostream> using namespace std; int jud(int a) {int c 1;//位数while (a) {int t a % 10;if (c % 2 ! 0) {//奇数位if (t % 2 0)return 0;//偶数不符合}else {//偶数位if (t % 2 ! 0)return 0;//奇数不符合}c;a / 10;}return 1; } int main() {int count …