Amy-Tabb机器人世界手眼标定(4、Windows)
目录
Ubuntu系统下的各版本
作者的版本
准备工作:
1、SuiteSparse
2、Eigen3
3、Gflag
4、glog
6、Ceres编译
7、工程搭配目录
问题1:
导师要求在windows下运行。最大的难题其实是ceres solver。即Ceres这个迭代器的编译。
参考官网:Ceres Solver — A Large Scale Non-linear Optimization Library
Ceres Solver 1是一个开源 C++ 库,用于建模和解决大型、复杂的优化问题。它可用于解决具有边界约束和一般无约束优化问题的非线性最小二乘问题。它是一个成熟、功能丰富且性能卓越的库,自 2010 年以来一直在 Google 的生产环境中使用。
官网中有两种办法
①:用vcpkg GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS来安装ceres库(vcpkg有点像pip)
②:源码构建 但是需要VS2019以上版本的编译器
---------------------------------------------------------------------------------------------------------------------------------
选用第一种办法,根据readme成功搞定vcpkg,然后
vcpkg install ceres:x64-windows
git pull的时候报错
参考网上解决办法:解除ssl验证后,再次git
git config --global http.sslVerify "false"
fatal: unable to access 'https://github.com/microsoft/vcpkg/': Failed to connect to github.com port 443 after 21078 ms: Timed out
网上兜了一圈也不知道哪里错了。。
可能是我的vs2015不配用vcpkg?
无奈卸载VS所有内容,然后重新安装下VS2022
Ubuntu系统下的各版本
记录一下跑通的时候各个版本是什么:opencv4.0.0、Eigen3.3.4、Ceres2.1.0
作者的版本
OpenCV 4.0、Ceres1.14、Eigen3.3.4,cmake版本无所谓
按照作者版本
发现cmake被我卸载了。。
cmake的安装参考https://www.jb51.net/article/238636.htm
准备工作:
新建一个文件夹Ceres,用来放各种依赖库。
Ceres大文件夹里再创建几个小文件夹,分别是glog、gflag、Eigen3、SuiteSparse
至于Ceres官网说的CXSparse,在windows下不能使用,不友好,因此先暂时不用了,只是可选内容,而且实际上SuiteSparse文件夹里也有个叫CXSparse的(虽然不知道他们俩有啥关系)
编译过程总的来说参考5、gflag
编译顺序为 gflags -> glog -> ceres,eigen 在 ceres 编译之前任意时候编译均可,那么先编译 eigen 库好了
1、SuiteSparse
按照GitHub - jlblancoc/suitesparse-metis-for-windows: CMake scripts for painless usage of SuiteSparse+METIS from Visual Studio and the rest of Windows/Linux/OSX IDEs supported by CMake
把SuiteSparse编译一下。Readme写的很清楚!
先打开cmake-gui
在suitesparse解压后的文件夹里面新建build文件夹作为编译后放的目录
同样地,新建install文件夹作为CMAKE_INSTALL_PREFIX的路径
CMAKE_INSTALL_PREFIX:这个路径是install后生成的头文件和库文件存放的路径,这里我们在源码同级目录下创建一个文件夹,命名为install。
cmake configure后打开项目
选择INSTALL,在Release和Debug下都生成INSTALL。
Eigen+suitesparse for windows 安装_xiamentingtao的博客-CSDN博客_suitesparse安装
2、Eigen3
虽然官网说什么不需要安装,但是我还是用cmake进行编译。同样的办法尝试。生成Release和Debug的INSTALL。
Windows下cmake编译Eigen3.3.4_YY3Y的博客-CSDN博客_cmake eigen3 windows
具体参考这篇文章
这里在eigen-3.3.4解压后文件夹里新建build文件夹来作为cmake的build目录。
编译一次报错后修改一些设置,这里比较坑的是eigen文件夹里本来就有个叫INSTALL的文件,导致没法建文件夹install。因此我这建了Eigen3_install,用来当CMAKE_INSTALL_PREFIX的路径。
继续Configure直到没问题后Generate,open project
分别生成debug和release版本下的INSTALL
3、Gflag
因为考虑到glog编译的时候有一个With_Gflag,那我们先安装Gflag。
这里有个坑就是gflag文件夹里有个叫BUILD的文件。。。不能生成build文件夹,所以改下名字吧。。跟前面的格式不一样,自己记着点。
修改下PREFIX然后注意勾选build_shared_libs然后Generate,open project。
还有一点不同就是用Visual Studio 2022打开的时候ALL_BUILD和INSTALL全都要生成一下(为啥我也不知道)
4、glog
老规矩,生成build和install文件夹
打开cmake-gui
第一遍configure后
关键俩个参数
①是BUILD_SHARED_LIBS,这个选项我们要勾上,因为我们需要动态库。
②是CMAKE_INSTALL_PREFIX,这个路径是install后生成的头文件和库文件存放的路径,这里我们在源码同级目录下创建一个文件夹,命名为install。
此外,build_testing取消勾选
最后按照下图这样配置
之后分别点击Configure和Generate,生成完成后没有红色选项
也是对ALL_BUILD和INSTALL都生成一下。
6、Ceres编译
准备工作完成,重头戏开始!
网上下载了ceres1.14.0
GitHub - ceres-solver/ceres-solver at 1.14.0
这里还是有个坑的BUILD文件。
于是还是新建ceres_build
配置一条条改
一条条改
①、BUILD_SHARED_LIBS勾选
②、BUILD_TESTING取消
③、BUILD_EXAMPLE取消
④、参照gflags_DIR默认设置把glog_DIR添加上
⑤、GLOG_INCLUDE_DIR添加为D:\ceres\glog-master\src\windows
⑥、CXSparse勾选,目录选suitesparse里的同名文件夹
⑦、XX_LIBRARY没找到的话去对应install/lib里面找。加d的是debug版本 我这里统一用的release版本
⑧:Eigen3_DIR改成D:/Ceres/Eigen3/eigen-3.3.4/build
⑨:EIGNE_INCLUDE_DIR改为D:/Ceres/Eigen3/eigen-3.3.4/Eigen3_install/include
我这里configure完成后
报错1:
Failed to find Eigen - Could not find file:
D:/Ceres/include/eigen3/Eigen/src/Core/util/Macros.h containing version
information in Eigen install located at: D:/Ceres/include/eigen3.
这里很坑的是EIGEN_INCLUDE_DIR无法修改,只能把把eigen3里面文件夹复制下去,参考报错完成他的搜索。
然后又报错
glog_DIR not find。
这个简单 修改成D:/Ceres/glog/glog-master/build
生成完ALL_BUILD和INSTALL的Release和Debug版本了。
分别对SuiteSparse的include_dir和library做修改。
include在对应的install/include文件夹
library选择
D:/Ceres/SuiteSparse/suitesparse-metis-for-windows-master/install/lib/suitesparseconfig.lib
因为这里是release版本
7、工程搭配目录
可以看到工程首先没有include那些东西
windows下编译、配置ceres库(保姆级教程)_江湖 路人的博客-CSDN博客_ceres 库
参考这个文章搞定了。缺什么就include什么
然后弹出缺少源文件“dirent.h”
dirent.h是一个能够遍历文件和目录的API,通常unix系统会提供这个文件,但是VS缺少这个API。需要自己安装一下这个文件
解决方法:
1、Visual studio 2019 报错没有“dirent.h”文件_zyrant丶的博客-CSDN博客
2、将dirent.h文件放入Microsoft Visual Studio的include文件夹内,如:
完成后,编译报错
问题1:
错误 C1189 #error: ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail. testHelloworld E:\3Dparty\Ceres\3DpartyLib\Ceres\Include\glog\log_severity.h 66
解决方案
预处理器中增加宏定义:GLOG_NO_ABBREVIATED_SEVERITIES
---------------------------------------------------------------------------------------------------------------------------------
几个注意的点:
1、Solve函数用ceres/solver.h文件里的函数,不要用eigen里的同名函数
2、dirent.h去github里面找,然后随便放在任意包含库的路径下。
3、选择新建项目,把cpp后缀的放在源文件里,hpp后缀放在头文件里,然后进行编译
4、编译项目前看下Cmakelist.txt(这个项目其实CostFunction1_2.cpp和CostFunction1_2.hpp是没用的,不需要加到项目里去。)
5、编译没有bug,能生成.exe文件。但是debug或者运行的时候发现报错:没有XXXXX.dll或者应用程序运行错误 0x0000007什么的:说明动态库有问题,看下是哪个动态库,如果缺少的话百度一下,如果是系统的动态库那就网上下载,如果是前面说的比如suitesparse里的动态库,不要去网上下,去github下载源码自己编译然后把生成的.dll文件放在包含目录下(一般放在C:windows/sys32文件夹或者工程生成的.exe同级文件夹里就行)
Amy-Tabb机器人世界手眼标定(4、Windows)相关推荐
- Amy-Tabb机器人世界手眼标定(2、实验结果)
四轴机器人手眼标定课设_HITSZ阿星的博客-CSDN博客 上面这个文章已经把环境搭配好了,接下来参考论文对试验进行复现 build后用终端输入命令 /home/jqx/RWHEC-Tabb-Ahma ...
- Amy-Tabb机器人世界手眼标定(3、论文分析)
目录 3.误差 3.1.平均旋转误差er 3.2.平均平移误差 3.3.平均组合旋转和平移误差ec 3.4.重投影均方根误差(rrmse) 3.5.重建精度误差 (rae) 3.6.模拟数据集里的误差 ...
- Amy-Tabb机器人世界手眼标定(1、环境搭配)
本文为https://github.com/amy-tabb/RWHEC-Tabb-AhmadYousef 的环境搭配 sudo命令: Linux sudo命令以系统管理者的身份执行指令,也就是说, ...
- scare机器人如何手眼标定_标定系列一 | 机器人手眼标定的基础理论分析
旷视MegMaster机器人系列是旷视自主研发的一系列AI智能机器人硬件设备,基于旷视全球领先的人工智能算法及机器人技术,可实现搬运.分拣.托举.存储等功能,被广泛应用于物流仓储.工厂制造等场景.旷视 ...
- 四轴平面机器人的手眼标定
四轴平面机器人的手眼标定 介绍 在实际的机器人应用中,通常会给机器人配备视觉传感器,视觉传感器用于感知周围环境.但是,通过视觉传感器获取的场景坐标是基于视觉坐标系下的,机器人并不能直接使用,要获取机器 ...
- SCARA四轴机器人eye-to-hand手眼标定(九点标定)
SCARA四轴机器人eye-to-hand手眼标定(九点标定) 9点法标定是工业上使用广泛的二维手眼标定,它分为eye_in_hand和eye_to_hand两种.在做项目时,用到的是eye-to-h ...
- scare机器人如何手眼标定_基于视觉伺服的工业机器人系统研究(摄像机标定、手眼标定、目标单目定位)...
击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 标定技术 常见的机器人视觉伺服中要实现像素坐标与实际坐标的转换,首先 ...
- scare机器人如何手眼标定_Epson四轴机器人的手眼标定(原理并附上halcon代码)...
关于机器人视觉的手眼标定的原理,勇哥先放上一些教程资源: 众所周知,目前机器视觉项目,很大一部分都是引导机器人去取料 放料等工作. 这个里面就有个非常重要的工作要做.就是将相机的坐标系 映射到机器人 ...
- (二)2D视觉机器人的手眼标定流程记录
内容 1.背景介绍 1.1 问题 1.2 思路 2.操作流程 1.背景介绍 2D视觉机器人指的是机器人通过2D相机提供的视觉信息,完成某些实际的功能. 下面以眼在手上标定为例: 上图中,相 ...
最新文章
- 存储时间:高清3D化,技术应用化?
- 小米10至尊纪念版今日开卖:120hz高刷+120W秒充
- Minix的系统调用
- Mysql启动报错解决方案:Failed to open log (file ‘./mysql-bin.000901‘, errno 2)
- [转载] python difference用法_set.difference() 的用法(python3)_python3 set集合,三元运算以及
- java 日期相差年份_JAVA计算两个日期相差的实例
- 【3】基于深度神经网络的脑电睡眠分期方法研究(数据集分类)
- 看看世界各地牛人的彪悍乘车功夫
- 机器学习:sklearn模型指标和特征贡献度查看
- Python从入门到数据分析第一篇—Python简介- Python介绍与初探
- 互联网+O2O 的商业模式
- 如何运行PHP文件 /创建PHP项目【基于VScode、XAMPP】超级详细,亲测有效,这一篇就够了
- 最快的扫雷记录,初级只需要0.49秒,一眨眼就结束的操作!
- 数学笔记28——不定式和洛必达法则
- ES修改mapping中的字段名称
- 小米5x的Build属性
- Mathcad的数组使用
- 天润融通java面试_【天润融通怎么样?】-看准网
- ColorUI配色详情
- 查漏补缺!阿里内部Android笔记火爆IT圈,已拿offer入职
热门文章
- 哎,开发又被骗了……
- eclipse开发安卓android程序环境
- Android 开发 Flutter
- 昨天玩游戏的情绪总结
- 《高效程序员的45 个习惯》读书笔记
- 我的世界服务器物品使用权限,MineCraft常用权限大全 - 技巧教程 - 最MC论坛 - 我的世界_Minecraft_联机_服主_资讯_MOD_皮肤_交流_作品_中文论坛...
- dlopen failed: *.so has unexpected e_machine
- 让古天乐心动的这位女星,鼻子塌却美得风华绝代
- 星星下落_与星星共舞
- 乐嘉版 人物性格,红黄蓝绿