无人驾驶学习笔记——摄像头雷达联合标定

最近在弄摄像头雷达的联合标定,一开始参考的是我师兄的博客,写的非常好:

无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/AdamShan/article/details/81670732

大概总结一下标定的流程和我踩过的坑吧。 

1.安装autoware

既然用的autoware那就先下载autoware咯。

这个过程我记得也挺痛苦的,途中报了不少错,最后好像是在gitee下的。另外我是用的虚拟机,跟双系统的安装还不太一样。而且很多东西虚拟机是不适用的,比如说cuda和eigen,不过这两个似乎在标定过程用不上。

不管怎样最后还是安好了。顺便说一下我的虚拟机是Ubuntu18.04的环境。

当时参考了很多博客,这里就不列举了。

(后来我师弟也要安装autoware,也是各种问题,气的血压上来砸桌子2333)

2.调试外接摄像头

这个环节也是巨多问题,什么timeout,process died…这两行字现在看着就想吐。

首先搜索ubuntu外接摄像头等关键字,相信不管怎样你最后都会回到一个叫:usb_cam-develop的包,我当时是在git下载的。(什么?你问我怎么知道?别问,问就是下了无数次…)

这里有几个细节:

1./dev/video*

*是几,自己查(插拔对比),我的是0: 

ls /dev/video*

哦,如果你发现你只能调出笔记本的内置摄像头,多半是没有在“虚拟机-可移动设备”里面开启外接摄像头。准确来说,是它没有接入虚拟机,而是接入的windows系统。 

2.Usb 3.0和接口问题

 我的虚拟机可以在usb兼容性里面设置成usb3.1,双系统的我目前没有找到在哪设置。

还有很迷惑的是我发现不管是笔记本还是台式,它的几个插口还真的不一样,比如我的笔记本插左边就可以,右边就不行…反正每个插口都试一下吧。

3.image尺寸

这个好像是我的个人问题,它的launch文件设置的图片原尺寸好像是640x480?忘记了。但是我的图像显示出来以后,是灰色的。当时困惑了好久,网上也没有找到解决办法。

最后无聊试着改成了1920x1080,然后就好了。。真的很无语。

如果你尝试了所有方法仍然无法正常开启(我师弟就这么惨2333至今无法正常打开),那就换亿台电脑吧

3.调试激光雷达

这部分还算顺利。

要注意的是一定要下好对应的驱动,我们的小车用的是Velodyne的雷达,当时下好了以后,打开rviz,发现:诶,好像有点不对劲,点云虽然能显示出来但是断断续续的。

后来才发现,我们是32线的但我用的16线的launch文件。。

4.录制标定包

当你确认设备没问题了以后,准备好标定板,就可以开始录制了。录制的流程其实不复杂:

  1. 启动Autoware,打开ROSBAG,Autoware下用来录包的一个工具
  2. 勾选usb_cam/image_raw和/velodny_points两个话题
  3. start启动
  4. 录制,保存(我保存的位置在autoware.ai/install/runtime_manager/share/runtime_manager/scripts/autowarexxxx.bag) 

我给虚拟机分了12g内存,8核处理器,然并卵,录制的过程还是很卡,没有一次是顺畅的录完的。 而且录个短短十几秒就1、2个G了。。我还一度因为录了太多导致我存储空间不足无法正常开机。。

5.使用Calibration Tool Kit标定

当你录好了包以后,就可以开始标定工作了。这也是我认为最最最痛苦的过程。而且我目前还卡在这里没有进展。

之前说一开始参考我师兄的博客,为什么说是“一开始”,因为看到Calibration Tool Kit这里,我在autoware界面怎么也找不到,后来查到是因为autoware版本高了以后就没有自带标定工具了…

于是又参考了另一篇博客,同样非常感谢:

【Autoware】激光雷达-摄像头联合标定1- Calibration Tool Kit

【Autoware】激光雷达-摄像头联合标定1- Calibration Tool Kit - 简书

