足式机器人探索(1)-开源代码Mini Cheetah编译

原文链接
最近比较火的小米机器狗开卖了,搞机器人的多么希望有一条自己的机器狗啊!
机器狗铁蛋,能走能遛能空翻
机器狗买不到,仿真总还是能跑吧。那么就来跑跑控制机器狗跑的算法吧。听说机器狗也有开源的算法,大家都用MIT Mini Cheetah在开发,那么就来一探究竟吧。

1.下载代码并编译

地址
https://github.com/mit-biomimetics/Cheetah-Software#readme
什么都不安装,编译

mkdir build
cd build
cmake ..
./../scripts/make_types.sh
make -j4

1.1解决cmake错误1

在cmake …这一步骤停在
Cloning into ‘googletest-src’…
网速給力点就下载好了…

1.2解决qt错误

ls: cannot access '/home/qian/Qt/': No such file or directory
By not providing "FindQt5Gamepad.cmake" in CMAKE_MODULE_PATH this project
 has asked CMake to find a package configuration file provided by
  "Qt5Gamepad", but CMake did not find one.

解决参考
Mit Mini Cheetah开源代码开发环境搭建
(1)先改cmakelist.txt将qt路径改为我的qt安装路径
直接改.sh或者改set(CMAKE_PREFIX_PATH /opt/Qt5.9.1/5.9.1/gcc_64/lib/cmake)

Cannot generate a safe runtime search path for target sim because files in
some directories may conflict with libraries in implicit directories:
runtime library [libQt5Widgets.so.5] in /usr/lib/x86_64-linux-gnu may be hidden by files in:/opt/Qt5.9.1/5.9.1/gcc_64/lib

提示说不安全。
查找一下


sudo find / -name qwindowdefs.h
 
/usr/include/x86_64-linux-gnu/qt5/QtGui/qwindowdefs.h
/usr/include/qt4/Qt/qwindowdefs.h
/usr/include/qt4/QtGui/qwindowdefs.h

发现好多个qt版本啊,不敢删呀,好多都用到了,编译不成功没有找到原因,cmake 功力还是不够啊,不知道怎么改cmakelist.txt,看到别人都是用虚拟机搞的,暂时搞不定,打算也用虚拟机吧,或者把cmakelist改好。
反正是兴趣爱好,不能急啊,打游戏不也是消耗时间吗??有时间就弄弄,搞技术要有一颗平静淡定的心。

解决思路
(1)打印find_package后qt路径
在cmakelist.txt后加入打印可见变量的语句

foreach (_variableName ${_variableNames})
    message(STATUS "${_variableName}=${${_variableName}}")
endforeach()

打印环境变量及其值

execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "environment")

发现找到的qt路径不在我的自定义安装路径下 /opt/Qt5.9.1/
所以不同版本冲突。

(2)修改所有的find_package路径,只在指定路径下查找
如下

find_package(Qt5Core CONFIG REQUIRED PATHS /opt/Qt5.9.1/5.9.1/gcc_64/lib/cmake NO_DEFAULT_PATH )
find_package(Qt5Widgets CONFIG REQUIRED PATHS /opt/Qt5.9.1/5.9.1/gcc_64/lib/cmake NO_DEFAULT_PATH)
get_target_property(QtCore_location Qt5::Core LOCATION)
message(STATUS ${QtCore_location})

find_package(Qt5Gui CONFIG REQUIRED PATHS /opt/Qt5.9.1/5.9.1/gcc_64/lib/cmake NO_DEFAULT_PATH)

find_package(Qt5Core COMPONENTS QtGamepad REQUIRED PATHS /opt/Qt5.9.1/5.9.1/gcc_64/lib/cmake NO_DEFAULT_PATH)
find_package(Qt5Gamepad REQUIRED PATHS /opt/Qt5.9.1/5.9.1/gcc_64/lib/cmake NO_DEFAULT_PATH)

再次cmake后,cmake就不提示版本冲突了。

1.3安装依赖库

 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.4安装LCM 1.3.1

git clone https://github.com/lcm-proj/lcm.git 
cd lcm 
mkdir build 
cd build 
cmake .. 
make 
sudo make install 
sudo ldconfig

安装好后执行

./../scripts/make_types.sh
make -j4

1.5 设置eigen3目录

error: /usr/local/include/eigen3: No such file or directory [-Werror=missing-include-dirs]

错误
这是由于安装eigen3的时候默认安装在/usr/include目录,而编译起器以为安装在 /usr/local/include目录,因此找不到对应文件。这时候可以把eigen3文件夹直接复制到/usr/local/include目录下。
解决1

sudo cp -r /usr/include/eigen3  /usr/local/include/eigen3

尝试在.bashrc中加入,发现不行。。。

export C_INCLUDE_PATH=/usr/local/include/eigen3/:/usr/include/eigen3/

编译,还差最后一个错误

SimControlPanel.cpp:408:12: error: no matching function for call to ‘QMetaObject::invokeMethod(SimControlPanel*, SimControlPanel::on_startButton_clicked()::<lambda()>::<lambda(std::__cxx11::string)>::<lambda()>)});
            ^
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qwindowdefs.h:38:0,

qt5的错误。。。
官方说版本为Qt 5.10
在这里快速下载安装,修改cmakelist
https://mirrors.tuna.tsinghua.edu.cn/qt/development_releases/qt/5.14/5.14.0-rc/
将上文的搜索路径改为新安装的qt安装路径所在的cmake文件夹

cmake ..
./../scripts/make_types.sh
make -j8

终于编译成功了!!!!!来张图
在这里插入图片描述断断续续搞了几个星期,终于成功了!机器狗,我来啦!

在这里插入图片描述

参考
https://zhuanlan.zhihu.com/p/80686651
https://zhuanlan.zhihu.com/p/87052862

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值