robosuite导入自定义机器人

目录

  • 目的:
  • 案例一:
    • 成果展示
    • 具体步骤:
    • URDF文件准备
    • xml文件生成
    • xml修改
    • 机器人构建


目的:

实现其他标准/非标准机器人的构建

案例一:

成果展示

添加机器人JAKA ZU 7 这个模型

具体步骤:

URDF文件准备

github 或机器人官网,下载 urdf 模型以及对应的 mesh

xml文件生成

官方提供的 urdf 模型如下:

<?xml version="1.0" encoding="utf-8" ?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com) 
     Commit Version: 1.5.1-0-g916b5db  Build Version: 1.5.7152.31018
     For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot name="jaka_zu7">
    <!-- LINK -->
    <link name="world" />

    <link name="Link_0">     
        <inertial>
            <origin xyz="0.00096371 8.8222E-08 0.019555" rpy="0 0 0" />
            <mass value="4.0392" />
            <inertia ixx="0.0048763" ixy="-1.8056E-07" ixz="2.5196E-05" iyy="0.0068003" iyz="-1.7678E-09" izz="0.010618" />
        </inertial>

        <visual>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <geometry>
                <mesh filename="/home/idm/Downloads/jaka_robot_v2.2/src/jaka_description/meshes/jaka_zu7_meshes/Link_0.STL" />
            </geometry>
            <material name="">
                <color rgba="0.84706 0.84706 0.84706 1" />
            </material>
        </visual>
        <collision>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <geometry>
                <mesh filename="/home/idm/Downloads/jaka_robot_v2.2/src/jaka_description/meshes/jaka_zu7_meshes/Link_0.STL" />
            </geometry>
        </collision>
    </link>
        <gazebo>
        <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
            <robotNamespace>/</robotNamespace>
            <!-- <robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
            <legacyModeNS>true</legacyModeNS> -->
        </plugin>
    </gazebo>
</robot>

修改最下面,将 gazebo 改成:

    <mujoco>
        <compiler 
        meshdir="/home/idm/Downloads/jaka_robot_v2.2/src/jaka_description/meshes/jaka_zu7_meshes/" 
        balanceinertia="true" 
        discardvisual="false" />
    </mujoco>

注意修改下 meshdir 的路径。

然后执行 ./compile urdf robot.xml,实现 urdfxml 的转变,后续操作之需要在 xml 的基础上修改即可;

xml修改

原始生成的文件如下:

