机器人仿真是一个很有趣的话题,多年前我曾尝试用过不少游戏引擎去学习“制作”机器人,但最终比较倾向于使用webots和mujoco。
这里可以开两个两个讨论话题:webots、mujoco。
Mujoco也是比较神奇的,最初免费,不少人学习使用;后来收费,损失了大量人气,再后来被deepmind买下,直接开源了,但已经不复当年盛况,在中文的各论坛上也基本找不到什么新一点有深度的资料——几年前的还有,但已经不再适配最新版本了。
有鉴于此,笔者准备为爱发电,借eeworld宝地开一个mujoco系列。大家可以试着跟读,每天只占用5分钟阅读时间,大概一个月,就能把这个有趣物理引擎玩转了。当然我不保证每天都能更新。
mujoco是什么?
Multi-Joint dynamics with Contact,翻译起来可以认为是多关节动力学连接。这也是mujoco的主要用途。可以快速开发多个物体的连接,并且对其物理特性进行仿真。具体使用什么语言去开发,其实并不重要,看大家的习惯吧。在本系列的文章中,我们从实战入手,使用python进行开发,且假设各位都已经有一点点python的开发基础了。
第0章 安装环境和显示一个mujoco模型
在本章的练习中,我们将使用到mujoco的传统例子——机械手臂。
首先,我们准备一下开发环境,使用pip install mujoco安装mujoco的python支持(这里最好是python3.10以上的版本,本人使用的是python3.11)。需要用到的xml文件(arm26.xml)和本节所用到的代码见附件。
我们先介绍一下几个基础概念:
- 模型
在mujoco中,模型是可以用于定义显示和操作的,可以使用xml存储。
- 视图
Viewer是mujoco最重要的组成部分,用于呈现出界面。一般来说,我们可以通过命令行调用:
python -m mujoco.viewer --mjcf=arm26.xml
执行该命令后,可以看到一个所谓2连接6肌肉的手臂,可以通过按钮来控制这个手臂
播放器加载失败: 未检测到Flash Player,请到
安装
录制_2025_02_21_20_21_18_466
用代码载入
-
- import mujoco.viewer
-
- m = mujoco.MjModel.from_xml_path('arm26.xml')
- v = mujoco.viewer.launch(m)
-
核心就两条,因为太过简单,就不怎么介绍了吧
m = mujoco.MjModel.from_xml_path('arm26.xml')
v = mujoco.viewer.launch(m)
本章节用到模型xml文件
arm26.xml
(4.17 KB, 下载次数: 6)