前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DonkeyCar源码分析.2(官方硬件+相机处理)

DonkeyCar源码分析.2(官方硬件+相机处理)

作者头像
云深无际
发布2022-06-15 15:50:56
4620
发布2022-06-15 15:50:56
举报
文章被收录于专栏:云深之无迹

我昨天发了文章又一个人翻了很久的代码,感觉鸽了满可惜的,难以想象,上篇文章写了快4k+的字了,不知道这篇可以写多少。

继续说,自己生成的项目,里面有个文件是myconfig:

可以控制的东西都在这里,但是都是被注释了,关闭注释就打开了。

一点翻译

事实上控制的时候是使用这个manage的文件,可以通过改变参数来设置东西。

配置文件在这里读取

里面讲了一个板子,我没有找到什么样的

驱动文件在此

害,这里比较遗憾,我没有实物截图,但是拿到了原理图也可以解馋~

这个片子是微星的

数据手册这么多,我一点也不失望

我本来是想简单的放个参数的表,结果找不到,放个框图吧,不过是ARM的片子,也好上手。对于项目里面用的这个固件,就不知道是不是开放的了。

NREST,看电路图也是低电位置位

接着使用了2组SPI,给Neopixel输入的正极是给5V的电压,有SS34防止电流灌。

这里是一组IIC,一个电压测量,电源正极,模拟4组,舵机4个,FLASH一个(SPI接口)

下面是舵机x4,IIC(第三组了),USB(D+,D-),电源使能码?

往远看,连到PI的是串口,也有IIC的接口

winbond 64MB Flash SPI接口

MPU是九轴的,接着使用了TI的输出电流/功率监控器,有点意外

上面的图有点没写清楚

这个是IIC的电流器

社区负责人给了链接,可以参考,感谢

这里就是原理图的位置,PWR,ESC,BAT在一起(BAT是PH2.0接口)

可以看到IIC是做识别使用,因为板子可以放到Jetson Nano使用

完整的控制板,想必这就是项目来钱的路子之一

输入的电压很宽,ESC这块,只是给了电源,下面原来是备用电源~

这里是识别使用的IIC口

可以加GPS,IIC

方便后期开发,引出一路SPI

这是灯和树莓派通讯的位置

值得一提的是,这个板子的电源设计的很猛:

先看这个,充电的时候不用microUSB,只是通讯使用

电源通断这块使用了TI的NOR门,可以实现只要供电或者按下电源就开机的作用。

为MCU,senor供电是使用了LDO,电路没有上面好说的,都是推荐的设计

当然你的电池也可以使用板子充电,设计有充电电路

接着就是和树莓派的IO连接部分,另外加了一个32KB IIC驱动的EEPROM

这是想表达一种拓扑的关系

连着一起

这些是舵机启动,PWN输出,上面是一个串口,有数据流控

舵机连接

因为写的有点赶,很多细节没有写,有机会写补篇。

事实上,这个板子给了bin文件,我们自己也可以打板制作~使用UF2来更新固件。

看文档的意思是,这个不是C固件,而是mpy的固件.

给了自己构建时的文件,其实到这里为止,自己做一个也不是不行,用别的板子。

注意!它不是microPython,而是CircuitPython。

为了提供更高程度的支持,Adafruit 开发了自己的 MicroPython 版本,名称为 CircuitPython,旨在满足该公司的一些廉价微控制器开发板的特定需求。该公司还将来自庞大 Arduino 集合的很多外设库转换为 CircuitPython 库,为 CircuitPython 提供大量的外设支持库,而且还在不断增加。

不过也差不多,有机会分析。

这里回到正轨,车子需要使用摄像头感知外界,在myconfig里面有着丰富的设置:

种类丰富,我看见D435了,那我的D430是不是可以用?Intel RealSense D430 详解

因为相机的类型是确定,所以这里ok,这个cfg其实是self

这里,记得python里面的self吗?这里改了名字

首先是pygame或是USB相机

看相机的类,很多

初始化的工作里面就是写了pygame的调用,使用了防御性的编程

如果没有什么错误,那就继续,有错就使用log报错。

如果没有错那就就是打印“打开”,接着是吧w和h作为元组打包成分辨率

因为硬件东西比较麻烦,所以都要使用try写,初始化,相机的初始化,把检测到的相机列表给l,这里我就不继续深入了,现在有点看不清电脑了。。。

如果数量为0,引发一个错误,相机未就绪

日志写,有一个相机,只不过坏的,如果是相机的索引小于0或是相机的索引大于1,也引发错误,这里的意思是,你的配置文件里面可以多配置了相机的来源。

终于可以使用了,把相机的索引(其实是句柄给函数),还有分辨率,RGB

函数原型

接着 打印,打开的是相机第几个。但是你也不太确定帧是不是可以稳定的出流,所以设置一个时间,5s。循环判断,frame是不是为空以及帧的时间是不是大于5s,是那就警告,但是运行run,0.2延迟,为了缓解管道压力。

导入库,调用这个query的函数,如果对,那就读取一帧,在保证帧可用耳朵情况下,调用函数对数据resize,下一个看不懂了,应该是转换了色彩空间,最后传出来。

这个是当前时间-上一次的,大于下面的值,就正确,应该也是怕读取不到帧的函数。

看第一个,判断没错

双目相机嘛~

下面这个就是普通的opencv了,没有意思

然后上面都没有读出来就报错

两个相机的数据分别给V

add方法在这

参数

接着是使用这个方法

对上面两个摄像头的数据进行融合放到新的文件夹

不写了,晚安~

代码语言:javascript
复制
https://github.com/adafruit/Adafruit_CircuitPython_Logging/
代码语言:javascript
复制
https://github.com/autorope/donkeycar/blob/main/donkeycar/contrib/robohat/code.py

日志记录模块和自己设计的板子

代码语言:javascript
复制
https://github.com/robotics-masters/mm1-hat-schematics
代码语言:javascript
复制
https://www.hackster.io/wallarug/autonomous-cars-with-robo-hat-mm1-8d0e65
代码语言:javascript
复制
https://robohatmm1-docs.readthedocs.io/en/latest/hardware/pinout/

文档位置

代码语言:javascript
复制
https://github.com/robotics-masters/mm1-hat-bootloader
代码语言:javascript
复制
https://circuitpython.org/board/robohatmm1_m4/
代码语言:javascript
复制
https://github.com/adafruit/uf2-samdx1/
代码语言:javascript
复制
https://github.com/robotics-masters/mm1-hat-cpy-native
代码语言:javascript
复制
https://learn.adafruit.com/welcome-to-circuitpython/installing-mu-editor
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档