<mujoco model="jaka_zu7">
    <compiler angle="radian" meshdir="/home/idm/Downloads/jaka_robot_v2.2/src/jaka_description/meshes/jaka_zu7_meshes/" />
    <size njmax="500" nconmax="100" />
    <asset>
        <mesh name="Link_0" file="Link_0.STL" />
        <mesh name="Link_1" file="Link_1.STL" />
        <mesh name="Link_2" file="Link_2.STL" />
        <mesh name="Link_3" file="Link_3.STL" />
        <mesh name="Link_4" file="Link_4.STL" />
        <mesh name="Link_5" file="Link_5.STL" />
        <mesh name="Link_6" file="Link_6.STL" />
    </asset>
    <worldbody>
        <geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.84706 0.84706 0.84706 1" mesh="Link_0" />
        <geom type="mesh" rgba="0.84706 0.84706 0.84706 1" mesh="Link_0" />
        <body name="Link_1" pos="0 0 0.12015">
            <inertial pos="-2.5186e-07 0.0033226 -0.001509" quat="1 0.00056994 2.2456e-05 6.30952e-05" mass="15.135" diaginertia="0.044302 0.043091 0.030523" />
            <joint name="joint_1" pos="0 0 0" axis="0 0 1" limited="true" range="-6.28 6.28" />
            <geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.84706 0.84706 0.84706 1" mesh="Link_1" />
            <geom type="mesh" rgba="0.84706 0.84706 0.84706 1" mesh="Link_1" />
            <body name="Link_2" pos="0 0 0" quat="0.707105 0.707108 0 0">
                <inertial pos="0.18 8.8001e-09 -0.14308" quat="0.5 0.5 0.5 0.5" mass="42.872" diaginertia="1.1119 1.0844 0.1014" />
                <joint name="joint_2" pos="0 0 0" axis="0 0 1" limited="true" range="-1.48 4.62" />
                <geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.84706 0.84706 0.84706 1" mesh="Link_2" />
                <geom type="mesh" rgba="0.84706 0.84706 0.84706 1" mesh="Link_2" />
                <body name="Link_3" pos="0.36 0 0">
                    <inertial pos="0.15515 5.4643e-08 -0.012576" quat="0.517406 0.481957 0.481946 0.517433" mass="16.562" diaginertia="0.28365 0.279787 0.0196608" />
                    <joint name="joint_3" pos="0 0 0" axis="0 0 1" limited="true" range="-3.05 3.05" />
                    <geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.84706 0.84706 0.84706 1" mesh="Link_3" />
                    <geom type="mesh" rgba="0.84706 0.84706 0.84706 1" mesh="Link_3" />
                    <body name="Link_4" pos="0.30353 0 -0.11501">
                        <inertial pos="-2.1345e-06 -0.0058004 0.0026717" quat="0.699182 0.714944 2.86648e-05 -8.42093e-06" mass="5.5525" diaginertia="0.0092564 0.00897016 0.00522324" />
                        <joint name="joint_4" pos="0 0 0" axis="0 0 1" limited="true" range="-1.48 4.62" />
                        <geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.84706 0.84706 0.84706 1" mesh="Link_4" />
                        <geom type="mesh" rgba="0.84706 0.84706 0.84706 1" mesh="Link_4" />
                        <body name="Link_5" pos="0 -0.1135 0" quat="0.707105 0.707108 0 0">
                            <inertial pos="-2.0304e-06 -0.0028889 -0.0023424" quat="0.709446 0.70476 -1.15346e-05 9.23912e-07" mass="6.3339" diaginertia="0.012993 0.0127003 0.0058451" />
                            <joint name="joint_5" pos="0 0 0" axis="0 0 1" limited="true" range="-6.28 6.28" />
                            <geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.84706 0.84706 0.84706 1" mesh="Link_5" />
                            <geom type="mesh" rgba="0.84706 0.84706 0.84706 1" mesh="Link_5" />
                            <body name="Link_6" pos="0 0.107 0" quat="0.707105 -0.707108 0 0">
                                <inertial pos="2.7652e-05 -1.3485e-05 -0.021245" quat="-0.0453216 0.705107 0.0468242 0.7061" mass="1.4169" diaginertia="0.0011337 0.00072384 0.000718438" />
                                <joint name="joint_6" pos="0 0 0" axis="0 0 1" limited="true" range="-6.28 6.28" />
                                <geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.84706 0.84706 0.84706 1" mesh="Link_6" />
                                <geom type="mesh" rgba="0.84706 0.84706 0.84706 1" mesh="Link_6" />
                            </body>
                        </body>
                    </body>
                </body>
            </body>
        </body>
    </worldbody>
</mujoco>
  1. 首先把 compiler, size 这两行去掉,没用了,然后把 asset 中的 file 修改下路径即可;
  2. 增加代码
<actuator>
        <motor ctrllimited="true" ctrlrange="-150.0 150.0" joint="joint_1" name="torq_j1"/>
        <motor ctrllimited="true" ctrlrange="-150.0 150.0" joint="joint_2" name="torq_j2"/>
        <motor ctrllimited="true" ctrlrange="-150.0 150.0" joint="joint_3" name="torq_j3"/>
        <motor ctrllimited="true" ctrlrange="-28.0 28.0" joint="joint_4" name="torq_j4"/>
        <motor ctrllimited="true" ctrlrange="-28.0 28.0" joint="joint_5" name="torq_j5"/>
        <motor ctrllimited="true" ctrlrange="-28.0 28.0" joint="joint_6" name="torq_j6"/>
