【mujoco( DeepMind )】入门学习记录1

news2024/11/18 13:37:51

更新日期:202409

前言:

记录下自己学习Mujoco历程,直接使用deepMind官方给的python使用方案。
平台:
python 3.12: DeepMind维护的Mujoco可以直接在3.8版本以后的python中直接安装。
Anacoda:利用anacoda管理的自己python环境。避免安装过多版本的python。

1.安装

pip install mujoco

在anacoda中,点运行,选择openTerminal。
在这里插入图片描述
一般3.8版本以上的可以顺利安装!

2.快速上手:

在命令窗terminal中运行

python -m mujoco.viewer   #代码1:启动mujoco,可以通过拖放加载模型。
python -m mujoco.viewer --mjcf=/path/to/some/mjcf.xml    #代码2:为指定的模型文件启动mujoco。

注意xml文件所在的路径中一定不要有中文!!!
xml文件用于描述机器人机械臂模型,后缀为.xml,此处提供几篇大佬文章供参考:
https://zhuanlan.zhihu.com/p/99991106
https://zhuanlan.zhihu.com/p/143983506

运行代码1:
在这里插入图片描述
弹出Mujoco窗口,但此时没有机器人模型,提示可以Drag-and-drop model file.
在这里插入图片描述
将.xml格式的机器人模型拖入mujoco即可显示,此处文件夹路径不要有中文.
在这里插入图片描述
如果没有xml模型,可以将下面的代码复制到txt文件中,保存,修改文件后缀为.xml,这段代码源自官方Mujoco Decumentation

<mujoco>
   <worldbody>
      <light diffuse=".5 .5 .5" pos="0 0 3" dir="0 0 -1"/>    
      <geom type="plane" size="1 1 0.1" rgba=".9 0 0 1"/>
      <body pos="0 0 1">
         <joint type="free"/>
         <geom type="box" size=".1 .2 .3" rgba="0 .9 0 1"/>
      </body>
   </worldbody>
</mujoco>

运行代码2:
在这里插入图片描述
代码2相当于直接打开对应文件夹的xml模型.

Python中使用

代码参考:mujoco最新教程

import time

import mujoco
import mujoco.viewer

import os

file_path = r"C:\Users\XXX\Desktop\robotxml\robot3.xml" #修改为自己的xml地址,注意地址不要有中文!!
print(f"File exists: {os.path.exists(file_path)}")
print(f"Current working directory: {os.getcwd()}")
print(f"File is readable: {os.access(file_path, os.R_OK)}")

m = mujoco.MjModel.from_xml_path(file_path)
d = mujoco.MjData(m)

with mujoco.viewer.launch_passive(m, d) as viewer:
    # 30时间步长后关闭mujoco程序窗口 viewer
    start = time.time()
    while viewer.is_running() and time.time() - start < 30:
        step_start = time.time()

        # Mj_step可以替换为同样求值的代码
        # mj_step可以替换为同样评估策略并在执行物理之前应用控制信号的代码。
        mujoco.mj_step(m, d)

        # 查看器选项的修改示例:每两秒钟切换一次接触点。
        with viewer.lock():
            viewer.opt.flags[mujoco.mjtVisFlag.mjVIS_CONTACTPOINT] = int(d.time % 2)

        # 获取物理状态的更改,应用扰动,从GUI更新选项。
        viewer.sync()

        # 粗略的计时,相对于挂钟会有漂移。
        time_until_next_step = m.opt.timestep - (time.time() - step_start)
        if time_until_next_step > 0:
            time.sleep(time_until_next_step)

分享下用的xml格式文件:

<mujoco model="example">
  <default>
    <geom rgba=".8 .6 .4 1"/>
  </default>

  <asset>
    <texture type="skybox" builtin="gradient" rgb1="1 1 1" rgb2=".6 .8 1" width="256" height="256"/>
  </asset>

  <worldbody>
    <light pos="0 1 1" dir="0 -1 -1" diffuse="1 1 1"/>
    <body pos="0 0 1">
      <joint type="ball"/>
      <geom type="capsule" size="0.06" fromto="0 0 0  0 0 -.4"/>
      <body pos="0 0 -0.4">
        <joint axis="0 1 0"/>
        <joint axis="1 0 0"/>
        <geom type="capsule" size="0.04" fromto="0 0 0  .3 0 0"/>
        <body pos=".3 0 0">
          <joint axis="0 1 0"/>
          <joint axis="0 0 1"/>
          <geom pos=".1 0 0" size="0.1 0.08 0.02" type="ellipsoid"/>
          <site name="end1" pos="0.2 0 0" size="0.01"/>
        </body>
      </body>
    </body>

    <body pos="0.3 0 0.1">
      <joint type="free"/>
      <geom size="0.07 0.1" type="cylinder"/>
      <site name="end2" pos="0 0 0.1" size="0.01"/>
    </body>
  </worldbody>

  <tendon>
    <spatial limited="true" range="0 0.6" width="0.005">
      <site site="end1"/>
      <site site="end2"/>
    </spatial>
  </tendon>