该博客详细列出了下载标定包的流程和一些报错解决办法,我就不赘述了。

当我满心欢喜的下好了以后,打开Calibration Tool Kit,然后发现苦难生活才刚刚开始。(微笑脸)

最开始遇到的问题是:点击grab毫无反应。查到是因为识别不出棋盘格,我们拍的视频里面棋盘格明明那么清晰…Fine,于是又录了几个,还是没反应!

我开始怀疑人生了,抱着快要放弃的心态又录了一次,终于!终于截取到帧了!后来思考了一下,要么是光线太暗了要么是离的太远了。

很快又出现了另一个问题:截取到的帧数量太少。有时候一段视频只截取到了7、8帧,但是说是最好15帧,我上哪给你找15帧去!鼠标都点烂了!没办法,可能是我视频录的太短了(主要视频后半段一般都会卡死,激光雷达没有卡死一般都是摄像头卡死,但是只要有一个卡住了就不能用了),但是录太长了我又担心存储不够。目前就将就着标吧。

接着是困扰最久的问题:标定结果太差。我们前后试了差不多5段视频(还不包括废掉用不了的)吧,反正标定完以后,点击calibrate,点击project,左下角的棋盘格上理应出现红色的雷达点云分布。但是,我们要么就是压根啥也没有,要么就是没落在板子上。

最好的时候也是难得有几张是正常的,但剩下的几张又不行了。

我又认真看了看博客,注意到了一个细节:

标定板的中心位置选择一个圆形的区域,尽量保证向外侧的平面法向量垂直于标定板平面

又是一个小细节.jpg

 可是,哪个才是向外侧的平面法向量呢,我观察了一下他博客里的图:

然后立马自己试了一下,果然没那么顺利。

按照图示,我理解的垂直应该是这样的:

 可是这样的话,不就偏离标定板中心了吗?可如果我标定在中心位置的话,就会变成这样:

我不太明白这两根绿线到底应该怎样才是正确的角度。

希望有大佬能为我指点迷津,感谢。

(本博客持续更新进度)


2021.7.15更:

叒心血来潮标了一次,好不容易截取到了11帧,标定结果为:6帧无点云,5帧的点云长这样:

 或者这样: 

为什么点云分布这么奇怪?到底哪里出问题了。。

刚刚去油管找了一个视频看,人家就很随意的标了然后就可以了…我们标的这么细心都不行,无语。


2021.7.15二更:

和师兄讨论了一下,想到了一些问题和改进方案:

1.录制的包是否过大

师兄说十几秒的bag不应该有1、2个G,但查看了一下topic list,确实只录了2个主要的topic:

考虑了可能是1080p的画质过高,尝试调低画质为720p,但是一调低画面就会出现重影(鬼影重重):

不清楚是不是autoware的问题,下次不启动autoware直接用命令来录制试试吧。

2.相机内参未标定

 上文提到的博客有写:

source /home/autoware/Autoware/install/setup.bash
#使用autoware自带的相机内参标定工具cameracalibrator.py 
rosrun  autoware_camera_lidar_calibrator cameracalibrator.py --square 0.092 --size 6x8 image:=/usb_cam/image_raw camera:=/usb_cam

根据自己的标定板修改一下参数。 

3.环境光线太暗

太暗了可能识别不出棋盘格,导致截取的帧数不够


2021.7.28 更:

为啥拖更了这么久呢,因为好长一段时间没心情搞这个。那为什么昨天又开始搞了呢,因为……老板开始催了啊啊啊啊!

1.首先尝试标定摄像头内参

根据博客提到的方法,我们进行到了下面这一步:

图源: 单目摄像头的内外参标定_火种源码的博客-CSDN博客

 众所周知,如果你觉得一切顺利的时候那么很可能就会出问题。

在点击“calibrate”按钮之前你必须使右上角的四个参数都变成绿色才行。

