2019年以来,关于四足机器人的报道越来越多,我比较关注的是MIT mini cheetah。Mini Cheetah的外表是很可爱的,它长约0.4米,重约20磅,外形比较接近人们养的小狗,让人看了就心生欢喜。不过它可爱的外表下却有着普通机器人望尘莫及的性能,它不但可以进行后空翻,还可以高速、灵活的跑动,其跑步的最高速度能达到3.7m/s。要知道,它自身的长度仅仅为0.4米,相当于一秒钟就跑出接近自己身长10倍的距离。
2019年MIT开源了运行在mini cheetah的所有源代码,作为机器人爱好者,我当然忍不住去看看。 该文档记录了我编译MIT mini Cheetah源码开发环境的过程,参考了MIT开源项目的官方文档以及一些网络资料。包括开发环境搭建的步骤、遇到的问题以及解决方法。
sudo apt install mesa-common-dev freeglut3-dev coinor-libipopt-dev libblas-dev liblapack-dev gfortran liblapack-dev coinor-libipopt-dev cmake gcc build-essential libglib2.0-dev
还要安装以下各项
(1) LCM 1.3.1 (it says Java 6, but you can use newer) (https://lcm-proj.github.io/)
命令安装LCM库
git clone https://github.com/lcm-proj/lcm.git
cd lcm
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
简介:LCM(Lightweight Communications and Marshalling)是一套用于消息传递和数据编组的库和工具的集合,旨在为实时系统提供高带宽和低延迟的消息传递的能力。它提供了一个发布/订阅消息传递模型以及为各种编程语言的应用程序自动生成编/解组代码。
LCM允许多个进程以安全和高性能地方式进行消息的交换。消息是LCM通信的基本单元,开发者可将消息定义为与编程语言无关的数据结构,然后使用LCM提供的lcm-gen工具将自定义的数据结构编译为特定语言的代码。lcm-gen支持C、C++、Java、Python等编程语言,关于lcm-gen的使用可以参考官方文档。LCM官方下载地址为:https://github.com/lcm-proj/lcm
(2) Qt 5.10.0 or newer (requires the gamepad library) (https://www.qt.io/download-qt-installer) 可以去官网下载Qt5.10.0或更新版本的安装包,我在清华大学开源软件镜像站下载了qt5.14.0安装包进行安装。
sudo chmod -R 755 qt-opensource-linux-x64-5.14.0-rc_167.run
./qt-opensource-linux-x64-5.14.0-rc_167.run
随后会弹出安装界面,按提示进行安装。我把它安装在/opt/Qt5.14.0目录下。
NOTE: on Ubuntu 18.10 or 19.04, you may instead install Qt with
sudo apt install libqt5 libqt5gamepad5
(3) Eigen (http://eigen.tuxfamily.org/)
命令安装Eigen库
sudo apt-get install libeigen3-dev
执行以下指令进行安装和编译
git clone https://github.com/mit-biomimetics/Cheetah-Software.git
cd Cheetah-Software
cd scripts # for now, you must actually go into this folder
./make_types.sh # you may see an error like `rm: cannot remove...` but this is okay
cd ..
mkdir build
cd build
cmake .. # there are still some warnings here
make -j2
注意如果是使用这篇博客华北舵狗王带你一起做四足机器人9 (MIT Cheetah 开源 代码 仿真器编译)提供的较旧的代码,执行编译cmake …,可能会出现如下(1),(2),(3)这3个错误(我遇到了),按照对应方法处理即可。如果使用官方较新的代码,可能只会出现(3),(4)这2个错误,按照对应方法处理即可。
(1)提示sim/CMakeLists.txt出错,无法找到Qt5GamepadConfig.cmake或qt5gamepad-config.cmake文件。
它们是在Qt5的安装目录下的。因此需要设置Qt5Gamepad_DIR目录等等。这时候需要修改sim目录下的CMakeLists.txt,注释掉原有的,改为如下类似的设置(根据自己Q5的安装目录进行修改)
修改后的CMakeLists.txt类似下图所示
(2) footplan-viewer/CMakeLists.txt出错.这时候需要修改footplan-viewer目录下的CMakeLists.txt,
(3)在clone googletest的时候卡住很久不动或失败。这应该是从外网下载的,可能是我的网络不好导致,多试几次就可以了。遇到这个问题应该首先检查一下网络,下载不了可以手动去下载。
(4)也是提示Qt5Gamepad的目录存在错误,但是报错的信息跟(1)的错误是不一样的。
这是因为官方最新的代码和旧的有些不一样了,sim目录下的CMakeLists.txt。最新的CMakeLists.txt是通过sripts目录下的find_qt_path.sh脚本来寻找Qt的版本和安装目录,如下图。
find_qt_path.sh的内容只有下面3行,可以发现脚本默认是Qt安装在home目录下了,但很多人常常把Qt安装在opt目录下。解决办法:只需要把下面脚本查找Qt的目录修改为自己的安装目录即可。
#/bin/bash
QT_VER="$(ls ~/Qt/ | grep 5 -m1)"
printf "${HOME}/Qt/${QT_VER}/gcc_64/"
执行 make -j4可能会出现如下错误,按照对应方法处理即可:
(1)cc1plus: error: /usr/local/include/eigen3: No such file or directory [-Werror=missing-include-dirs]
这是由于安装eigen3的时候默认安装在/usr/include目录,而编译起器以为安装在 /usr/local/include目录,因此找不到对应文件。这时候可以把eigen3文件夹直接复制到/usr/local/include目录下。
sudo cp -r /usr/include/eigen3 /usr/local/include/eigen3
(2) c++: internal compiler error: Killed (program cc1plus)
这是由于内存不足引起的((出错时我的虚拟机内存设置为2GB)。第一个解决办法是把虚拟机内存设置更大(把虚拟机内存设置为8GB就很轻松编译完成了)。第二个办法是直接用make指令编译,去掉-j4选项,j4是指定4个线程进行编译,这样只是编译时间会很久。
解决了这些问题基本就没有问题了,编译完成结果如下图。
简单来说编译mini cheetah源码分为以下3步:
(1)安装依赖包
(2)cmke…
(3) make
在这个过程中我也遇到了不少坑,耗费了两个周末的时间,现在分享出来,希望对遇到类似问题的朋友有帮助。现在我已经编译成功了,可以愉快的看论文和看代码了。下面先贴一个仿真的动画出来,更多的内容后面持续分享出来。
[1] Cheetah-Software:Getting Started
[2] ubuntu 安装使用eigen3 (两种方式)
[3] 华北舵狗王带你一起做四足机器人9 (MIT Cheetah 开源 代码 仿真器编译
[4] 补充“MIT Cheetah 完整开源代码仿真环境”搭建过程中文资料的细节