目标是复现一个双足机器人NMPC+WBC控制项目,基于如下仿真环境(ubuntu(操作系统) + ROS(机器人操作系统-理解为次级操作系统) + mujoco(动力学引擎) + OCS2(优化计算工具箱) + Clion(额外添加的代码编辑器,为以后修改调试算法准备)),项目地址为https://github.com/bridgedp/hunter_bipedal_control
由于对Linux系统不太熟悉,导致从头到尾搭建仿真环境过程花费了不少精力。记录下遇到的坑和解决方案。文中链接是比较好的教程,一个个花时间找和尝试出来的。
本文不打算给出具体的过程,只是展示了从0到1搭建仿真环境的比较全面的信息,给入门linux机器人仿真的小白入门提供些许帮助,至少知道做这个仿真需要安装什么依赖软件。

  1. Vmare虚拟机软件安装-找淘宝安装的
  2. Ubuntu20.04安装
    1)下载iso:最终选择desktop版
    ubuntu20.04.06分为桌面版(desktop)和服务器版(live-server),具体下载地址为https://www.releases.ubuntu.com/focal/,也可以直接到官网。【避坑:一开始不知道随便选择了server版,安装后没有出现图形化界面,不知道怎么用。只能删除再重新下载安装desktop版:ubuntu-20.04.6-desktop-amd64.iso】
    2)安装:
    参考教程https://zhuanlan.zhihu.com/p/355314438
    一些细节:安装路径选择在了D盘,和windows系统盘分开比较好。主要设置为虚拟机磁盘大小520G(实际D盘才300G),内存4g/8g,CPU 8个x1/8x2核
    经验:虚拟机加速。后面发现,安装完成后,虚拟系统内存、CPU、硬盘仍然可以重新设置的:右键→添加硬件向导界面查询】
    3)ubuntu系统常见基本问题与设置方法:
    网络配置问题:我采用的是NAT模式,参考的是【?待补充】
    【模糊记忆中主要流程:虚拟机主界面(编辑→虚拟网络编辑器→建立VMnet9(NAT)模式网络(有网址自动输入要求,具体忘记了))→进入虚拟机ubuntu系统内设置网络(网址自动输入匹配)→退到虚拟机主界面(右键ubuntu系统→设置→手动选择刚才设置好的VMnet9(NAT))即可】
    没有中文输入法的问题(尝试多种方法,并没有解决!)
    系统字太小的问题(桌面图标和图标字体):可以用指令更改字体大小,参考https://blog.csdn.net/m0_65641637/article/details/132036663
    ubuntu界面占不满虚拟机屏幕问题:是分辨率问题,右键settings→displays→修改分辨率即可。https://zhuanlan.zhihu.com/p/431078596
    虚拟机速度慢/卡顿问题:这个有点随机,尝试了很多网上的方法,有的时候跟安装方式有关。有用的几个点:1)关闭打印机+声卡,2)在虚拟机 设置-显示 中去除3D图形加速比较有用,3)开启虚拟机虚拟化引擎(这个没成功,无法虚拟化)。
    虚拟机与主机共享复制粘贴问题:通过设置,使得可以非常方便的将主机信息复制粘贴到虚拟机https://blog.csdn.net/qq_39362509/article/details/119740379。 【经验:虚拟机终端里面的复制粘贴 快捷键 与一般图形化界面不一样,为:ctrl+shift+c, ctrl+shift+v】
  3. ROS 安装(neotic)
    1)注意:每一个版本的Ubuntu都有(唯一)适配的ROS版本,不能混起来,版本适配信息在https://blog.csdn.net/maizousidemao/article/details/119846292
    2)ubuntu20.04对应ROS neotic 版本
    较好安装教程https://zhuanlan.zhihu.com/p/515361781。简单总结下ROS安装流程:
    ①准备:Ubuntu系统软件源、添加ROS源和密钥
    ②安装ROS:很简单,一条指令
    ③后续处理(比较多,老实照抄就行):设置环境变量→初始化rosdep→安装rosinstall→运行与自检(roscore开启→roswtf自检)
    ④案例测试:小海龟仿真
    3)ros机器人应用中主要辅助工具(可选)
    ①可视化工具 rqt:图形化界面显示ROS节点通信数据(完全版自带)
    ②RViz:urdf可视化工具–用于查看机器人urdf模型https://blog.csdn.net/baidu_38485156/article/details/81201079

