天洋行空


  • Home

  • About

  • Categories

  • Archives

编译pangolin中存在的问题及slam14讲中的其他库安装

Posted on 2022-09-24 | In Driving

最近在看14讲ch3,高博对于pangolin一句“自己编译”一笔带过,但是自己在安装时出现很多问题。

总之pangolin需下载的是0.5版本,可以参照十四讲各种软件安装 和另一个链接里的来安装,记住git clone的时候git clone --recursive GitHub - gaoxiang12/slambook2 可以先把3rdparty的目录都下下来,然后把Pangolin删掉选择0.5版的重新下载解压。(源码下载的 pangolin 版本为0.6,而调试 ORB-SLAM2 pangolin 版本要求为0.5)

其他问题:
slambook2/ch3/examples/plotTrajectory.cpp:10:28: error: ‘Isometry3d’ was not declared in this scope void DrawTrajectory(vector<Isometry3d, Eigen::aligned_allocator>);

解决办法
添加Eigen几何模块
#include <Eigen/Geometry>
2. plotTrajectory的txt路径需要选择绝对目录,因为cmake编译是在build里面
3. 其他就基本没有问题。之前自己有使用高博百度云那个包,也有使用pangolin直接git clone下载,编译器来Pangolin问题太多了,花了三天时间去解决各种bug,还以为正常,殊不知最开始版本那方向就弄错。找对0.5版本下载就很快解决,有点人生哲理那味了。可惜之前没人提示这个,后来在第三天傍晚才找到几个帖子,大意是是c++版本、后面的 ORB-SLAM2都有关,建议0.5版最合适。

python之parser.add_argument()用法——命令行选项、参数和子命令解析器

Posted on 2022-01-26 | In Driving

python之parser.add_argument()用法

矩阵的升维降维

Posted on 2022-01-14 | In Driving

引子:降维打击 科幻小说《三体》里一种很魔幻的攻击方法——降维打击,以其神奇的作用方式和巨大的威力刷新了我们的三观。

引子:降维打击

img

科幻小说《三体》里一种很魔幻的攻击方法——降维打击,以其神奇的作用方式和巨大的威力刷新了我们的三观。而在矩阵乘法计算中,这种降维打击时刻存在着。本节讲解一下矩阵乘法中造成的升维和降维。

一、矩阵的降维

还用游戏的例子,有 4 个角色,每个人都有不同的能力,将其用矩阵表示出来

img

现在我们要评估他们的两种能力:领兵打仗的能力和协同将领的能力

img

只要将两个矩阵相乘,就能根据 方法 X 对象 的法则评估出他们这两种能力值

img

img

img

我们生活中常见到的物体比如苹果,它是一个三维的物体,而当它被灯光照亮投影到地面上,它就形成了一个二维的影子。虽然通过影子我们也能看出来它大概的样子猜出它是一个苹果,但是它具体的颜色、红晕、斑纹的信息都消失了。

img

也可以用上一节中讲的空间变换来解释,将四维的对象在二维空间中展开了,得到的是二维空间中一个新的表现形式。

二、矩阵的升维

同样是这几个角色

img

我们多考察几种能力

img

得到的评估结果是

img

img

img

也可以用上一节中讲的空间变换来解释,将四维的对象在五维空间中展开了,并且通过添加其他信息扩展到了五维,得到的是五维空间中一个新的表现形式。

三、空间的坍塌(降维打击)

来看一个简单的矩阵乘法:

img

本来矩阵 A 可以张成一个二维空间, 但是经过左乘矩阵 B 之后,矩阵 C 却只能张成一个一维空间,也就是空间坍塌了!

原因是什么呢?是因为

img

它用来组成空间的两个基重叠了!导致二维空间坍塌成了一维空间。

四、矩阵的秩

我们来看一下上面的 A、B 两个矩阵,它们的秩有什么问题

img

img

因为 A 中的两个向量它们线性无关, 它们的秩 R(A)=2; B 中的两个向量线性相关,它们的秩 R(B)=1。

秩

矩阵的秩,就是矩阵的列向量(或行向量)所能张成的空间的最大维度

