本文是Windows环境下Eigen、osqp、osqp-eign库安装教程,安装好后在visual studio中用模板案例进行测试。
关于这几个库网上的安装教程并不多,教程评论区大家讨论的也不多,遇到问题了也不好解决。我在跟着其他教程安装的过程中遇到了很多的问题,最后磕磕绊绊才下好了,所以跟大家分享一下我在过程中的操作和遇到的一些问题,希望能对大家有所帮助。
一、前期准备
1.1 下载CMake
参考:Windows下Cmake安装步骤详解(图文)_windows终端安装cmake-优快云博客
【记得检查环境变量】
1.2 下载TDM-GCC
参考:tdm-gcc 的下载、安装教程【超详细】-优快云博客
【记得检查环境变量】
二、库的下载与安装
2.1 Eigen的下载与安装
Eigen官网链接:http://eigen.tuxfamily.org/index.php?title=Main_Page
Step1 下载并解压
我将Eigen、osqp、osqp-eigen全部放在了文件夹Osqp下,大家自己想放哪儿放哪儿就好,自己知道在哪儿就好。
Step2 配置环境变量
【此电脑双击->空白处右击->属性->高级系统设置】
【点击环境变量】
【找到系统变量->点击Path】
【点击新建->将eigen的存放地址添加进Path->一路确定点回去】
Step3 复制FindEigen3.cmake
【如果不进行这一步,后续可能会报错Not FindEigen3.cmake】
【将eigen文件夹下找到 cmake\FindEigen3.cmake 文件,并将其复制到CMake的安装目录下的CMake\share\cmake-3.30\Modules】
【复制到这儿】
【至此,Eigen的工作就基本完成了】
2.2 osqp的下载与安装
Step1 下载安装
方法1 下载官网压缩包
osqp官网地址:Releases · osqp/osqp · GitHub
【注意:osqp最好下载0.6.3版本,不然后续会出很多问题,还不一定能解决】
【下载好解压并在里面创建空文件夹build】
【我最初用的这个方法,但是到后续步骤使用CMake时,一直报错CMake error: error in configuration process, project files may be invalid,所以最后我放弃了这种方法,采用了方法二】
方法2 克隆存储库
2.1
【找到你想要将osqp放置在这里的文件夹,右击->Open Git Bash here】
这里我使用的是Git Bash,我看其他教程有在cmd里运行的,但我失败了,还找不到解决办法,所以我去下载了git,并用git bash来运行。
git下载教程:Git教程 Git Bash详细教程-优快云博客(我就按教程走到设置用户,然后后面的就没弄了)
2.2
【输入如下指令】
git clone --recursive -b release-0.6.3 https://github.com/oxfordcontrol/osqp.git
【注意是否是你想要存放的那个文件夹】
【这里下载可能一直不成功】
解决办法参考:解决 git:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0-优快云博客
这里这样做了可能还是不成功,挂个梯子找个快一点儿的节点,然后多试十几次,就行。经验之谈
【注意:后续我的操作与其他教程不太一样,因为我按他们教程的成功不了】
2.3
【Step2后Osqp文件里有了osqp,则代表Step2下载成功】
【在osqp下创建空文件夹build】
Step2 CMake构建
【运行cmake-gui】
【选中osqp存放的文件夹和刚建立的build文件夹】
【先点击configure,再点击generate】
点击configure时需要选择一些配置
第一项根据你的visual studio版本来,我是2022版,就选择的visual studio 17 2022那个选项
后几项默认就行
点击configure后下方出现done的字样后,再点击generate,同样出现done后表示成功
【注意:此处是很容易出问题的。如果出现了问题,如error in configuration process, project files may be invalid,大概率是前面git克隆出现了问题,有文件缺失,多去下几次尝试就好,反正我是这样】
Step3 ALL_BUILD
【Step2成功后,osqp的build文件夹就会出现下面的文件,双击ALL_BUILD进入vs】
【右击解决方案->生成解决方案】
生成成功即代表osqp的任务基本完成
2.3 osqp-eigen的下载与安装
osqp-eigen的步骤与osqp基本一致,所以我直接写我采取的方法
方法2 克隆存储库
2.1
【找到你想要将osqp-eigen放置在这里的文件夹,右击->Open Git Bash here】
这里我使用的是Git Bash,我看其他教程有在cmd里运行的,但我失败了,还找不到解决办法,所以我去下载了git,并用git bash来运行。
git下载教程:Git教程 Git Bash详细教程-优快云博客(我就按教程走到设置用户,然后后面的就没弄了)
2.2
【输入如下指令】
git clone https://github.com/robotology/osqp-eigen.git
【注意是否是你想要存放的那个文件夹】
2.3
【Step2后Osqp文件里有了osqp-eigen,则代表Step2下载成功】
【在osqp-eigen下创建空文件夹build】
Step2 CMake构建
【运行cmake-gui】
【选中osqp-eigen存放的文件夹和刚建立的build文件夹】
【先点击configure,再点击generate】
【此处第一次configure是一定会失败的,因为有设置需要更改】
【如下图操作,将osqp_DIR的value改为osqp的build文件所在位置,将Eigen3_DIR的value改为eigen所在文件夹,然后再次点击configure,此时会成功,然后再点击generate】
Step3 ALL_BUILD
【Step2成功后,osqp-eigen的build文件夹就会出现下面的文件,双击ALL_BUILD进入vs】
【右击解决方案->生成解决方案】
生成成功即代表osqp的任务基本完成
三、案例测试
Step 1 新建项目
找到osqp-eigen->example->src->MPCExample.cpp,复制该文件
新建一个vs项目,将该文件粘贴到资源文件
Step 2 配置
【项目->xx和属性->VC++目录】
【包含目录配置】
需要osqp的include、osqp-eigen的include、eigen所在文件夹
【库目录配置】
【链接器配置】
Step 3 运行
基本上到此,程序就能运行了。
可能会出现M_PI未定义报错的情况,点击报错信息,在报错这个文件里,添加如下语句即可
#include <corecrt_math_defines.h>
如果出现头文件有缺失的情况,一种是上一种可以直接补充,还有可能就是前面osqp的git下载有残缺,回去多下载几次,多试几次。
基本上这样就代表安装完成了
四、参考文章
1.Windows C++ 环境下 eigen、osqp、osqp-eigen安装教程_windows eigen-优快云博客