前言
承接上文,想要通过MPC进行轨迹的跟踪,参考了一些教程,打算采用OSQP,OSQP-Eigen求解器进行机器人控制输入U(k)的计算。
一、Ubuntu18.04下安装不同的CMake版本
后面在编译OSQP,OSQP-Eigen时,如果用的是CMake版本过低会出现报错提示(如果使用鱼香ros自动安装的ros,默认的CMake版本是:3.10.2),提示需要CMake 3.18以上
(1)官网下载对应版本的Cmake:CMake官网
(2)找到下载完后的目录,解压
(3)创建软链接
将下载的Cmake连接到系统中 一般将Cmake文件放在/opt 或 /usr 路径下, 这里选择/opt:
sudo mv cmake-3.21.0-Linux-x86_64 /opt/cmake-3.12.0
创建软连接
sudo ln -sf /opt/cmake-3.18.0/bin/* /usr/bin/
(4)执行命令检查:cmake --version
二、eigen库的安装
链接:eigen
将下载好的eigen-3.4.0文件夹拷贝到主目录下,进入到eigen-3.4.0文件夹中,在当前路径下右键打开终端,并输入以下指令,完成eigen库的安装
//打开终端,进入/eigen-3.4.0文件夹,然后执行以下指令
mkdir build
cd build
cmake ..
sudo make install
//拷贝头文件到系统的用户头文件中,方便后期管理
sudo cp -r /home/wjx/eigen-3.4.0 /usr/local/include/eigen3
/home/wjx/eigen-3.4.0 替换为自己的路径
三、osqp库的安装
链接:ospq
将下载好的osqp文件夹拷贝到主目录/home,进入到下载好的osqp文件夹中,在当前路径下右键打开终端,并输入以下指令,完成osqp库的安装
//打开终端,进入osqp文件夹,然后执行以下指令
$ mkdir build //然后创建build文件夹
$ cd build //再进入build文件夹
$ cmake .. //在build文件夹中进行编译
$ cmake .. -DCMAKE_INSTALL_PREFIT=usr/local/osqp
$ sudo make install
$ source ~/.bashrc //刷新环境变量
四、osqp-eigen库的安装
链接:ospq-eigen
将下载好的osqp-eigen文件夹拷贝到主目录/home,进入到下载好的osqp-eigen文件夹中,在当前路径下右键打开终端,并输入以下指令,完成osqp-eigen库的安装
//打开终端,进入osqp-eigen文件夹,然后执行以下指令
$ mkdir build //然后创建build文件夹
$ cd build //再进入build文件夹
$ cmake .. //在build文件夹中进行编译
$ cmake .. -DCMAKE_INSTALL_PREFIT=usr/local/osqp-eigen
$ sudo make install
$ source ~/.bashrc //刷新环境变量
五、出现的问题
fatal error: Eigen/Dense: No such file or directory
首先查到eigen的安装路径为:
/usr/include/eigen3/Eigen
解决办法:
在终端执行下列指令
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
报错原因分析:
这是因为一些文件在编译时指向 Eigen 库的头文件位于 /usr/include/Eigen 目录下,而不是 /usr/include/eigen3/Eigen。
通过执行上面指令后,创建了一个名为 /usr/include/Eigen 的符号链接,指向 /usr/include/eigen3/Eigen 目录。具体来说,执行这条指令后,系统中的任何访问 /usr/include/Eigen 的请求都会被重定向到 /usr/include/eigen3/Eigen。
总结
求解器的安装我是按照这篇博客linux安装eigen/osqp/osqp_eigen库,记录下操作流程。
另一个原因是备份一下Eigen OSQP OSQP-EIGEN安装包:
因为我在github上下载了Eigen OSQP OSQP-EIGEN源码,但在后面进行编译时一直不通过,后面换了现在文章中的Eigen OSQP OSQP-EIGEN包后顺利编译。