</mujoco>

使用效果如下图!
在这里插入图片描述

3.声明:引用了大佬的文章和代码,已注明,侵删!

引用

  1. https://mujoco.readthedocs.io/en/stable/overview.html
  2. https://zhuanlan.zhihu.com/p/380716224
  3. https://zhuanlan.zhihu.com/p/639017263
  4. https://zhuanlan.zhihu.com/p/656678983
  5. MuJoCo自定义机器人建模指南:https://zhuanlan.zhihu.com/p/143983506

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

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

相关文章

删除字符串末尾的*(星号)

要求 假定输入的字符串中只包含字母和*号。请编写函数fun&#xff0c;它的功能是:将字符串尾部的*号全部删除&#xff0c;前面和中间的*号不删除, 例如&#xff0c;字符串中的内容为:****A*BC*DEF*G******&#xff0c;删除后&#xff0c;字符串中的内容应当是:***A*BC*DEF*G。…

用Python获取PDF页面的大小、方向和旋转角度

在文档管理和自动化领域&#xff0c;了解PDF文档的内在属性&#xff08;如页面大小、方向和旋转角度&#xff09;对于确保一致的文档处理和布局保真度至关重要。这些属性在内容重用、归档以及PDF无缝集成到网络环境或其他数字工作流程中起着关键作用&#xff0c;因为它们直接影…

Leetcode面试经典150题-162.寻找峰值

解法都在代码里&#xff0c;不懂就留言或者私信 想清楚的话会特别简单&#xff0c;你可能想不到这是个二分。。。 class Solution {/**本题题目规定我们只能用O(logN)的时间复杂度来解题&#xff0c;这显然就是让二分嘛而题目给的数组本身是无需&#xff0c;怎么二分呢其实我…

《网络协议 - HTTP传输协议及状态码解析》

文章目录 一、HTTP协议结构图二、HTTP状态码解读1xx: 信息响应类2xx: 成功响应类3xx: 重定向类4xx: 客户端错误类5xx: 服务器错误类 一、HTTP协议结构图 二、HTTP状态码解读 HTTP状态码&#xff08;英语&#xff1a;HTTP Status Code&#xff09;是用以表示网页服务器超文本传…

『功能项目』战士的位移型技能【46】

我们打开上一篇45战士的伤害型技能的项目&#xff0c; 本章要做的事情是制作技能按钮&#xff0c;点鼠标点击时释放如果20米内存在敌人会移动到敌人身边&#xff08;对多个敌人逻辑暂未写&#xff09;并对怪物造成一定伤害 首先对战士职业的动画控制器增加一个新的技能2动画 设…

镜像问题(k8s部署考试系统)

如果使用containerd拉取不到镜像的话&#xff0c;就使用docker 1.修改decker的镜像源 [rootk8s-master ~]# vim /etc/docker/daemon.json { "registry-mirrors": [ "https://do.nark.eu.org", "https://dc.j8.work", …

Vue : 生命周期

目录 1. beforeCreate(vu2) 2. created(vu2) 3. setup(vu3) 4. beforeMount 5. mounted 6. beforeUpdate 7. updated 8. beforeDestroy 9. destroyed Vue.js 的生命周期是指 Vue 实例从创建到销毁的整个过程中的各个阶段。在 Vue 中&#xff0c;有多个关键的生命周期钩…

Ubuntu22.04系统安装opencv步骤简述及问题解决方法

前言 opencv是一个功能强大、开源且跨平台的计算机视觉库&#xff0c;适用于多种编程语言和操作系统&#xff0c;能够帮助开发者构建各种视觉项目。其模块众多&#xff0c;提供了诸多功能&#xff0c;能够进行图像处理、视频处理等等。比如&#xff1a;Highgui模块提供图像用户…

EasyExcel拿表头(二级表头)爬坑,invokeHeadMap方法

