还在质疑“球形六足机器人”这个项目吗?这里有答案
[复制链接]
如果问我SensorTile这些作品中哪个最好 我会选”球形六足机器人” 因为这个作品非常复杂的工程 感觉做出这个项目可不是一两个月的事 能学习到这个作品的设计资料也是一件非常幸福的事 不过一个作品的好坏肯定不能只看表面 今天我准备分析分析球形六足机器人这个项目 了解一下它背后的原理 球形六足机器人的作品提交于2017年4月14日 当时作者因为某些原因并没有上传太多作品的设计细节 也有人回贴提出质疑 怀疑作品的作品好像和SensorTile没有什么太大关系 由于当时开放的资料太少,没法深入分析 直到昨天,无意间我打开这个作品的页面 看到作者上传了代码也在百度云盘中分享了整个项目的设计资料 连结构设计文件都有,真是太给力了 感谢这个网友的分享精神 这么好的项目,结构、运动算法这些都是非常宝贵的资料 打开贴子里可以看到源码文件是2017年4月24日上传的 下载了论坛的RAR和百度云盘的RAR后正式开始分析作者的大作 先从SensorTile入手,看看作者是如何使用传感器数据的 打开论坛的rar文件可以看到4个文件夹 分析一下惯性导航测试这个代码 看看SensorTile是怎么把数据发送给主控的 作者定义了一个SendOverUART = 1变量 通过uart将数据以字符串的形式发送出去 格式是 ACC_X: xxx, ACC_Y:xxx, ACC_Z: xxx GYR_X: xxx, GYR_Y:xxx, GYR_Z: xxx MAG_X: xxx MAG_Y: xxx,MAG_Z: xxx 作者是对Datalog例程作了简单修改 直接把9轴数据通过串口发送出去 再看看RAR里的舵机驱动文件夹 没看到有处理SensorTile数据的代码 不过在USER下发现了MPU6050文件夹 理论上MPU6050和SensorTile包含了相同的功能,不应该同时存在 为什么会这样呢? 打开main.c文件看到MPU6050在初始化里是被注释掉的 也许是作者后来使用了SensorTile方案才放弃MPU6050的吧 再来看看RAR的运动程序文件夹 USER下好像还有MPU6050 main.c文件的最后修改时间是2017年4月16日21点24分 说明这个项目是在代码上传前被修改的,应该可以肯定是最终代码 看看它的内容 初始化里使用了mpu6050 为什么会这样呢? 看看mpu6050.c里的代码 原来只是通过串口收数据,因为SensorTile也是通过串口把传感器发送出来 所以可能是作者只是没有把文件名字改过来的原因吧 串口里收到数据判断数据头为0x55,然后再读11个字节的数据到USART_ReceiveData数组 感觉接收格式和SensoTile发送来的不匹配 为什么会这样呢? 再看看USART_ReceiveData数据是怎么处理的 在main.c文件里有一个处理传感器数据的函数Receive_IMUAngle 里边判断第2个字节的类型,0x51是加速度,0x52是角速度,0x53是角度数据 从这个数据看它的串口通信协议应该是下边这样 这里没有处理磁场数据 而且和SensorTile发来的数据不匹配 为什么会这样呢? 我猜作者在这个程序里还是使用了mpu6050传感器 可是为什么不画到PCB上直接用I2C通信呢? 猜测是使用了现成的模块 淘宝搜了一下MPU6050串口模块还真有 其中有一个好像在哪里见过 看看作者的开发文档 一个字,非常专业 图片中右边的控制板有个小狮子图标 在网上找了一下没找到,可能是作者自己做的LOGO吧 下边有一个贴装的模块和淘宝上的对比一下,看起来是不是很像? 左边是作者提供文档里的PCB实物图,中间是作者在 “球形六足机器人宠物——SensorTile模块使用再说明”里贴出的PCB 3D图 右边是淘宝里的模块实物图 可以看到作者在“球形六足机器人宠物——SensorTile模块使用再说明”贴子里提供的图片已经去掉MPU6050模块了 为什么会这样呢? 打开作者在百度云里的源文件,看到结构文件的日期都在2017年以前 软件设计里的文件夹修改时间都是2016年8月 这个时间是SensorTile活动开始前的时间 为什么会这样呢? 这个百度云盘RAR没有在论坛里上传的RAR文件中的惯性导航测试文件夹 打开论坛和百度云盘两个RAR里的运动程序中的main.c文件 目测两个文件的内容基本一样 为什么会这样呢? 经过对比分析后我觉得这个项目里最值得一看的是SERVO文件夹的内容 等有时间再继续学习
|