1.ubuntu 16.04系统mujoco安装的依赖记录

Python 3.7.16

mujoco200

查看已有虚拟环境

conda env list

新建虚拟环境

conda create --name koopmanproject python=3.7

激活一个环境:
conda activate <env_name>
停用当前环境:
conda deactivate

(py37mujoco) abc@123:~/github/spinningup$ pip list
Package                       Version   Editable project location
----------------------------- --------- ---------------------------
absl-py                       1.4.0
alabaster                     0.7.13
ale-py                        0.8.1
astor                         0.8.1
atari-py                      0.2.9
attrs                         23.1.0
Babel                         2.12.1
backcall                      0.2.0
Box2D                         2.3.10
Box2D-kengz                   2.3.3
box2d-py                      2.3.5
certifi                       2022.12.7
cffi                          1.15.1
charset-normalizer            3.2.0
click                         8.1.6
cloudpickle                   1.2.1
cycler                        0.11.0
Cython                        0.29.23
decorator                     4.4.2
dill                          0.3.7
docutils                      0.18.1
exceptiongroup                1.1.2
fasteners                     0.18
fonttools                     4.38.0
future                        0.18.3
gast                          0.2.2
glfw                          2.6.2
glob2                         0.7
google-pasta                  0.2.0
grpcio                        1.56.2
gym                           0.15.7
gym-notices                   0.0.8
h5py                          2.10.0
idna                          3.4
ImageHash                     4.3.1
imageio                       2.31.1
imageio-ffmpeg                0.4.8
imagesize                     1.4.1
importlib-metadata            6.7.0
importlib-resources           5.12.0
iniconfig                     2.0.0
ipdb                          0.13.13
ipython                       7.34.0
jedi                          0.18.2
Jinja2                        3.1.2
joblib                        1.3.1
Keras-Applications            1.0.8
Keras-Preprocessing           1.1.2
kiwisolver                    1.4.4
lockfile                      0.12.2
lz4                           4.3.2
Markdown                      3.4.3
MarkupSafe                    2.1.3
matplotlib                    3.1.1
matplotlib-inline             0.1.6
moviepy                       1.0.3
mpi4py                        3.1.4
mujoco                        2.2.0
mujoco-py                     2.0.2.8
numpy                         1.17.3
numpydoc                      1.5.0
opencv-python                 4.8.0.74
opt-einsum                    3.3.0
packaging                     23.1
pandas                        1.3.5
parso                         0.8.3
pexpect                       4.8.0
pickleshare                   0.7.5
Pillow                        9.5.0
pip                           22.3.1
pluggy                        1.2.0
proglog                       0.1.10
progressbar2                  4.2.0
prompt-toolkit                3.0.39
protobuf                      3.20.0
psutil                        5.9.5
ptyprocess                    0.7.0
py                            1.11.0
pycparser                     2.21
pygame                        2.1.0
pyglet                        1.5.0
Pygments                      2.15.1
PyOpenGL                      3.1.7
pyparsing                     3.1.0
pytest                        7.0.1
pytest-instafail              0.3.0
python-dateutil               2.8.2
python-utils                  3.5.2
pytz                          2023.3
PyWavelets                    1.3.0
pyzmq                         25.1.0
requests                      2.31.0
scipy                         1.7.3
seaborn                       0.8.1
setuptools                    65.6.3
six                           1.16.0
snowballstemmer               2.2.0
Sphinx                        5.3.0
sphinx-rtd-theme              1.2.2
sphinxcontrib-applehelp       1.0.2
sphinxcontrib-devhelp         1.0.2
sphinxcontrib-htmlhelp        2.0.0
sphinxcontrib-jquery          4.1
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.3
sphinxcontrib-serializinghtml 1.1.5
spinup                        0.2.0     /home/abc/github/spinningup
stable-baselines              2.10.2
swig                          4.1.1
tensorboard                   1.14.0
tensorflow                    1.14.0
tensorflow-estimator          1.14.0
termcolor                     2.3.0
tomli                         2.0.1
torch                         1.3.1
tqdm                          4.65.0
traitlets                     5.9.0
typing_extensions             4.7.1
urllib3                       2.0.4
wcwidth                       0.2.6
Werkzeug                      2.2.3
wheel                         0.38.4
wrapt                         1.15.0
zipp                          3.15.0
zmq                           0.0.0

============================

windows 10系统

Python 3.7.11

mujoco200