OK&#xff0c;不废话&#xff0c;直接开干!说实话是有些坑&#xff0c;或者是我不会用吧 模板如下&#xff1a; invokeHeadMap 这个方法其实针对第一行就是表头的完全没问题。针对第二行的&#xff0c;我DEBUG拿到的是这样很明显&#xff0c;他拿到了第一行&#xff1b;既然…

如何通过OceanBase的多级弹性扩缩容能力应对业务洪峰

每周四晚上的10点&#xff0c;都有近百万的年轻用户进入泡泡玛特的抽盒机小程序&#xff0c;共同参与到抢抽盲盒新品的活动中。瞬间的并发流量激增对抽盒机小程序的系统构成了巨大的挑战&#xff0c;同时也对其数据库的扩容能力也提出了更高的要求。 但泡泡玛特的工程师们一点…

安卓BLE蓝牙通讯

蓝牙测试demo 简介   Android手机间通过蓝牙方式进行通信&#xff0c;有两种常见的方式&#xff0c;一种是socket方式&#xff08;传统蓝牙&#xff09;&#xff0c;另一种是通过GATT&#xff08;BLE蓝牙&#xff09;。与传统蓝牙相比&#xff0c;BLE 旨在大幅降低功耗。这样…

Superset二次开发之源码DependencyList.tsx 分析

功能点 路径 superset-frontend\src\dashboard\components\nativeFilters\FiltersConfigModal\FiltersConfigForm\DependencyList.tsx /*** Licensed to the Apache Software Foundation (ASF) under one* or more contributor license agreements. See the NOTICE file* dist…

OpenCV结构分析与形状描述符(24)检测两个旋转矩形之间是否相交的一个函数rotatedRectangleIntersection()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 测两个旋转矩形之间是否存在交集。 如果存在交集&#xff0c;则还返回交集区域的顶点。 下面是一些交集配置的例子。斜线图案表示交集区域&#…

C++《类和对象》(下)

在之前类和对象&#xff08;中&#xff09;我们学习了类当中的6大默认成员函数&#xff0c;我们了解了6大成员函数的结构特征和特点以及在不同情况各个成员函数是如何调用的&#xff0c;那么接下来我们在本篇当中将继续学习之前在学习构造函数中未了解的初始化列表&#xff0c;…

MySql基础-单表操作

1. MYSQL概述 1.1 数据模型 关系型数据库 关系型数据库(RDBMS)&#xff1a;建立在关系模型基础上&#xff0c;由多张相互连接的二维表组成的数据库。 特点&#xff1a; 使用表存储数据&#xff0c;格式统一&#xff0c;便于维护 使用SQL语言操作&#xff0c;标准统一&…

高性能微服务架构:Spring Boot 集成 gRPC 实现用户与订单服务即时交互

gRPC 是一种由 Google 开发的高性能、开源的远程过程调用&#xff08;Remote Procedure Call, RPC&#xff09;框架。它允许在不同的计算机系统或进程之间进行通信&#xff0c;使得分布式系统和微服务架构中的服务之间能够轻松地相互调用方法。gRPC 基于 HTTP/2 协议&#xff0…

django-admin自定义功能按钮样式

位置在原来的django-admin 栏中的上方【会因为屏幕大小而变换位置】 <!-- 这里是不会替换掉旧的 添加按钮 &#xff0c;而是添加多一个按钮【点击Crawl Data】--> <!-- /home/luichun/lc/Pyfile/Pywebback/app/paqu/templates/admin/yourmodel_changelist.html -->…

基于k8s手动部署rabbitmq集群(Manually Deploying RabbitMQ Cluster Based on k8s)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

安全基础设施如何形成统一生态标准?OASA 硬件安全合作计划启动 | 2024 龙蜥大会

近日&#xff0c;2024 龙蜥操作系统大会&#xff08;OpenAnolis Conference&#xff09;在北京盛大召开。 与此同时&#xff0c;由龙蜥社区运营委员会副主席、龙腾计划生态负责人金美琴&#xff0c;阿里云智能集团高级技术专家张天佳&#xff0c;海光信息技术生态技术总监李伟&…

系统架构设计师教程 第5章 5.2需求工程 笔记

5.2 需求工程 ★★★★★ 软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。 软件需求包括3个不同的层次&#xff1a;业务需求、用户需求和功能需求(也包括非功能需求)。 (1)业务需求 (business requirement) 反映了组织机构或客户对系统、产品高层次的目标…