(1) 若 N 个 N 维列向量线性无关,则它们可以张成 N 维空间,它们的秩就是满秩。

举个例子: 组成矩阵 D 的 a、b、c 三个列向量线性无关,可以张成一个三维的空间。

img

(2)若向量之间线性相关 (则其中的一些向量可以用另一些向量表示出来,基有重叠),它们就无法张成一个满秩的空间。

举个例子: 组成矩阵 F 的 3 个列向量 a1、a2、a3 线性相关,虽然有 3 个向量,但是秩 r(A)=2,只能张成二维空间。

img

更进一步地,如果这些向量之间两两正交,则这些向量可以组成这个空间的一组基;如果再对这些基进行标准化,则这些基称为标准正交基。

五、行列式

行列式的本质意义是什么呢?

从空间的伸缩性应该更容易理解一点。

单位矩 E 的行列式等于 1, 它的行列式的几何意义可以看做是一个边长为 1 的超正方体的体积。

img

对单位矩阵 E 的各个向量进行伸缩、平移、旋转之后,组成了一个超平行多面体,

行列式的几何意义就是行列式中的各列向量(或行向量)所构成的超平行多面体的有向体积(小于 3 维时为有向面积 )。

img

从伸缩的角度来看,行列式可以看成是对单位矩阵的行列式各向量的伸缩,因此行列式的几何意义也可以看作

对单位矩阵的行列式体积的伸缩率。

那么,为什么不是满秩的矩阵它的行列式为 0 呢?

因为行列式就是体积的伸缩率,它遭到了降维打击,有的维度被踩扁了,在该方向上伸缩率变成了 0,对所有的伸缩率进行叉乘的时候,不管有多少个伸缩率,|a|·|b|·|c|· |d|·0· cosα·cosβ·cosγ = 0 一定成立。

你都把它踩扁了还指望它有能有体积吗?

本文链接:https://blog.csdn.net/gongxing12/article/details/91189665

高德地图算法工程师任乾的报告分享

Posted on 2021-03-19 | In Driving

高德地图算法工程师任乾的报告分享

今天在深蓝学院组织的求职群听了高德地图算法工程师任乾的报告分享,简要说了下现在自动驾驶的一些情况,以及说了较多求职上的注意点,稍微总结了下

关于自动驾驶方面

  1. 趋势:自动驾驶(AD)寒冬以后真实的复苏,已经/即将实现盈利。背后有支撑,不是泡沫化

    1. 物流方面:高速卡车,低速物流;高速卡车落地成熟一些公司如图森、极智嘉、主线?、四年? 这种与robotaxi落地更容易
    2. 矿山:大平地,拿个GPS定位就好了
    3. 城市清扫(智行者?)、城市公交(轻舟智航)
    4. 新势力造车,达到L2、L3,小鹏、蔚来、特斯拉
  2. 高精度地图:它是AD里可以单独去做,独立的,商业化的特殊一个环节,技术需要长期积累,投入大,高德四维百度三分天下

  3. 机器人:扫地机、服务机器人、agv,成熟

    1. 扫地机器人非常成熟

    2. 服务机器人场景固定,餐厅屋顶有奇怪的灯泡形状,类似形成二维码,辅助定位。虽然看着low但是商业上低成本可靠

    3. agv也在常态化运营,但是离低成本还有距离,思路上把激光改成视觉,已经落地但是有更高的要求

关于求职

  1. 招聘现状:难找人,企业需求和技术人员技术不匹配:做个demo还不行,现在还要看能落地。新入局的人里水平中等和差的,供过于求,很难找到工作,进入公司后没有组长带

  2. 企业需要什么人才:成过事(成功是成功之母),或具备成事素质,整个求职中围绕这个展现自己(考察你的思考深不深入,思路广不广,代码能力,实践能力强不强)

    1. 企业做的是工程任务,不是照着算法原理实现就行,是要落地,考虑很多琐碎的东西。一个人理论强实践弱,另一个理论弱实践强,公司一定会要后者
    2. 企业需要成过事(成功是成功之母),或具备成事素质,具体来说
      1. 相比于项目多,更看重项目精(一件事做到90分,胜于三件事做到60分)
      2. 相比于理论基础,更看重工程实践(落实方案、提高性能)
      3. 相比于知识多少,更看重思维能力(主动探索、独立思考),看重你成事的能力
  3. 求职注意事项

    1. 简历重点能成事,不是干的事多。写明核心、你在里面的作用。别写少参与的事情、无关、未使用的方法。写了答不出很扣分

    2. 面试时回答一个技术方案怎么做之后,扩展下,比如你这么做的理由、不选择其他方案的理由、技术细节上的一些思考。围绕能成事展示自己

    3. 代码考察刷题就是了,写不出给思路,别放弃,展现自己能思考,喜欢解决问题

    4. 反过来你也是在考察面试官、看出背后的团队。不卑不亢。

      总结如下吧:

三一重工SLAM算法工程师崔华坤老师报告分享

Posted on 2021-03-17 | In Driving

今天下午在微信群听了个三一重工工程师的汇报,老师做slam算法,读书期间到今天陆续做过3D、AR、无人机、机器人等行业,目前研究方向为AGV、无人叉车等工业机器人的视觉和激光SLAM定位。

当时第一感觉是这个老师换的方向也太多了,能做精吗?听完后,才意识到现在科技行业的变化之快,就像老师最开始做的3D裸眼(在这之前这个老师待在央企,意识到钢铁产能过剩去商业界做技术了),还是我高中时候特别热门(2012左右的东西),AR/VR也是在我读研后实验室同门做了一阵……科技热门名词接连不断地出现,有些持续地被做深、落地,有些可能受限于底层的网络支持,发展受阻,行且艰难。一批批的年轻人扑在这上面,热门词可以换,但是技术人的生活还得过,唯有顺应趋势,保持学习,提高自己的核心竞争力。
第二就是目前老师所在的工业物流、AGV、无人叉车这些,还是属于自动驾驶好落地的方向。包括阿里达摩院也是着重把自动驾驶放到物流场景去落地。
把这位老师的汇报和后面的Q&A做了个总结,供分享,(没有听太清楚的用“(?)”标识,注意核实).

  1. 科技行业变化快,要保持对行业敏感度(参加展会、多认识行内人), 快速学习,和上学不同没有那么多时间
  2. 工作意义三个阶段。养家糊口什么挣钱做什么——兴趣——事业,有兴趣才能支持你快速成长、抵消疲劳感


3. 机器人、slam行业

a) slam没有很成熟,扫地机器人2D比较成熟
b) 仓储机器人 AGV 叉车,2D激光为主,比扫地机器人进度要求高、建图速度要快
c) 低速小车,物流小车,室内 泊车(视觉为主,激光成本高)
d) 自动驾驶 3D激光为主 + 视觉
e) 高进地图 激光为主,众包方案

  1. AR VR 无人机:视觉方案为主
  2. 除了以上,还有上下游的产业
  3. 面试注重:理论基础,C++,实际工程经验,以前做的项目细节。评分:

a) Slam的理论功底要扎实,比如说。数字图像处理的基础,概率论啊矩阵论或者最小二乘啊这些基础理论
b) 工程经验
c) 是不是掌握了大部分的开源的视觉Slam的框架或者说激光slam的框架,然后并且能够在实际项目中运行过;
d) 落地经验,年限 具体水平
e) 接触过DSP、效率优化
f) 论文,对深度学习的了解;竞赛

  1. 问题

