目前经过下面过程基本库预编译都不会报错,但是在make的时候会出现c++ no-pie的错误,我也不知道为什么,通过强行删除对应cmakelist文件中该标志位貌似解决该问题,但是仍出现了一些文件缺失(大部分都是ipopt的),目前任然在尝试如解决这些问题会更新帖子。

(9.3号更新已经成功在14.04虚拟机中编译运行成功,如在其他环境中遇到编译问题可参考该贴)。

如果没兴趣尝试请不要参考该贴或者留言。

首先十分感谢廖洽源对该项目内容的整理,在下面的帖子里详细介绍了开源程序架构和仿真软件操作。

这篇帖子主要介绍了如何在虚拟机里安装该程序,我使用Vmware虚拟机进行开发,Linux镜像使用Exbot推出的已安装好ROS的indigo 14.04版本(MIT推荐18.10),官方下载地址:

注:如不想重新安装我提供了已经安装好的虚拟机克隆下载地址:

然后参照如下教程镜像还原,并直接略过后续环节直接进行测试即可:

虚拟机登录密码exbot123,虚拟机安装时建议最少分配40G的空间。在安装完成后首先执行如下命令解决虚拟机无法上网的问题:

安装后不能上网的,运行以下命令:sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
不能挂载U盘的,试试以下命令:sudo apt-get install exfat-utils

更新阿里云的源并执行sudo apt-get update进行更新:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份
sudo apt-get install nano
sudo nano /etc/apt/sources.list #修改

复制下列地址
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

ctrl+X保存
sudo apt-get update #更新列表

1.安装部分缺失库(可选):

sudo apt-get install ros-indigo-joy ros-indigo-octomap-ros 
ros-indigo-mavlink python-wstool python-catkin-tools protobuf-compiler 
libgoogle-glog-dev ros-indigo-control-toolbox ros-indigo-mavros 

2.安装gcc(Ubuntu18.10可选):

sudo apt-get remove gcc(可选,先不要卸载gcc)
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5 g++-5
sudo updatedb && sudo ldconfig
locate gcc

默认ubuntu14的gcc版本是4.8,支持c++11, 不支持c++14,如果gcc -v版本任然是4.8则(make出现no- pie是gcc版本太低)

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5

查看版本:

gcc -v
g++ --version

3.安装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

发现安装gfortran 默认会将gcc刷新回4.8此时重新链接下已安装的gcc5

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5

安装Eigen

sudo apt-get install libeigen3-dev

4.安装JAVA(需要在安装LCM前安装JAVA保证后续链接成功):

sudo apt install default-jdk

5.更新cmake(可选):

wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
tar xvf cmake-3.5.2.tar.gz
cd cmake-3.5.2
./bootstrap --prefix=/usr
make
sudo make install
sudo ldconfig

6.安装LCM实时通信库:

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

7.安装QT5:

Ubuntu 18.10以上直接apt安装:
sudo apt install libqt5 libqt5gamepad5

台式机可以选择run文件安装,文件度盘:

或直接简易安装后在cmakelist里注释gamepad

sudo apt-get insatall qt5-default

8.安装IPOPT(重要):

sudo apt-get install libblas-dev checkinstall 
sudo apt-get install liblapack-dev checkinstall

下载文件,百度网盘地址:

链接:https://pan.baidu.com/s/1NfmADd2TaHnUAqeN83Wg0g  提取码:d9kl  
#或者命令下载:
wget https://www.coin-or.org/download/source/Ipopt/Ipopt-3.12.7.zip 
unzip Ipopt-3.12.7.zip 
#下载第三方库(否则make IpExpansionMatrix.hpp会报错)
cd /Ipopt-3.12.7/ThirdParty/Blas
./get.Blas
cd ../Lapack
./get.Lapack
cd ../Mumps
./get.Mumps
cd ../Metis
./get.Metis
cd ../../                        #Go back to the IPOPT base dir
#编译:
mkdir build
cd build
../configure
make
make install
sudo ldconfig
#链接库
mkdir /usr/local/ipopt
mkdir /usr/local/ipopt/include

