【2D位姿估计3】ELSDc线段椭圆提取算法填坑路

1 说明

实验室复现高精度位姿估计算法的时候,需要调用ELSDc算法,当时算法是在MAC上编译的,而我在复现的时候用的ubuntu 16.04 ,所以进行了一轮踩坑,在半天之后搞定了算法的复现,这里记录一下遇到自己填坑的过程。
ELSDc原理介绍:链接

2代码调试阶段的问题

1 sh: 1: ./ELSDC/elsdc:Permission denied

解决办法:
在这里插入图片描述
2 Syntax error:(unexptected
在这里插入图片描述
解决办法:
代码对于标准bash而言没有错,因为Ubuntu/Debian为了加快开机速度,用dash代替了传统的bash,是dash在捣鬼,解决方法就是取消dash。

sudo dpkg-reconfigure dash
在选择项中选No,搞定了!

参考

3.开源项目ELSDc使用

到第二部完成,应该来说是可以使用代码了,但是在运行的时候报错:
在这里插入图片描述
这个错误找了会错误原因:
应该是编译环境不一样导致的编译出来的二进制文件不同。参考
然后就是找解决办法,倒腾了一会 学长发来了该算法的源码地址
然后在readme中找到了问题的解决办法:
在这里插入图片描述
然后就照着流程去解决这个问题拉。
1 安装CLAPACK/CBLAS库
这两个数学库是很多linux科学计算软件需要调用的,所以经常会用到。

LAPACK,其名为Linear Algebra PACKage的缩写,是一以Fortran编程语言写就,用于数值计算的函式集。LAPACK提供了丰富的工具函式,可用于诸如解多元线性方程式、线性系统方程组的最小平方解、计算特征向量、用于计算矩阵QR分解的Householder转换、以及奇异值分解等问题。

BLAS,全称Basic Linear AlgebraSubprograms,即基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序。

下面是安装的过程
首先
lapack源码:http://www.netlib.org/lapack
BLAS源码:http://www.netlib.org/blas
CBLAS源码:http://www.netlib.org/blas/blast-forum/cblas.tgz
并且安装gfortran编译器

sudo apt-get install gfortran

准备工作完成后,开始编译
1)编译blas, 进入BLAS文件夹,执行以下几条命令

gfortran -c -O3 *.f  # 编译所有的 .f 文件,生成 .o文件 
ar rv libblas.a *.o  # 链接所有的 .o文件,生成.a 文件 
sudo cp libblas.a /usr/local/lib  #将库文件复制到系统库目录   

2)编译cblas, 进入CBLAS文件夹,首先根据你自己的计算机平台,将目录下某个 Makefile.XXX复制为 Makefile.in , XXX表示计算机的平台,如果是Linux,那么就将Makefile.LINUX 复制为Makefile.in,然后执行以下命令

sudo cp ../BLAS/libblas.a testing  # 将上一步编译成功的 libblas.a复制到 CBLAS目录下的testing子目录  
make # 编译所有的目录  
sudo cp lib/cblas_LINUX.a /usr/local/lib/libcblas.a #将库文件复制到系统库目录下  

3)编译lapack以及lapacke,这一步比较麻烦,首先当然是进入lapack-3.2.1文件夹,然后根据平台的特点,将INSTALL目录下对应的make.inc.XXX复制一份到 lapack-3.2.1目录下,并命名为make.inc, 这里我复制的是INSTALL/make.inc.gfortran,因为我这里用的是gfortran编译器。

修改lapack-3.4.2/Makefile,因为lapack以来于blas库,所以需要做如下修改

#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib
make # 编译所有的lapack文件 (时间比较久)
sudo cp *.a /usr/local/lib # 将生成的所有库文件复制到系统库目录 

生成的库文件包括:liblapack.a, liblapacke.a, librefblas.a,libtmglib.a

至此cblas和lapack就成功安装到你的电脑上了。

参考

2 使用开源代码生成可执行二进制文件
比较简单,找到makefile,然后添加lapack的路径就好了。
在这里插入图片描述
在源文件src下make一下
最后运行试试看,提取的效果还算不错

./elsdc test_1.pgm

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值