a) 怎么学习slam、深度:跟着项目学习。在学校找个机器人,把做的算法在上面去实现,即使很简单;把别人算法去实现(很加分)。问题为导引去解决,如初始化;上来就整个学习很容易失去兴趣
b) 对求职者在意什么:能力;忌讳频繁换工作;学历算法岗985211硕士;喜欢详细的简历,看到细节
c) 刷题? 刷题好习惯,大部分题目工作中用不上,但是面试要求
d) 视觉slam要求?和激光slam要求一样。对开源框架了解,如dso,mskf(?)等,对他们论文、代码要熟悉,选一个落地,编程基础C++要扎实
e) 想办法先进到自动驾驶大行业,哪怕去里面先做开发、控制,先进去再慢慢转
f) 因为没有相关工作经验。第一,简历上能写的相关内容不多。第二,空口无凭,自学的结果未必能令人信服。所以是否有较大难度?基本理论,代码ok即可,
g) AR,无人驾驶,无人配送车,这几个行业会不会想裸眼3D那样慢慢没落,或者哪一个行业最有可能没落?预测太难,BAT之前也搞过很多。可以看投资人对什么感兴趣
h) 三一集团哪?最大的部分在北京,各地分布
i) 职业发展:顺应大势,在里面坚持自己喜欢的。不要随波逐流,因为变化很快。35岁的大部分企业不愿意招,很现实。提高核心竞争力,可替换性高的话后面压力越来越大(残忍的现实)
j) 开源框架:公司也不会重新造轮子,基于框架写,后面改
k) 路径规划:无人机。仓储机器人的路径规划还是用着传统的方法,学习的方法计算代价高,传统的方法能用,对于企业来说已经足够了
l) AGV、扫地机器人谁前景大:后者技术已经很成熟,自动驾驶落地难。分析完后觉得工业领域的落地可能会更成熟一些,因为在工业领域,比如说像AGV,他对于Slam的需求,或无人叉车,这种slam需求是个刚需,那只要是技术能实现,那么他就会用产品就会卖出去。SLAM应该会先在工业领域或者说那种特定的场景下先落地,先有这么几个突破点,然后慢慢的往这种普世的,比如说像自动驾驶啊,慢慢的再去扩展。
m) 研究生论文一般有什么优势:公司里两类,一个偏算法岗,一个是偏开发岗,然后公司里面其实偏算法岗的人员很少(CTO、博士来),大部分开发岗,编程能力,工程能力要求更大
n) 读博?slam企业在做落地,难点不在于科研水平,在于落地。博士在公司会受重视,自己选择吧
o) 通讯框架:ROS先跑,大概率没啥问题。要到ARM(?)系统上跑,ros不合适,有一些开源框架
p) 技术竞争方向:一般就是往上转管理岗,也是做技术的管理
q) 项目都是激光slam方向的,但也有视觉slam的基础,读过几个开源代码。想找视觉slam的工作或者视觉融合激光的有什么建议吗: 可以考虑AR、无人机、扫地机器人、自主泊车、仓储机器人、低速小车这几个行业
r) 三一slam的竞争企业:旷世、极智嘉?、海康。做矿山、港口的公司也有

在vmware跑Apollo6.0

Posted on 2021-03-14 | In Driving

在vmware上跑apollo 6.0

主要是参考官网的教程:, 但是我自己目前是在vmware上跑而且GPU不能直连,所以安装教程里的GPU部分都跳过

1. 先装好Ubuntu 18.04和Docker

虚拟机不支持GPU那就先别装nvidia相关的(否则出错,还需要卸载nvdia相关的)
https://github.com/ApolloAuto/apollo/blob/master/docs/specs/prerequisite_software_installation_guide.md

Ubuntu链接 https://releases.ubuntu.com/18.04.5/

1
2
sudo apt-get update
sudo apt-get upgrade

使用bash来装 docker

There is also a dedicated bash script Apollo provides to ease Docker installation, which works both for X86_64 and AArch64 platforms.

1
https://github.com/ApolloAuto/apollo/blob/master/docker/setup_host/install_docker.sh

运行保存的sh文件

1
2
chmod a+x install_docker.sh #给install_docker.sh可执行权限
./install_docker.sh
1
sudo systemctl restart docker

2. 下载Apollo 源

1
2
3
git clone https://github.com/ApolloAuto/apollo.git
cd apollo
git checkout master

3. 启动阿波罗开发Docker容器

1
bash docker/scripts/dev_start.sh

(有些人可能前面无意中安装了NVIDIA相关的报错:[ERROR] Failed to start docker container “apollo_dev” based on image: apolloauto/apollo:dev-x86_64-20180906_2002。Error: Could not load UVM kernel module. Is nvidia-modprobe installed?,可以采用sudo apt purge nvidia* 卸载所有NVIDIA。然后重新bash docker/scripts/dev_start.sh)

1
2
bash docker/scripts/dev_into.sh
./apollo.sh build

4. 构建Apollo

