MIT的mini cheetah通常是在UP board(4-core Intel Atom x5-Z8350 processor, 4 gb RAM, and roughly 5 W peak power consumption)(X86架构)上运行的,是否可以移植到树莓派4B(ARM架构)上?摸索了一段时间,成功了。将今天的方法贴出来,供大家学习。
一、环境配置过程,首先打开Terminal,输入下列命令
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
二、下载安装git,使用下列命令就可。
sudo apt-get update
sudo apt-get install git
三、依次进行下列命令,安装lcm
git clone https://github.com/lcm-proj/lcm.git
cd lcm
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
如cmake ..出现问题:
解决办法:
安装lcm-1.4.0是有一些依赖需要安装的,安装完这些依赖,上述三个报错都可以解决。这些依赖罗列如下:
Required packages:
sudo apt-get install build-essential
sudo apt-get install libglib2.0-dev
sudo apt-get install cmake
Optional packages (e.g., for language-specific support or building documentation):
sudo apt-get install default-jdk
sudo apt-get install python-all-dev
sudo apt-get install liblua5.1-dev
sudo apt-get install golang
sudo apt-get install doxygen
sudo apt-get install python-epydoc
四、树莓派4B(Ubuntu22.04)安装QT5(https://blog.csdn.net/qq_38228260/article/details/126314109)
1、安装Qt组件
sudo apt-get install qtbase5-dev qtbase5-dev-tools qtchooser qt5-qmake qtcreator qtbase5-examples qtbase5-doc-html
sudo apt-get install libqt5gamepad5-dev libudev-dev // ------安装qt5gamepa组件
2、安装编译环境,gcc、g++、gdb(调试器)
// 该句执行后同时安装gcc g++ gdb
sudo apt install build-essential gdb
3、安装clang(编译器)、llvm(编译器)、lldb(调试器)
sudo apt install clang llvm lldb
4、安装cmake编译工具
// 安装cmake
sudo apt install cmake
5、查看
g++ --version
gcc --version
gcc --version
cmake --version
五、安装Eigen库
sudo apt-get install libeigen3-dev
六、克隆cheetah代码
git clone https://github.com/mit-biomimetics/Cheetah-Software.git
cd Cheetah-Software
cd scripts
./make_types.sh
cd ..
mkdir build
cd build
七、提升Cmake处理速度(参考了上述参考文章6)
输入下示代码。
sudo cp -r /usr/include/eigen3 /usr/local/include/eigen3
八、继续输入代码,进行Cmake
cd Cheetah-Software
cd build
cmake ..
九、接下来重要的一
首先输入
make -j4
十、错误,提示处理(https://zhuanlan.zhihu.com/p/537013183)
1、打开Cheetah-Software/common文件夹下的CmakeLists.txt文件,修改master为main,保存后退出,重新执行cmake。
2、找到/Cheetah-software/scripts/find_qt_path.sh,将里面的Qt改成如下,主要是树莓派tq5.15.3的位置
QT_VER="$(ls /usr/lib/aarch64-linux-gnu | grep 5 -m1)"
printf "${HOME}/usr/lib/aarch64-linux-gnu${QT_VER}/gcc_64/"
3、打开mit主文件夹下的sim文件夹下的CMakeLists.txt文件,(https://zhuanlan.zhihu.com/p/537013183)
添加:
set(CMAKE_PREFIX_PATH /usr/lib/aarch64-linux-gnu/qt5)
set(QT5Core_DIR /usr/lib/aarch64-linux-gnu/cmake/Qt5Core)
set(QT5Widgets_DIR /usr/lib/aarch64-linux-gnu/cmake/Qt5Widgets)
set(QT5Gamepad_DIR /usr/lib/aarch64-linux-gnu/cmake/Qt5Gamepad)
注释掉
,即删除SET(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH_1})
------执行 make -j4可能会出现如下错误,
4、sse指令集------(https://blog.csdn.net/chiyiwei7384/article/details/119248072)
/Cheetah-Software/third-party/JCQP/CholeskyDenseSolver.cpp:11:10: fatal error: immintrin.h: No such file or directory
/Cheetah-Software/third-party/JCQP/CholeskySparseSolver.cpp:11:10: fatal error: immintrin.h: No such file or directory
a、将sse2neon文件拷贝到树莓派p4(ubuntu22.04)的文件夹:/usr/include/
或 直接 sudo git clone https://github.com/jratcliff63367/sse2neon.git
b、拷贝sse2neon.h到 /usr/include/文件夹
sudo cp -r /usr/include/sse2neon/SSE2NEON.h /usr/include/sse2neon.h
c、用:
#include "sse2neon.h"
代替源文件CholeskyDenseSolver.cpp;CholeskySparseSolver.cpp中的:
#include <immintrin.h>
5、-Werror,解决:warning当作error了,打开Cheetah-Software/文件夹下的CMakeLists.txt文件里的2个“-Werror”删除掉。
6、提示缺少stropts.h文件:fatal error: stropts.h: No such file or directory
解决:在/usr/include/下新建文件 ----(https://blog.csdn.net/weixin_41106948/article/details/128779123)
sudo touch stropts.h
打开
sudo nano stropts.h
复制写入如下内容
#if HAVE_STROPTS_H
#include <stropts.h>
#endif
6、error: ‘ioctl’ was not declared in this scope
解决:修改robot/src/rt/rt_serial.cpp,将17-20行改为:
// #include <asm/termios.h>
#include <asm/ioctls.h>
#include <asm/termbits.h>
#undef termios
#include <sys/ioctl.h>
---------------------------------------------------------
仿真运行:Run simulator
cd Cheetah-Software/build
./sim/sim // 打开控制器
./user/MIT_Controller/mit_ctrl m s
3: Cheetah 3, m: Mini Cheetah
s: simulation, r: robot
mini cheetah仿真
-----------------------------------------------------
测试通信库(To test the common library)
./common/test-common
---------------------------------------------------------
运行机器狗代码(run the robot code)
./robot/robot
./user/MIT_Controller/mit_ctrl m r
树莓派4b+spine时spi需要开通才能正常通信,具体做法是:
sudo nano /boot/firmware/config.txt
添加:
dtparam=spi=on
dtoverlay=spi2-2cs