</actuator>
  1. link_6 后面加上 right_hand
 <body name="Link_6" pos="0 0.107 0" quat="0.707105 -0.707108 0 0">
 <inertial pos="2.7652e-05 -1.3485e-05 -0.021245" quat="-0.0453216 0.705107 0.0468242 0.7061" mass="1.4169" diaginertia="0.0011337 0.00072384 0.000718438" />
 <joint name="joint_6" pos="0 0 0" axis="0 0 1" limited="true" range="-6.28 6.28" />
 <geom type="mesh" contype="0" conaffinity="0" group="1" rgba="0.84706 0.84706 0.84706 1" mesh="Link_6" />
       <geom type="mesh" rgba="0.84706 0.84706 0.84706 1" mesh="Link_6" />
             <body name="right_hand" pos="0 0.098 0" quat="0.707 -0.707 0 0" >
             <!-- This camera points out from the eef. -->
               <camera mode="fixed" name="eye_in_hand" pos="0.05 0 0" quat="0 0.707108 0.707108 0" fovy="75"/>
        </body>
</body>

截止到此,该机器人配置文件可用了。

机器人构建

从原有机器人中,随便找个机器人的 py 文件,复制一份,然后该个名字,并在 init 中注册以下就可以了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在深度学习中常见的初始化操作

目录 截断正态分布来初始化张量 逐行代码解释 相关理论解释 截断正态分布函数 截断正态分布的定义 截断正态分布的作用 计算截断点的作用 具体步骤 正态分布的累积分布函数&#xff08;CDF&#xff09; 正态分布的累积分布函数与误差函数的关系 示例计算 误差函数 应…

切换分支报错:Untracked Files Prevent Checkout

切换分支报错&#xff1a;Untracked Files Prevent Checkout 分支切换 Untracked Files Prevent Checkout 新起的项目在切换master分支到工作分支时&#xff0c;出现下图的问题&#xff1a; Untracked Files Prevent Checkout Move or commit them before checkout 网上的解决…

pip(包管理器) for Python

pip是什么 pip是Python的包安装程序&#xff0c;即python包管理器。您可以使用 pip 从Python包索引和其他索引安装包。 1. pip 安装 python 包 pip install 包名 例如&#xff1a;pip install pymssql &#xff1a; 使用pip安装数据库驱动包 pymssql 2.pip 卸载 python 包 pi…

数据结构2(初):顺序表和链表

目录 1、线性表 2、顺序表 2.1、概念及结构 2.2、顺序表的实现 2.3、顺序表的问题及思考 3、链表 3.1、链表的概念及结构 3.2、链表的分类 3.3、无头单向非循环链表的实现 3.4、带头双向循环链表的实现 4、顺序表和链表的区别和联系 1、线性表 线性表是n个具有相同特…

200+有趣的HTML前端游戏项目合集(5月17日更新,持续更新中)

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

工作干到抑郁了,要不要辞职?

在知乎上看到以为网友提问&#xff1a;工作干到抑郁&#xff0c;该不该辞职&#xff1f; 今天和大家聊聊这个话题&#xff0c;如果你也有类似的情况&#xff0c;希望这篇文章能帮到你。 熟悉瑶琴的朋友&#xff0c;都知道瑶琴在去年有一次裸辞的经历。离职前&#xff0c;严重的…

多台Centos快速区分,让Centos开机自动显示它的IP地址!

背景说明&#xff1a;当公司拥有多台Centos服务器&#xff0c;管理员很容易弄混淆导致不好区分&#xff0c;在这样的情况下我们可以写个简单脚本来实现开机自动显示它的IP地址&#xff0c;从而达到区分开来的结果&#xff01; 首先我们来开下效果&#xff0c;登录之前的 下面是…

【加密与解密(第四版)】第十八章笔记

第十八章 反跟踪技术 18.1 由BeginDebugged引发的蝴蝶效应 IsDebuggerPresent()函数读取当前进程PEB中的BeginDebugged标志 CheckRemoteDebuggerPresent() 反调试总结&#xff1a;https://bbs.kanxue.com/thread-225740.htm https://www.freebuf.com/articles/others-articl…

细胞冻存——让你的细胞“长生不老”

《星际穿越》电影中提到漫长的太空旅程中&#xff0c;宇航员可以进入休眠水床休眠&#xff0c;并自行设定唤醒时间。在《异形》《深空失忆》《三体》等科幻作品中&#xff0c;都出现此类技术。《三体》中&#xff0c;休眠后来成为人类最普遍的一项技术。技术上的人类低温休眠&a…

