• 搭建强化学习的机械臂MuJoCo环境以及urdf转xml文件方法


    一、背景

    基于强化学习的机械臂应用日趋广泛,摆脱了基于模型到达固定点的束缚。基于强化学习算法,机械臂可以完成拧魔方、推抓任务(Andy Zeng的经典论文),暂且想一下如果用传统方法完成此类复杂任务是何等困难。

    强化学习作为一种试错的方式,在真实机械臂上进行训练不仅耗时,且会对环境或机器造成损坏,而在仿真环境中进行训练是一种可行的方式。MuJoCo作为当前主流的强化学习化境配置较为繁琐,这里简要记录下我的配置和使用过程。

    二、MuJoCo安装

    1.ubuntu18.04配置强化学习环境流程

    (1)安装anaconda
    官网下载anaconda脚本,进入脚本保存的目录,终端bash Anaconda3-2021.05-Linux-x86_64.sh
    创建名为drl(自定义)的python3.6环境,并激活环境conda create -n drl python=3.6 anaconda
    conda activate drl
    启动anaconda命令:anaconda-navigator

    (2)安装mujoco
    官网下载mujoco200_linux.zip,在主目录下新建.mujoco文件夹,将mujoco200_linux.zip文件复制并解压到.mujoco文件夹,
    解压后的文件不要使用mujoco200_linux这个名字,改为mujoco200
    接着把下载好的密钥mjkey.txt分别复制到.mujoco和mujoco200/bin里

    cp mjkey.txt ~/.mujoco
    cp mjkey.txt ~/.mujoco/mujoco200/bin

    添加环境变量,这里我添加的条数比其他教程上的要多,是我经过反复试验比较才确定的这种添加最后才不会报错。
    打开bashrc文本: gedit ~/.bashrc

    在.bashrc文本里添加:

    export LD_LIBRARY_PATH=~/.mujoco/mujoco200/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dlut/.mujoco/mujoco200/bin
    export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}
    
    • 1
    • 2
    • 3

    下面三条看情况添加,一般不用加

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia
    export PATH="$LD_LIBRARY_PATH:$PATH"
    export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so
    
    • 1
    • 2
    • 3

    保存文件ctrl+s并退出文本,接着激活一下:source ~/.bashrc

    测试mujoco200是否安装成功:

    cd ~/.mujoco/mujoco2000/bin
    ./simulate ../model/humanoid.xml
    
    • 1
    • 2

    提示:解压命令unzip mujoco200.zip

    (3)安装mujoco-py
    先用anaconda激活虚拟环境 conda activate spinningup
    运行下面代码:

    sudo apt update
    sudo apt-get install patchelf
    sudo apt-get install python3-dev build-essential libssl-dev libffi-dev libxml2-dev  
    sudo apt-get install libxslt1-dev zlib1g-dev libglew1.5 libglew-dev python3-pip
    
    • 1
    • 2
    • 3
    • 4

    下载mujoco-py安装包,这里我们直接用git克隆过来

    sudo apt install git
    cd ~/.mujoco
    git clone https://github.com/openai/mujoco-py
    cd mujoco-py
    pip install -r requirements.txt
    pip install -r requirements.dev.txt
    python setup.py install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    重启电脑 reboot
    进入环境并输入如下命令:

    conda activate spinningup
    sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3
    
    • 1
    • 2

    在spinningup环境下 安装

    pip install mujoco_py==2.0.2.8
    
    • 1

    ###备选方案

    pip3 install -U 'mujoco-py<2.1,>=2.0'
    
    • 1

    测试:
    cd ~/.mujoco/mujoco-py/examples
    python3 setting_state.py

    至此,mujoco200和mujoco-py安装成功
    (4)安装gym
    0.进入anacondy虚拟环境 conda activate spinningup
    1.git clone https://github.com/openai/gym.git
    2.cd gym
    3.sudo apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig
    4.pip install -e .[all]

    参考:https://zhuanlan.zhihu.com/p/472290066

    三、在MuJoCo搭建自己的机械臂模型

    在MuJoCo搭建自己的机械臂模型,其实就是将我们所常见的URDF文件转为xml文件,然后添加一些地板或其他环境信息,最后放入到.mujoco的model文件夹下即可。

    1、xacro转urdf

    因为ros的更新换代,许多机械臂的功能包不再提供urdf文件,而给的是xacro文件,因此第一步是将xacro转为urdf。

    xacro转urdf时,xacro文件robot标签下添加

      <mujoco>
            <compiler 
            meshdir="../meshes_mujoco/" 其中../meshes_mujoco改为自己的mesh绝对文件夹路径,mesh文件夹需要和要转的xacro在同一个文件夹下
            balanceinertia="true" 
            discardvisual="false" />
      </mujoco>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行命令:

    rosrun xacro xacro --inorder m1n6s300_standalone.xacro > m1n6s300_standalone.urdf 
    
    • 1

    注意:ubuntu18.04下--inorder可以省略,起到强转化作用。
    报错:

    resource not found: kinova_description
    ROS path [0]=/opt/ros/melodic/share/ros
    ROS path [1]=/opt/ros/melodic/share
    
    • 1
    • 2
    • 3

    解决方法:
    网友:sudo cp -r ~/catkin_ws/src/mbot_description /opt/ros/melodic/share
    将~/catkin_ws/src/mbot_description 修改为自己的路径 即:

    sudo cp -r /home/qiucc/dual_ws/src/kinova_ros_melodic_devel/kinova_description  /opt/ros/melodic/share
    
    • 1

    成功解决!
    检查urdf文件:check_urdf model.urdf
    在RViz中可视化:
    roslaunch urdf_tutorial display.launch model:=path/to/your/urdf/file

    2、urdf转xml

    在确认URDF模型没有问题后,进入MuJoCo的可执行文件夹内执行命令进行转换(如默认的~/.mujoco/mujoco200/bin):
    执行命令:./compile /path/to/model.urdf /path/to/model.xml
    即:

    ./compile /home/qiucc/dual_ws/src/kinova_ros_melodic_devel/kinova_description/urdf/m1n6s300_standalone.urdf /home/qiucc/dual_ws/src/kinova_ros_melodic_devel/kinova_description/urdf/m1n6s300_standalone.xml
    
    • 1

    若urdf转xml失败,报错为:

    Error: Unknown mesh file type: base.dae
    Object name = base, id = 0
    
    • 1
    • 2

    解决方法:将urdf中的mesh标签中的后缀dae全部修改为stl,重新执行上述./compile命令

    若报错:

    Error: could not open STL file '/home/qiucc/dual_ws/src/kinova_ros_melodic_devel/kinova_description/urdf/base.stl'
    Object name = base, id = 0
    
    • 1
    • 2

    是因为没有在urdf加入mujoco的标签:

      <mujoco>
            <compiler 
            meshdir="../meshes_mujoco/" 其中../meshes_mujoco改为自己的mesh绝对文件夹路径,mesh文件夹需要和要转的xacro在同一个文件夹下
            balanceinertia="true" 
            discardvisual="false" />
      </mujoco>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    转换成功后,将得到的model.xml复制到.mujoco/mujoco200/model文件夹下 (提示:若主文件夹下没有.mujoco,是因为.文件为隐藏文件,快捷键ctrl+h即可显示

    3、使用mujoco物理引擎打开.xml文件步骤

    进入~/.mujoco/mujoco200/bin
    运行命令: ./simulate …/model/model.xml 提示:…是进入上一个文件夹,model.xml为需要打开的xml文件
    或者 ./simulate 绝对路径/model.xml

    4、注意事项

    注意:在使用mujoco建模时,xml文件添加物体时,size的大小是实际大小的一半
    例如,添加一个长0.6m,宽0.6m,高1.0m的箱子,则为:

      <body name="desk" pos="0 0.6 -0.71" mocap="true">
            <geom type="box" size="0.3 0.3 0.5" rgba="0 .9 0 .5" contype="2"/>
      </body>
    
    • 1
    • 2
    • 3

    展示一下我的双臂模型
    在这里插入图片描述

    四、在MuJoCo修改机械臂的颜色

    有时我们导入的机械臂模型是白色的,和真实机械臂外观差别很大,如下图所示,这里介绍修改机械臂颜色的方法。
    在这里插入图片描述
    修改的地方如下,参考Intelligent-kinova—panda—models—assets—robot—panda—kinova_all_joints.xml

    在这里插入图片描述在这里插入图片描述

  • 相关阅读:
    c++ ,python监控 进程 状态 fork
    php设计模式重构篇
    R语言和医学统计学(13):协方差分析
    2022/11/20[指针] 通过函数,利用指针将数组a中前n个元素按相反顺序存放
    数的每一位平方和
    微信小程序配置企业微信的在线客服
    spring5.3 十:推断构造方法源码分析
    基于 Serverless 架构的 CI/CD 框架:Serverless-cd
    elasticsearch-head离线安装
    2002NOIP普及组真题 4. 过河卒
  • 原文地址:https://blog.csdn.net/Time_Memory_cici/article/details/138198171