通过晃动棋盘格使得右边的Calibrate按钮变绿。把棋盘格拿到相机前,看到棋盘格上有了mark并且右上方出现了四个滑动条类似的东西,分别表示X、Y、尺度与俯仰,根据提示哪一个自由度完成度不足来移动棋盘格。

下面两个比较容易,但是X和Y,不知道它是怎么判断的,反正我们两个人当时你换我,我换你,轮流拿着标定板晃来晃去,走来走去(真的很zz)。最后,我搞定了Y,师弟搞定了X。。可能这就是玄学吧。

不管怎样,我们最后的标定结果是这样的:

哦对了,别忘了把文件后缀.yaml改成.yml,待会load的时候会用到。

2.录制rosbag

嗯,老问题,光线不足+卡顿。

因为是阴天,所以光线更暗了,而且录的时候还是卡的不行。

我们也尝试单独通过rosbag record命令去录制,发现文件大小还是一样大,没啥区别。

3.grab

老样子,grab不到多少有用的帧,没事,都习惯了。

目前想到的解决办法:换个双系统的笔记本录bag试试,希望可以避免卡顿。

另外购买了我师兄的新博客:

自动驾驶系统进阶与项目实战(一)激光雷达-相机外参自动化标定算法及项目实战

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/AdamShan/article/details/105736726 


2021.7.30更:

今天再次尝试老方法,这次加上了内参.yml文件,出现了一个奇怪的问题:

原本在这个雷达正视图上是可以点击的(红色圆圈),但现在不行了

 但现在只能按1之后再点击,然后按2切换回来看:

我也不知道怎么形容,反正很怪就是了…

然后发现当我标定5张左右,project点云图的分布还可以,但当我增加标定数量到10张左右的时候,点云反而没有了。

我们决定下周在室外录制一次视频试试。


2021.8.5 更

更换了师兄的ThinkPad,录起来一点也不卡…好吧,果然是设备问题。

这次我们把车放到了室外,一口气录了三个40秒的bag。

然后一口气grab了20帧,尝试了两次以后,终于:

 OHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH!

虽然,还是有那么几张不太理想,但是我觉得能做到大部分合理就行了,我们已经尽力了。

这是我们的标定结果:

至此,痛苦的标定总算完了。

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
好的,关于 jQuery 的事件,我可以和你分享一些学习笔记。 1. 绑定事件 在 jQuery 中,我们可以通过以下方式来绑定事件: ``` $(selector).event(function(){ // 事件处理程序 }) ``` 其中,`selector` 表示要绑定事件的元素,`event` 表示要绑定的事件类型,比如 `click`、`mouseover` 等等。事件处理程序则是在事件触发时要执行的代码块。 2. 多个事件绑定 我们可以通过 `on()` 方法来同时绑定多个事件: ``` $(selector).on({ event1: function(){ // 事件处理程序1 }, event2: function(){ // 事件处理程序2 } }) ``` 这样,当 `event1` 或 `event2` 中任意一个事件触发时,对应的处理程序都会被执行。 3. 解除事件 如果需要解除某个元素的事件处理程序,可以使用 `off()` 方法: ``` $(selector).off(event); ``` 其中,`event` 表示要解除的事件类型。如果不指定事件类型,则会解除该元素上所有的事件处理程序。 4. 事件委托 在 jQuery 中,我们可以使用事件委托来提高性能。事件委托是指将事件绑定到父元素上,而不是绑定到子元素上,然后通过事件冒泡来判断是哪个子元素触发了该事件。这样,当子元素数量较多时,只需要绑定一次事件,就可以监听到所有子元素的事件。 ``` $(selector).on(event, childSelector, function(){ // 事件处理程序 }) ``` 其中,`selector` 表示父元素,`event` 表示要绑定的事件类型,`childSelector` 表示要委托的子元素的选择器,事件处理程序则是在子元素触发事件时要执行的代码块。 以上是 jQuery 中事件的一些基本操作,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值