驴车源码分析DonkeyCar源码阅读.1(简单安装+创建系统)
我昨天发了文章又一个人翻了很久的代码,感觉鸽了满可惜的,难以想象,上篇文章写了快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方法在这
参数
接着是使用这个方法
对上面两个摄像头的数据进行融合放到新的文件夹
不写了,晚安~
https://github.com/adafruit/Adafruit_CircuitPython_Logging/
https://github.com/autorope/donkeycar/blob/main/donkeycar/contrib/robohat/code.py
日志记录模块和自己设计的板子
https://github.com/robotics-masters/mm1-hat-schematics
https://www.hackster.io/wallarug/autonomous-cars-with-robo-hat-mm1-8d0e65
https://robohatmm1-docs.readthedocs.io/en/latest/hardware/pinout/
文档位置
https://github.com/robotics-masters/mm1-hat-bootloader
https://circuitpython.org/board/robohatmm1_m4/
https://github.com/adafruit/uf2-samdx1/
https://github.com/robotics-masters/mm1-hat-cpy-native
https://learn.adafruit.com/welcome-to-circuitpython/installing-mu-editor