JavaEE-网络初识

文章目录 一、网络背景1.1 起源1.2 国内网络的发展 二、关键概念2.1 网络2.2 设备2.3 ip地址与端口号 三、协议3.1 协议分层3.2 OSI七层模型3.3 TCP/IP五层模型3.4 数据传输过程的简单叙述 一、网络背景 1.1 起源 在国外大概时上世纪70年代左右&#xff0c;网络就出现了&…

项目集成SkyWalking,基于k8s搭建

一、搭建SkyWalking 官方文档&#xff08;英文&#xff09;&#xff1a;skywalking/docs at master apache/skywalking 中文可以使用&#xff1a;GitHub - SkyAPM/document-cn-translation-of-skywalking: [已过期,请使用官网AI文档] The CN translation version of Apache…

【LeetCode:496. 下一个更大元素 I + 单调栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

深度学习——图像分类(CNN)—训练模型

训练模型 1.导入必要的库2.定义超参数3.读取训练和测试标签CSV文件4.确保标签是字符串类型5.显示两个数据框的前几行以了解它们的结构6.定义图像处理参数7.创建图像数据生成器8.设置目录路径9.创建训练和验证数据生成器10.构建模型11.编译模型12.训练模型并收集历史13.绘制损失…

【AD21】PCB板尺寸与层名称标注

PCB绘制完成后&#xff0c;需要给上级或生产制造商发送输出文件&#xff0c;输出文件中包含板尺寸标识和层标识可以方便工作的交接。 1. 板尺寸标识 首先板尺寸标识所在的层要在与板框不同的机械层&#xff0c;这里我选择机械5层。 点击放置->尺寸->线性尺寸 这里板尺…

微信小程序uniapp+django洗脚按摩足浴城消费系统springboot

原生wxml开发对Node、预编译器、webpack支持不好&#xff0c;影响开发效率和工程构建。所以都会用uniapp框架开发 前后端分离&#xff0c;后端给接口和API文档&#xff0c;注重前端,接近原生系统 使用Navicat或者其它工具&#xff0c;在mysql中创建对应名称的数据库&#xff0…

利用大模型构造数据集,并微调大模型

一、前言 目前大模型的微调方法有很多&#xff0c;而且大多可以在消费级显卡上进行&#xff0c;每个人都可以在自己的电脑上微调自己的大模型。 但是在微调时我们时常面对一个问题&#xff0c;就是数据集问题。网络上有许多开源数据集&#xff0c;但是很多时候我们并不想用这…

Gerchberg-Saxton (GS) 和混合输入输出(Hybrid Input-Output, HIO)算法

文章目录 1. 简介2. 算法描述3. 混合输入输出&#xff08;Hybrid Input-Output, HIO&#xff09;算法3.1 HIO算法步骤3.2 HIO算法的优势3.3 算法描述 4. 算法实现与对比5. 总结参考文献 1. 简介 Gerchberg-Saxton (GS) 算法是一种常用于相位恢复和光学成像的迭代算法。该算法最…

【抽代复习笔记】18-置换练习题(2)及两个重要定理

最近一直忙于学校的事情&#xff0c;好久没更新了&#xff0c;实在抱歉。接下来几期大概也会更得慢一些&#xff0c;望见谅。 练习4&#xff1a;写出4次对称群S4中所有置换。 解&#xff1a;由上一篇笔记结尾的定理我们知道&#xff0c;4次对称群的阶&#xff08;也就是所含元…

JSON的序列化与反序列化以及VSCode执行Run Code 报错

JSON JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式。 JSON格式 { "name":"金苹果", "info":"种苹果" } 一个对象&#xff1a;由一个大括号表示.括号中通过键值对来描述对象的属性 (可以理解为, 大…

2024年 电工杯 (A题)大学生数学建模挑战赛 | 园区微电网风光储协调优化配置 | 数学建模完整代码解析

DeepVisionary 每日深度学习前沿科技推送&顶会论文&数学建模与科技信息前沿资讯分享&#xff0c;与你一起了解前沿科技知识&#xff01; 本次DeepVisionary带来的是电工杯的详细解读&#xff1a; 完整内容可以在文章末尾全文免费领取&阅读&#xff01; 问题重述…