以上为系统基础环境
—————————分界线—————————————
以下为项目特殊工作环境

  1. OCS2安装(其实是下载+编译)
    OCS2安装的官网https://leggedrobotics.github.io/ocs2/installation.html#prerequisites,也有较好的中文教程https://zhuanlan.zhihu.com/p/682704448。建议使用中文的教程。具体的流程大致总结如下:
    1)首先是安装依赖的库
    Eigen3(C++的矩阵运算库):自动安装的最新版本3.3.7
    catkin编译系统相关内容:即ros的编译系统【安装python的相关编译工具】
    其他依赖库
    2)其次是正式下载编译OCS2
    值得注意的是,安装OCS2的路径是 ROS的一个工作空间 ocs2_ws,即OCS2作为 ROS的一个功能包安装(编译),这个功能包依赖于其他很多功能包。这一步是最麻烦的部分。
    小问题:在上述中文教程中,有个小错误:python3 -m pip install -r ~/git/ocs2/ocs2_mpcnet/ocs2_mpcnet_core/requirements.txt,这句话中git,应该替换为ocs2_ws/src。】
    经验1:git加速经验。下载git clone github.com/…的时候,想要提高效率,改为git clone githubfast.com/… 或者git clone kkgithub.com/…很好用】
    经验2:编译错误问题的经验。 在按照上述流程操作后,编译的时候仍然出现了编译失败:1 package,abundon 60+ package等问题。(经过非常多的折腾,才发现编译失败的绝大部分原因,都是依赖库的安装没有完成!)
    git clone 自动调用与梯子问题:catkin build 指令执行后,有些地方需要git clone一些包,而自己build的时候没有搭梯子,所以遇到了无法下载的问题,从而导致了后续一连串的错误!(一个功能包编译错误/缺少,导致后续所有依赖于这个包的功能包都被abundon)
    缺少依赖包的问题: 有 could not find 的错误一般都是缺少ros依赖包,查询并安装即可(一般sudo apt-get install libxxx-dev即可安装, xxx是特定包名称,错误提示中会有描述,但是错误提示的只是关键词而不是全称; 有些则需要特定的下载安装方式)。

    经验3:编译错误C++: fatal error: Killed signal terminated program cc1plus,其实是临时虚拟机内存不足,我的解决方案是,扩大分配内存到16g,解决了】
    经验4:编译一个功能包的时候,这个包自动git clone失败,而且搭梯子也没用的时候,可以根据错误提示,找到这个包的路径下的cmakelist.txt 文件,将其中的默认下载路径改为 经验1中的 两个替代路径,基本可以成功】
    下面是编译成功结果
    在这里插入图片描述

  2. Hunter仿真下载编译
    1)hunter的编译,上一节ocs2安装教程后就有(https://zhuanlan.zhihu.com/p/682704448)。
    hunter机器人 (相对于 ocs2的ros工作空间) 重新单独建立了一个ros工作空间。
    经验:两个ros工作空间的链接,是通过ros设置环境变量实现的(每个工作空间都需要向~/.bashrc文件写入自己的路径,同时source一下),上述教程,下载hunter并新建ros工作空间后,没有提示。可以按照下面的教程,专门设置环境变量https://blog.csdn.net/weixin_42237429/article/details/90238000
    按照github编译hunter的时候,尽管还未安装mujoco,按照官方例程好像也可以完成编译。下面是编译成功的界面:
    在这里插入图片描述
    在这里插入图片描述
    2)hunter的初步使用
    视频教程在这里
    https://www.bilibili.com/video/BV18w4m1Z76H/?spm_id_from=333.337.search-card.all.click
    严格按照视频的顺序执行,走起来了。下一步是熟悉这个仿真设置界面,然后再研究控制算法替换
    在这里插入图片描述

  3. mujoco210 安装
    根据hunter项目编译结果,mujoco没有安装,也能打开mujoco相关的包。听人说是安装了LCM就可以了。
    本处仍然记录mujoco的安装过程,可能后续会用到。(mujoco先于ocs2安装,会有ros编译问题,会改变catkin build的依赖包的默认路径(python相关的,会调用conda内部的,而不是Ubuntu系统自带的)。此问题原因不明,所以将mujoco放在ocs2后面是最好的)
    mujoco210是 mujoco2.1.0的简写。安装教程:https://zhuanlan.zhihu.com/p/535806578
    主要流程为:
    1)mujoco本体安装
    ①准备工作:安装anaconda,安装git
    【安装anaconda不是上述链接那么简单,步骤很少但还是有点,参考https://blog.csdn.net/thy0000/article/details/122878599。 并且遇到安装成功后不能conda init的现象,提示“未找到conda 命令”,是环境配置的问题,解决方案在这里https://blog.csdn.net/m0_37872216/article/details/107951206#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%9A
    ②安装mojoco210:wget-获取安装包,mkdir选择安装路径,tar解压【个人理解:Linux中似乎很多软件都没有安装过程,只是解压后就可以使用了(具体是进入到解压包的某个路径,通过终端打开某个文件),包括后续的Clion这款编辑器】
    ③环境变量配置:添加.bashrc中关于mujoco210的内容, 并执行source ~/.bashrc【告诉操作系统,现在添加了这个 mujoco 这个软件,以便于mujoco引用系统的库】
    ④测试mujoco是否正式安装好
    2)安装mujoco-py流程:
    【个人理解:不知道这个软件包是什么意思,据说是mojoco+python强化学习这一套餐中需要用到,暂时理解为:mujoco使用python的接口,python负责强化学习控制算法编写,mujoco则负责动力学仿真计算以及可视化展示。】
    ①conda创建一个虚拟环境
    ②安装python编译开发环境:一大堆东西,装就完了
    ③下载安装mujoco-py
    ④测试是否正式完成

———————————分界线——————————————
以下为可选开放配置

  1. Clion安装(可选)
    参考教程:https://blog.csdn.net/qq_40574123/article/details/121276502。Clion不是开源软件,需要激活。
    采用的是“Linux其余安装,一”这部分:
    1)下载;官网下载即可https://www.jetbrains.com/clion/download/other.html
    2)解压:放到希望的路径解压即可
    3)进入到clion/bin目录,sudo ./clion.sh 即可打开(每次打开都需要找到这个目录)。【对于用惯了windows系统的我来说,新概念,amazing!所谓安装,就是解压】
    *)激活:初次打开后会出现激活界面,激活这部分,网上大部分激活码都是无效的!激活就各凭本事了!

以上是个人经验,如有错误描述之处,请大家指正。并且本文将持续更新!

Logo

中德AI开发者社区由X.Lab发起,旨在促进中德AI技术交流与合作,汇聚开发者及学者,共同探索前沿AI应用与创新。加入我们,共享资源,共创未来!🚀

更多推荐