(mujoco) C:\Users\AIRS\Documents\git\guyueclass-main\machine_learning\MuJoCo_reinforcement_learning\9. gym实例讲解>pip list
Package                       Version
----------------------------- ---------
absl-py                       0.13.0
alabaster                     0.7.12
ale-py                        0.7
appdirs                       1.4.4
argcomplete                   1.12.3
argh                          0.26.2
arrow                         0.13.1
astor                         0.8.1
astroid                       2.6.6
async-generator               1.10
atari-py                      0.2.9
atomicwrites                  1.4.0
attrs                         21.2.0
autopep8                      1.5.6
Babel                         2.9.1
backcall                      0.2.0
bcrypt                        3.2.0
binaryornot                   0.4.4
black                         19.10b0
bleach                        4.0.0
brotlipy                      0.7.0
cached-property               1.5.2
certifi                       2021.5.30
cffi                          1.14.6
chardet                       4.0.0
charset-normalizer            2.0.4
click                         8.0.1
cloudpickle                   1.2.1
colorama                      0.4.4
cookiecutter                  1.7.2
cryptography                  3.4.7
cycler                        0.10.0
Cython                        0.29.24
debugpy                       1.4.1
decorator                     5.0.9
defusedxml                    0.7.1
diff-match-patch              20200713
docutils                      0.17.1
entrypoints                   0.3
fasteners                     0.16.3
flake8                        3.9.0
future                        0.18.2
gast                          0.2.2
glfw                          2.2.0
google-pasta                  0.2.0
grpcio                        1.40.0
gym                           0.15.7
h5py                          3.4.0
idna                          3.2
imageio                       2.9.0
imagesize                     1.2.0
importlib-metadata            4.8.1
importlib-resources           5.2.2
inflection                    0.5.1
iniconfig                     1.1.1
intervaltree                  3.1.0
ipykernel                     6.2.0
ipython                       7.26.0
ipython-genutils              0.2.0
isort                         5.9.3
jedi                          0.17.2
Jinja2                        2.11.3
jinja2-time                   0.2.0
joblib                        1.0.1
jsonschema                    3.2.0
jupyter-client                7.0.1
jupyter-core                  4.7.1
jupyterlab-pygments           0.1.2
Keras-Applications            1.0.8
Keras-Preprocessing           1.1.2
keyring                       23.1.0
kiwisolver                    1.3.2
lazy-object-proxy             1.6.0
Markdown                      3.3.4
MarkupSafe                    1.1.1
matplotlib                    3.4.3
matplotlib-inline             0.1.2
mccabe                        0.6.1
mistune                       0.8.4
mpi4py                        3.1.1
mujoco-py                     2.0.2.8
mypy-extensions               0.4.3
nbclient                      0.5.3
nbconvert                     6.1.0
nbformat                      5.1.3
nest-asyncio                  1.5.1
numpy                         1.20.1
numpydoc                      1.1.0
opencv-python                 4.5.3.56
opt-einsum                    3.3.0
packaging                     21.0
pandas                        1.3.3
pandocfilters                 1.4.3
paramiko                      2.7.2
parso                         0.7.0
pathspec                      0.7.0
pexpect                       4.8.0
pickleshare                   0.7.5
Pillow                        8.3.2
pip                           21.0.1
pluggy                        0.13.1
poyo                          0.5.0
prompt-toolkit                3.0.17
protobuf                      3.18.0
psutil                        5.8.0
ptyprocess                    0.7.0
py                            1.10.0
pycodestyle                   2.6.0
pycparser                     2.20
pydocstyle                    6.1.1
pyflakes                      2.2.0
pyglet                        1.5.0
Pygments                      2.10.0
pylint                        2.9.6
pyls-black                    0.4.6
pyls-spyder                   0.3.2
PyNaCl                        1.4.0
pyOpenSSL                     20.0.1
pyparsing                     2.4.7
pyrsistent                    0.17.3
PySocks                       1.7.1
pytest                        6.2.5
python-dateutil               2.8.2
python-jsonrpc-server         0.4.0
python-language-server        0.36.2
python-slugify                5.0.2
pytz                          2021.1
pywin32                       228
pywin32-ctypes                0.2.0
PyYAML                        5.4.1
pyzmq                         22.2.1
QDarkStyle                    3.0.2
qstylizer                     0.1.10
QtAwesome                     1.0.2
qtconsole                     5.1.0
QtPy                          1.10.0
regex                         2021.8.3
requests                      2.26.0
rope                          0.19.0
Rtree                         0.9.7
scipy                         1.7.1
setuptools                    58.0.4
simple-pid                    1.0.1
six                           1.16.0
snowballstemmer               2.1.0
sortedcontainers              2.4.0
Sphinx                        4.0.2
sphinxcontrib-applehelp       1.0.2
sphinxcontrib-devhelp         1.0.2
sphinxcontrib-htmlhelp        2.0.0
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          1.0.3
sphinxcontrib-serializinghtml 1.1.5
spinup                        0.1
spyder                        5.0.5
spyder-kernels                2.0.5
stable-baselines              2.10.2
tensorboard                   1.14.0
tensorflow                    1.14.0
tensorflow-estimator          1.14.0
termcolor                     1.1.0
testpath                      0.5.0
text-unidecode                1.3
textdistance                  4.2.1
three-merge                   0.1.1
tinycss                       0.4
toml                          0.10.2
torch                         1.3.1+cpu
torchvision                   0.4.2+cpu
tornado                       6.1
traitlets                     5.0.5
typed-ast                     1.4.3
typing-extensions             3.10.0.2
ujson                         4.0.2
Unidecode                     1.2.0
urllib3                       1.26.6
watchdog                      2.1.3
wcwidth                       0.2.5
webencodings                  0.5.1
Werkzeug                      2.0.1
wheel                         0.37.0
whichcraft                    0.6.1
win-inet-pton                 1.1.0
wincertstore                  0.2
wrapt                         1.12.1
yapf                          0.31.0
zipp                          3.5.0