1
2
./apollo.sh clean
./apollo.sh build_opt

Note:
Please run ./apollo.sh build_fe before ./apollo.sh build_opt if you made any modifications to the Dreamview frontend.

5. 运行

1
./scripts/bootstrap.sh

打开浏览器 输入 http://localhost:8888
选择驾驶模式和地图:From the dropdown box of Mode Setup, select “Mkz Standard Debug” mode. From the dropdown box of Map, select “Sunnyvale with Two Offices”.

重放demo记录:

1
2
3
cd docs/demo_guide/
python3 record_helper.py demo_3.5.record
cyber_recorder play -f demo_3.5.record -l

(这个可能遇到cyber_record
命令无法找到, 需要到apollo/cyber目录下运行 . setup.bash, 然后>>echo $PATH
路径应包含/ apollo / bazel-bin / cyber / tools / cyber_recorder / 再回到docs/demo_guide/下去)
就可以看到运行的了:

结束deamview

1
2
cd ../..
root@in-dev-docker:/apollo# ./scripts/bootstrap.sh stop

退出docker Ctrl-D

要重新进的话

1
2
3
4
5
cd apollo
bash docker/scripts/dev_start.sh
bash docker/scripts/dev_into.sh
运行: ./scripts/bootstrap.sh
......

Git学习

Posted on 2021-01-13 | In Git

这两个视频和笔记可以初步学习Git

https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ

https://www.bilibili.com/video/BV1FE411P7B3?p=14

一些重点笔记截图

image-20210114145445085

image-20210114163626096

image-20210114165739470

image-20210114165706238

image-20210114165914420

git clone [url] # https://gitee.com/kuangstudy/openclass.git

image-20210114171846545

1
2
3
4
5
6
7
8
#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

# git add . 添加所有文件到暂存区
# git commit -m "消息内容" 提交暂存区中的内容到本地仓库 -m 提交信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r

# 新建一个分支,但依然停留在当前分支
git branch [branch-name]

# (新建)一个分支,并切换到该分支
git checkout -b [branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

Markov chain

Posted on 2020-12-09 | In Driving

0001.jpg

0002.jpg

0003.jpg

0004.jpg

0005.jpg

0006.jpg

A program to check if a binary tree is BST or not

Posted on 2020-10-24 | In Data Structures and Algorithms

https://www.geeksforgeeks.org/a-program-to-check-if-a-binary-tree-is-bst-or-not/

换电脑后/系统后 同步github原有项目

Posted on 2020-10-04 | In Git

最近写博客发现markdown图片是一个问题。

之前图片都是保存在微博、空间、牛客等地,再把图片地址拷贝过来到markdown,后来发现没过多久在github上就显示不了。类似如下:

存在qq空间的图片无法显示

最近尝试了几个在线的markdown编辑平台:

  • 简书:网站的的文章杂七杂八,但是markdown支持直接粘贴图片,且自动上传至简书服务器产生图片链接。体验不错,后面打算国内版文章可以在此发布。

  • 有道,普通版只支持网络图片链接

  • 知乎,不支持在线编辑markdown,只支持md文件导入。简书的图片链接可以显示。打算同时在此发布文章。

  • 语雀,可以导入,没发现怎么导出markdown

后面了解到针对图片的问题,更多的人如果想将文章发布在自己的博客,选择是建一个图床,例如七牛云、腾讯云、阿里云、Github……

前三者都是收费,github虽然免费,但是我按照他人提供的方法(https://zhuanlan.zhihu.com/p/168729465)尝试了一下,在Typora中图片没有上传成功。

针对自己的github.io博客,打算采用Typora+PicGo+SM.MS图床加以实现,操作方法类似https://zhuanlan.zhihu.com/p/137310314,在Typora中选择上传服务时可能没有PicGo-Core可以直接选择PicGo.app之后在PicGo.app的“图床设置”里面选择SM.MS图床,并填入申请的token即可。

12…5
天洋行空

天洋行空

戒骄戒躁

44 posts
7 categories
3 tags
GitHub E-Mail
0%
© 2022 天洋行空
Powered by Hexo
|
Theme — NexT.Pisces v5.1.4