完全模型组 EdgeBoard 端快速调车经验分享

2022-08-26

快速的调车造就快速的车车,故为了能够快速调试小车的图像,我们写了许多工具,在这里我将这些工具分享出来供车友们一起使用。

工具部分的代码已经在 Github 上开源:hilookas/Homo_Vision

关于协同搬运组的分享,请参见:协同搬运组上位机方案分享

了解我这次智能车之旅,请参见:十七届智能车——南京之旅

回放和录制

官方方案以及其他网上的方案,获取摄像头一般都是使用 opencv 提供的 capture 进行,但是这个 capture 存在 bug,很挑摄像头,并且 opencv 读取到的图片会自动转换成矩阵形式,直接存到硬盘中很慢。

Linux 提供的底层 API V4L2 ,从摄像头采集到的图片原始是经过 jpeg 压缩过的,将这个图片直接保存,绕过了使用 opencv 解压缩图片然后再压缩图片的过程,提升了效率。

故我们根据 V4L2 的例程,手撸了一个摄像头采集录制并且在之后回放的代码,这个程序效率很高,经过实测录像过程基本不增加小车的延迟,不影响小车的运行。

Python 与 C 的选择

这里也引出了这两种代码到底哪种更加适合小车程序的编写,我们的结论是,如果需要与底层的 API 交互,并且方便底层 bug 的调试,更加推荐使用 C 来编写代码。

此外内核日志也是一个很好的工具,通过 dmesg 命令打出内核提示的错误,可以更加准确的定位错误。比如 EdgeBoard USB 总线带宽不足的问题,在 ffmpeg 中会提示内存不够,而 dmesg 中才能准确提示错误。

VSCode Remote

VSCode 的远程功能可以让 EdgeBoard 像本机一样使用。强烈推荐试用一下,同时也可以在远端配置一下 ssh 密钥,这样每次 VSCode 重连的时候就可以免密码登录。

需要在本机上安装有 Git Bash,在 Git Bash 中先执行 ssh-keygen 生成密钥对,然后再 ssh-copy-id 将公钥拷贝到 EdgeBoard 上。

TightVNC

随时插着屏幕也是非常头疼的一件事情,于此我们推荐安装轻量化的 VNC 服务——tightvnc

结语

虽然因为线上成绩的锅,最后无缘国赛,但是调车本身,一年多的调试过程,给我们了很多工程上的宝贵经验。

另外附上一个我们小车省赛的录像,纪念一下,这个线下可能最快的车:

17届智能车完全模型省赛17s_哔哩哔哩_bilibili

加载中...

(。・∀・)ノ゙嗨,欢迎来到 lookas 的小站!

这里是 lookas 记录一些事情的地方,可能不时会有 lookas 的一些神奇的脑洞或是一些不靠谱的想法。

总之多来看看啦。