安装依赖:

pip install -r requirements.txt

如果是environment.yaml文件

pip install pyyaml
import os
import yaml

with open("environment.yaml") as file_handle:
    environment_data = yaml.safe_load(file_handle)

for dependency in environment_data["dependencies"]:
    if isinstance(dependency, dict):
      for lib in dependency['pip']:
        os.system(f"pip install {lib}")

运行脚本即可安装

2.mujoco建模文件xml中坐标轴位姿设定的问题

欧拉角的设定与旋转顺序和参考坐标轴有关

默认的mujoco遵循以下规则,api文档上没有讲清楚,又翻了下教科书才搞清楚。

假如想得到左脚的坐标轴位姿i,对比右脚关节的位姿坐标轴j。初始时,i坐标系和j坐标系是重合的。

mujoco的欧拉角采用的是XYZ旋转顺序,并且是绕imu自身轴i旋转的方式赋值,方向符合右手定则。这种叫欧拉角。有意区别与固定脚,固定角在旋转时,参考坐标轴不动。

即,先绕自身i的x轴旋转-90度,再绕自身i的y轴旋转0度,最后再绕自身i的z轴旋转90度。

<site name="footimu" pos="0.08 0.05 0 " euler="-1.57 0 1.57"   size="0.001" rgba="0.5 0.5 1 1"/>

当然也可以表示成,坐标系i相对于坐标系j的姿态,这种表达方式叫固定角。其中X-Y-Z的固定角度,等价与Z-Y-X的欧拉角。不是mujoco采用的方式,需要注意。

旋转矩阵的旋转顺序依据的是左乘的顺序,因此,在从mujoco模型中的数据求解旋转矩阵时,其顺序与欧拉角的顺序是颠倒过来的,其XYZ顺序的欧拉角变换为旋转矩阵的,写法和顺序应为R_j__foot = R_x*R_y*R_z;

按照矩阵乘法,其变换顺序为Z,Y,X,因为欧拉角变换为旋转矩阵时顺序是颠倒过来的,因为对应的欧拉角顺序为XYZ,因此求得的旋转矩阵与mujoco是一直的。

//j坐标到foot坐标的XYZ顺序的欧拉角,求解其对应的旋转矩阵
    double x = -M_PI / 2.0;  // 绕X轴旋转-π/2
    double y = 0.0;         // 绕Y轴旋转0
    double z = M_PI / 2.0;    // 绕Z轴旋转π/2
    Eigen::Matrix3d R_x;
    R_x<<1,0,0,
        0,cos(x),-sin(x),
        0,sin(x),cos(x);
    Eigen::Matrix3d R_y;
    R_y<<cos(y),0,sin(y),
        0,1,0,
        -sin(y),0,cos(y);
    Eigen::Matrix3d R_z;
    R_z<<cos(z),-sin(z),0,
        sin(z),cos(z),0,
        0,0,1;
    // 创建一个Euler角对象
    Eigen::Matrix3d R_j__foot;

    // 将四元数转换为旋转矩阵
    // Eigen::Matrix3d R_j__foot = q.toRotationMatrix();
    R_j__foot = R_x*R_y*R_z;
    // 输出旋转矩阵从joint到foot的旋转矩阵
    std::cout << "Rotation Matrix:\n" << R_j__foot << std::endl;
  • 求解踝关节的关节夹角

