1、基础环境
- windows下安装好webots,默认会使用Webots新建项目和c++控制器
- 下载vscode,基础配置可以先不管
- 下载mingw64并配置好环境变量
2、Eigen库下载
- 直接下载eigen压缩包,解压到你的某个路径下,注意路径里不要有中文和空格,eigen根目录为\eigen-3.4.0,该目录里能看见Eigen子文件夹。在你的项目里只需要包含这个根目录:\eigen-3.4.0
3、qpOASES库下载
- 我在官网上打不开下载界面,从别的地方扣来了源码,直接下载qpOASES压缩包,一样保存到没有中文和空格的路径下,解压后进入\qpOASES-master这个根目录,
4、Webots项目的建立
- 用Webots新建好你的机器人项目后,并建立一个c++控制器,选用编译器的时候,选用Webots自带的cmake,此时在控制器路径下产生一个makefile文件。
5、VScode下编译qpOASES库
- 编译的目的只是生成一个静态链接库
libqpOASES.a
文件 - vscode打开上面下载出来的文件夹\qpOASES-master,打开后,vscode左侧有一个
cmakelists
文件,点击他,这个时候理论上vscode就会推荐安装cmake插件了,或者手动安装,如下图:三个应该都要装
- 打开文件夹内的
make.mk
文件,在里面选择window系统:把其他三行注释,解注释window那一行,如下:
TOP = $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
# include ${TOP}/make_linux.mk
#include ${TOP}/make_cygwin.mk
include ${TOP}/make_windows.mk
#include ${TOP}/make_osx.mk
-
观察vscode下面的状态栏,是否出现build按钮,没有重启vscode看看。
点击build按钮,他会根据文件夹的cmakelists文件进行编译qpOASES库,点击build后,第一次应该顶 上出现选择编译器,选用上面安装配置的mingw64,或者根据你自己有的vs的编译器,带x64应该都可以
编译成功后左侧输出栏应该会显示finished
此时点击回到vscode资源管理器里,应该会出现build文件夹,里面的libs里的链接库即为我们所需要的
6、VScode下配置webots环境
- 我习惯用vscode作为平时开发环境,用vscode开发webots项目,实现的是在vscode里写代码,并且能够查看webots库函数啥的,然后回到webots里面点击编译按钮,并运行
- vscode安装后,先安装插件,例如:1. 中文汉化、2.cmake 3. c/c++。可以不用刻意去装,直接用vscode打开你的webots项目文件夹ROBOT,打开cpp文件,应该vscode右下角会推荐你安装c++的插件,点击安装就好
- 在打开的文件夹下,创建一个叫做
.vscode
的文件夹,并在里面新建c_cpp_properties.json
文件,在里面复制以下内容:并且根据你自己安装的eigen库和qpOASES库的具体路径修改
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}",
"D:\\Webots\\include\\controller\\cpp",//你的webots安装路径的include里找找
"D:\\Webots\\include\\controller\\c",//你的webots安装路径的include里找找
"D:\\qpOASES-master\\include",//你的qpOASES-master路径的里找找
"D:\\eigen-3.4.0"//你的eigen路径的里找找
],
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "${default}",
"path": [
"${workspaceFolder}",
"D:\\Webots\\lib\\controller",//你的webots安装路径的include里找找
"D:\\qpOASES-master\\build\\libs",//你的qpOASES-master路径的里找找
"D:\\eigen-3.4.0"//你的eigen路径的里找找
]
},
"intelliSenseMode": "${default}",
"cStandard": "c11",
"cppStandard": "c++17",
"compilerPath": "${default}"
}
],
"version": 4
}
- 打开当前工作文件夹内的makefile,复制以下内容
# CXX_SOURCES = $(wildcard *.cpp) # 这一句是编译文件夹内所有cpp文件,多个cpp文件可以直接这样
CXX_SOURCES =robot.cpp robot2.cpp
# 下面这里三个路径根据自己的eigen库路径和qpOASES路径修改
INCLUDE = -I D:/qpOASES-master/include -I D:/eigen-3.4.0 -I D:/qpOASES-master/include/qpOASES
# 下面这个路径就是我们编译出来的静态链接库的路径,例如文件叫做libqpOASES.a,那么就要去除前面lib和后面.a写成-lqpOASES
LIBRARIES = -L "D:/qpOASES-master/build/libs" -lqpOASES
# D:\QT\Mylibs\qpLibs\qpOASES-master\build\libs
### Do not modify: this includes Webots global Makefile.include
null :=
space := $(null) $(null)
WEBOTS_HOME_PATH=$(subst $(space),\ ,$(strip $(subst \,/,$(WEBOTS_HOME))))
include $(WEBOTS_HOME_PATH)/resources/Makefile.include
7、webots里编译运行
- 我们利用vscode写代码能够具备智能补写,跳转函数之类的非常方便的功能,写好代码后,最后去webots里编译代码
- window下安装qpOASES主要是注意编译后,webots里的makefile修改,而且一开始我用的别人编译好的,到自己这里就出问题,所以最后还是自己编译才成功了。