开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建

orocos_kdl windows 环境搭建

牺牲了一个周末,总算是搞出来了,感觉这写代码原本是在linux上跑的,强行在windows上很费事,强烈建议在linux上玩。

orocos 项目是开源机器人控制软件,详见:http://www.orocos.org/

包含以下几个部分,这篇文章主要用于学习运动学与动力学库,简称KDL。

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第1张图片

源码可以从github下载:

git clone https://github.com/orocos/orocos_kinematics_dynamics.git
有源代码之后可以查看、运行demos,但首先需要搭建开发环境,搭建环境我也费了很大劲,由于全网都没有一个完整的教程,所以秉承开源精神将我搭建环境的方法分享出来。

平台:win7+visual studio 2015;

需要:CMake,boost,eigen3;(自己去下载,网上都有安装教程这里不啰嗦了)

git下来的orocos_kdl源码文件夹中有:

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第2张图片

在进行cmake之前需要修改一下orocos_kdl中的CMakeLists.txt的内容,因为不修改的话cmake会报错EIGEN3_INCLUDE_DIR没有定义。在这个之前还需要将下载的eigen-eigen-5a0156e40feb文件夹放入orocos_kinematics_dynamics-1.3.1文件夹中,最好改名为eigen3。

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第3张图片

这一步之后,还需要修改orocos_kdl\models\CMakeLists.txt里的内容,不然的话VS编译的时候会显示“无法打开文件orocos-kdl-models.lib”。

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第4张图片

到这里之后就可以打开cmake-gui.exe了,在orocos_kdl中新建文件夹build,然后按下图的1-6操作,出现第7步说明成功了。注意这里一定要选BUILD_MODELS,不然后面只有一个example正常;ENABLE_TESTS是单元测试,选了cmake会报错,缺少支持的库;KDL_USE_NEW_TREE_INTERFACE不知道是啥,反正别选。这些都是坑,以后再填。

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第5张图片

到这里之后就可以双击打开工程文件orocos_kdl.sln了。编译一下发现100多个报错,大概是:M_PI未定义、打不开文件等。由于VS的里面没有定义M_PI和M_PI_2等,所以这个可以手动定义:#define M_PI 3.14159265358979323846,只在几个demos里面会出现这个问题;打不开文件是因为没装boost库,安装一下之后,一定要做这一步:视图->其他窗口->属性管理器,在属性管理器里面双击:

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第6张图片

出现属性页窗口后:


开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第7张图片

然后:

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第8张图片

之后点应用就ok了。

做完这个之后,再完整编译一次整个工程,一般会编译成功。

有三个demos可以运行:geometry、trajectory_example、chainiksolverpoa_lma_demo。

geometry主要是用于熟悉库中用于表示三维点的位置和姿态的方法;

trajectory_example是机械臂笛卡尔空间的轨迹规划;

chainiksolverpoa_lma_demo是逆解,使用了一个典型的机器人模型。

geometry的运行结果如下:

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第9张图片

trajectory_example的运行结果如下:

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第10张图片

chainiksolverpoa_lma_demo的运行结果如下:

开源机器人库orocos KDL 学习笔记一:win7VS2015环境搭建_第11张图片

这里面还有很多坑没填完,所以最好是在linux下搞这个,如果有在windows在搞过的请赐教!



你可能感兴趣的:(机器人学,C/C++,orocos)