w为世界坐标系,foot是脚侧面坐标系,shank是小腿坐标系在膝关节处,j是关节坐标系,依据坐标变换的链式法则:

^wR_{imu1}={^wR_{imu0}} *{^{imu0}R_j}*{^jR_{shank}}*{^{shank}R_{imu1}}

目的为求解小腿与关节坐标系夹角,有

^jR_{shank}=[{^{imu0}R_{j}^{-1}}]*[{^wR_{imu0}}^{-1}]*{^wR_{imu1}}*[^{shank}R_{imu1}^{-1}] \\ =^{j}R_{imu0}*[{^wR_{imu0}}^{-1}]*{^wR_{imu1}}*[^{shank}R_{imu1}^{-1}]

至此,公式中所有的变量都是已知量。imu提供的数据为世界坐标系w变换到当前坐标系的值。

3.urdf文件的坐标系关系,以及为脚部添加连杆

在比较精细的考虑脚部运动的时候,需要考虑前脚掌,需要编辑urdf文件进行添加,这样在使用一些机器人库的时候,比如pinocchio::computeFrameJacobian(pinModel, pinData, q_full, rfId, Jright); 计算脚踝处的雅可比矩阵,才能得到准确的脚踝部的运动学数据,以及在pitch与roll方向上的扭矩分配。

添加后脚掌部分如黄色所示,坐标轴为关节坐标轴如图所示

在修改urdf时,有以下几个容易搞混的要点:

1.可视化中的Rendering>>Frame>>Body所显示出的坐标系指的实际上是joint中origin定义的位置;

2.joint中origin位置的定义是相对于父连杆的关节定义的;

3.link中的<collision>的坐标系定义origin的位置参数的定义,是link的几何体中心相对于当前连杆的joint坐标系进行平移,<collision>也是pinocchio库使用的的坐标系的位置,<visual>只是与显示和贴图有关系。

下面是一个添加了右腿脚掌连杆的模型的urdf文件对应的代码部分

<!-- 添加脚尖 -->
  <link name="Z7">
    <inertial>
      <origin xyz="0.0598388610290919 9.18999240586971E-05 -0.0415390165522792" rpy="0 0 0" />
      <mass value="0.00470444612628482" />
      <inertia ixx="0.00000293207569580641" ixy="4.45841778728434E-08"  ixz="0.00000169114902760741" iyy="0.0000285775028065618" iyz="-1.27420911277767E-08" izz="0.000029741248311021" />
    </inertial>
    <visual>
      <origin xyz="0.035 0 0" rpy="0 0 0" />
      <geometry>
      <!-- 假设脚尖是一个小盒子,忽略显示 -->
      <box size="0.01 0.01 0.01" />
      </geometry>
      <material name="">
        <color rgba="0.8 0.8 0.0 1" />
      </material>
    </visual>
    <collision>
      <origin xyz="0.035 0 0" rpy="0 0 0" />
      <geometry>
        <box size="0.07 0.07 0.025" /> <!-- 与视觉属性相同 -->
      </geometry>
    </collision>
  </link>

  <joint name="ZJ7" type="revolute">
    <origin xyz="0.12 0 -0.045" rpy="0 0 0" />
    <parent link="Z6" />
    <child link="Z7" />
    <axis xyz="0 1 0" />
    <limit lower="0.35" upper="-0.35"  effort="0" velocity="0" />
  </joint>
<!-- 添加脚尖 -->

4.solidworks导出urdf文件,urdf文件结构

一句话概括,urdf中每个关节和连杆标签是按照solidworks的装配体中,配合关系的顺序生成的。

因此,当为人形机器人的树状结构时,采用如下的顺序。

当为脚掌固定的,类似机械臂的结构时,可以重新排列连杆坐标系的顺序,把脚部坐标系放在最上面,可以通过拖动进行排序。这样,导出的顺序就不会差太多。

如果使用body在最上面,也没有关系,生成urdf文件后,可以手动重新排列joint和link标签的内容,也是能得到正确的urdf文件。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