# include 
sudo cp -a /home/exbot/Downloads/Ipopt-3.12.7/build/include/coin/*  /usr/include/.
# lib
sudo cp -a /home/exbot/Downloads/Ipopt-3.12.7/build/lib/*  /usr/include/.
 

下载MIT的源码:

或者百度网盘:

9.修改cmakelist链接QT文件(链接QT对应地址):

set(CMAKE_PREFIX_PATH /home/exbot/Qt5.10.0/5.10.0/gcc_64)
#set(CMAKE_PREFIX_PATH ~/Qt/5.12.3/gcc_64)
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

# Instruct CMake to run moc automatically when needed
set(CMAKE_AUTOMOC ON)
# Create code from a list of Qt designer ui files
set(CMAKE_AUTOUIC ON)

set(Qt5Core_DIR /home/exbot/Qt5.10.0/5.10.0/gcc_64/lib/cmake/Qt5Core)
set(Qt5Widgets_DIR /home/exbot/Qt5.10.0/5.10.0/gcc_64/lib/cmake/Qt5Widgets)
set(Qt5Gamepad_DIR /home/exbot/Qt5.10.0/5.10.0/gcc_64/lib/cmake/Qt5Gamepad)

10.编译MIT源码:

cmake ..
./../scripts/make_types.sh  这一步保错好像无所谓
make -j4
编译成功

make中相关问题解决方法:

file not recognized: File truncated collect2: error: ld returned 1 exit status
删除build重新cmake和make

11.测试

首先在build目录下打开仿真环境:

./sim/sim

之后在新的控制台中运行控制器:

./user/${controller_folder}/${controller_name} ${robot_name} ${target_system}
例如./user/JPos_Controller/jpos_ctrl 3 s
MiniCheetah控制器:
./user/MIT_Controller/mit_ctrl m s

在仿真环境中选择机器人 Cheetah 3, Mini Cheetah还有是否是仿真还是实际运行 simulation, robot

(另外发现在虚拟机仿真中如果无法连接网络在启动仿真器时LCM库会报错,仿真器直接死机,目前还不知道为什么)

打开仿真环境成功

官方默认推荐使用罗技Gamepad F310遥控器:

关于vmware 不识别USB遥控器方法:

在运行窗口中输入命令services.msc,按下确定按钮,打开服务窗口,在打开的服务窗口中,找到Vmware USB Arbitration Service这一项,并双击打开其属性窗口。

在新打开的服务属性窗口中,点击启动类型下拉菜单,选择为“自动”菜单项,然后点击应用按钮,接着点击窗口上的“启动”按钮,打开VM虚拟机,然后右键点击要启动的系统,在弹出菜单中选择“设置”菜单项,在打开的虚拟机设置窗口中,点击左侧的“USB控制器"一项在右侧窗口中找到“显示所有USB输入设备”一项,并选中其前面的勾选。

启动虚拟机在插入遥控器在右下角弹出的USB设备中点击链接设备,之后虽然在虚拟机中无法查看到usb0设备但是在仿真中确实可以使用遥控器对机器人进行控制(注:遥控器后部在X档,同时前面MODE灯为灭,如切换模式均需要重新插拔遥控器)。


之后参考廖洽源给出的软件相关操作方法:

运行 MIT Controller 后,将开始模拟,机器人会从伸展状态运动到趴着的状态,此时control_mode 为0 (NORMAL in PASSIVE),若没有插入手柄且模拟的是MIT Cheetah 3, 会出现一个关节反向猛烈穿透身体而导致物理引擎出错。

  1. 将 control_mode 改为10 (JOINT_PD), 机器人电机会上电切处于准备站立的姿态
  2. 将 control_mode 改为1 (STAND_UP), Mini Cheetah会站立,而Cheetah 3 有Bug不会动
  3. 将 controlmode 改为4 (LOCOMOTION), 上述的MPC控制器和阻抗控制器会开启,默认进行以Tort步态运行,此时可以用手柄操作
  4. 可以通过修改 cmpc_gait 来改变步态
  5. 可以通过改变cheater_mode(0/1)来开关状态估计的结果的显示

注意模式选择直接修改参数即可不需要点击界面上的SAVE!

安装过程参考地址: