米兔积木机器人 +关注 已有0人关注 +发表新主题
西红柿的号

骨灰级手机控

  1. 2220 积分
  2. 495 经验
  3. 860 贡献值

Ta的主页 发消息
签到
连续0天
0人
签到看排名
扫码下载App
一键签到 升级加速
回复

一辆无人驾驶的小车【图像识别+开发板】【更新中】

发表在 创意搭建 08-24 11:19:08  来自PC 复制链接 手机看帖扫一扫!手机看帖更爽 19 2435

视频如果显示不出来,请移步:http://v.youku.com/v_show/id_XMjk4Nzc2Mjk5Ng==.html

特别感谢DIY期间,闫工、田工、魏工的帮助。

物料:米兔机器人一套,米兔开发板、一台Android手机(用来图像识别的,不能是运行米兔客户端的那台)、蓝牙模块、Arduino(串口通信已调通,不再需要)、鱼眼镜头(可选)

电脑上用到的软件:米兔开发板用到的所有软件、Android Studio、Photo Shop

手机上用到的软件:米兔机器人客户端:“积木机器人”


大概通信流程:

1.手机使用Vuforia(一个AR SDK,可以通过手机摄像头识别一幅图、一个物体的位置)对米兔箱子(target)所在位置进行识别

2.手机把箱子是偏左还是偏右,距离多远通过蓝牙发出去

3.arduino对蓝牙发来的信号进行处理,转发给开发板(这步已经被优化。可以去掉arduino,让开发板直接接收蓝牙串口数据)

4.开发板读取上一步的数据,将数据变为3个变量(因开发板要求,必须是3个变量:在这里前两个有效,第三个不会使用),发送给米兔机器人主控

5.主控根据变量执行操作(转向、前进、停止)。

首先,搭建小车

小车前轮,实现由一个电机控制的转向结构。:

后侧是一个控制后轮前进后退的结构

小车编程模式下,程序如图:

程序开始执行后,通过声音提醒程序已经正常执行。

初始化一个变量,叫“转弯”,用来记录小车当前前轮的方向。

开发板会传来3个变量,我们用到前两个:

    变量A代表小车应该向左走还是向右走,0代表直行,1和2分别代表左右

    变量B代表小车应该前进还是停止

循环获取开发板的变量ABC,然后检查变量A是否跟当前小车方向一致。如果一致,则不作处理。不一致,则操纵电机B,转向。

然后检查是否需要继续前进,如果需要,则继续前进;不需要,则立即停止。

转向的蝴蝶结是没有扣上的,因为要防止这条命令在没有完成的时候,被接下来的命令覆盖——我们必须要保证转向确实转了20度,如果这条命令不能全部完成,就无法掌控小车真正的方向了(假如旋转了10度的时候,新命令是反向20度,可覆盖的话最后的结果是-10度,但我们可能认为这时候是0度,因此出现偏差)。(计算机专业术语来说,这条命令是阻塞式的)

控制前进的电机A,蝴蝶结是扣上的,因为我们想要的效果是,该走的时候走,该停的时候停。所以这条命令必须是可以被下一次循环的命令覆盖的。即当下一次循环的时候,如果需要小车停止,即使没到1秒,也可以覆盖命令,立即停止。


了解开发板

官方这张图,清晰地展示了开发板的结构,玩过arduino的童鞋应该能明白其中的含义。没玩过也不要紧,简单说就是有很多端口,可以用来获取/发送高电压、低电压来传输信号(例如点亮LED灯等操作)。也可以通过串口与其他设备进行通信(如PM2.5检测仪)。其中还有4个口可以作为模拟输入使用(例如使用光敏电阻测量亮度)。Type-c口主要用来烧录程序或与主控进行通信。其中与主控通信,每次通信可以发送3个字节数据,在主控上通过3个变量的形式来获取。

特别注意的是,开发板与主控的数据同步方式,这里指的是由开发板向主控发送数据的过程。主控有一个3字节的缓冲区。

开发板每次发送的数据都会存储在这3字节的缓冲区中。

主控每500ms读取一次缓冲区的数据,并且读取后,会将缓冲区清零(因此需要尽量勤地传送数据给主控)。

开发板发送数据,会将缓冲区数据覆盖。

开发板程序

内容就是把串口来的数据,转发给主控

#include "Sensor-DEV-V1.0.0.h"

uint8_t ccOrder[3];

uint8_t Len = 0;

uint8_t  RxBuffer[255];

int main(void) {

InterfaceCC();

Interface_Init("INB", "UART", 1, 9600);

while (1) {

Len = ReadData("INR", "UART", 1, RxBuffer);

if (Len) {

ccOrder[0] = RxBuffer[0];

ccOrder[1] = RxBuffer[1];

Len = 0;

SendDateToCC(ccOrder);

}

}

}

开发板接线

因为我所使用的Microduino 蓝牙模块的TX下拉不足,所以在开发版RX端加一个下拉电阻(如果串口通信的时候,开发板RX灯不闪烁,原因就是发送方TX下拉不足),套装里的胖电阻,就是180欧的。


手机端软件

首先从网上下载Android Studio和安卓开发环境。配置好开发环境后:

1.到Vuforia官网注册账号

2.到https://developer.vuforia.com/downloads/sdk 下载Android的SDK

3.到https://developer.vuforia.com/downloads/samples 下载sample,下载Core Features即可

4.解压sdk,并把sample解压到sdk的samples文件夹里,即在samples文件夹里有个文件夹叫“VuforiaSamples-6-2-10”(跟我版本号不一致没关系)

5.在Android Studio中导入sample,并运行。使用Image Target,从摄像头中观察sample中的media文件夹中的木头图片,应该可以看见一个ar的茶壶。

6.在https://developer.vuforia.com/target-manager 中添加要让小车识别的目标。

7.修改代码,让小车可以自动走向目标

代码修改过程,待更新……

扫描二维码,手机查看本帖
发表
最新评论 | 正序排列
只看楼主|楼层直达:
  • zhouyongjerry   发烧级手机控 发表于 12-06 09:44:35 ·来自移动端 只看该作者 19#

    高手啊,学习了,开发板已入手,不知道开发板能不能连接其他传感器

    回复 举报

  • 194433248   骨灰级手机控 发表于 10-30 06:27:13 ·来自移动端 只看该作者 18#

    66666

    回复 举报

  • a820tmi   发烧级手机控 发表于 09-07 18:54:41 ·来自PC 只看该作者 17#
    好厉害,值得学习

    回复 举报

  • ~懒得出奇~   发烧级手机控 发表于 09-07 14:29:38 ·来自 只看该作者 16#

    厉害了word哥

    回复 举报

  • zhouqbb   发烧级手机控 发表于 08-31 10:58:15 ·来自PC 只看该作者 15#
    西红柿的号 发表于 2017-08-30 14:16:37

    淘宝有个mitubuilder爱好者联盟店

    谢谢 

    回复 举报

  • 西红柿的号   骨灰级手机控 发表于 08-30 14:16:37 ·来自PC 只看该作者 14#
    zhouqbb 发表于 2017-08-30 09:59:52

    请教下楼主 米兔开发板的资料哪里有,另外开发板在哪里可以买到

    淘宝有个mitubuilder爱好者联盟店

    回复 举报

  • zhouqbb   发烧级手机控 发表于 08-30 09:59:52 ·来自PC 只看该作者 13#
    请教下楼主 米兔开发板的资料哪里有,另外开发板在哪里可以买到

    回复 举报

  • 西红柿的号   骨灰级手机控 发表于 08-28 09:37:02 ·来自PC 只看该作者 12#
    Mi_169643513 发表于 2017-08-27 17:53:43

    是不是直接买开发板回来就可以实现

    不是买回来就可以实现。是需要自己再写代码去实现各种功能的。

    回复 举报

  • 西红柿的号   骨灰级手机控 发表于 08-28 09:36:11 ·来自PC 只看该作者 11#
    Mi_169643513 发表于 2017-08-27 16:17:11

    请问米兔开发板传感器和Arduino有什么不同,能否用这个替代Arduino,他在这里起到什么作用!

    玩起来跟arduino是差不多的,但是多出来了跟主控通信的功能,编程环境和函数,不与arduino通用。在这个DIY里,arduino不是必需的,后续更新是去掉arduino的状态。

    回复 举报

  • Mi_169643513   骨灰级手机控 发表于 08-27 17:53:43 ·来自小米Note 只看该作者 10#

    是不是直接买开发板回来就可以实现

    回复 举报

  • Mi_169643513   骨灰级手机控 发表于 08-27 16:19:11 ·来自小米Note 只看该作者 9#

    Arduino开发板和米兔开发板有什么不同,Arduino在这里起什么作用还有必要需要吗

    回复 举报

  • Mi_169643513   骨灰级手机控 发表于 08-27 16:17:11 ·来自小米Note 只看该作者 8#

    请问米兔开发板传感器和Arduino有什么不同,能否用这个替代Arduino,他在这里起到什么作用!

    回复 举报

  • o小帅o   神仙级手机控 发表于 08-26 01:15:22 ·来自 只看该作者 7#

    厉害了,学习下

    回复 举报

  • 在彼空谷   骨灰级手机控 发表于 08-24 17:20:04 ·来自PC 只看该作者 6#
    西红柿的号 发表于 2017-08-24 16:13:21

    有视频啊,显示不出来吗?

    嗯嗯 看到了

    回复 举报

  • superchip   发烧级手机控 发表于 08-24 16:18:06 ·来自PC 只看该作者 5#

    牛逼的,开发板的蓝牙模块作为米兔主控的输入,这个想法赞。

    回复 举报

  • 西红柿的号   骨灰级手机控 发表于 08-24 16:13:21 ·来自PC 只看该作者 4#
    在彼空谷 发表于 2017-08-24 16:08:48

    厉害了!楼主调试成功了发个视频吧,这个确实碉爆了。。。

    有视频啊,显示不出来吗?

    回复 举报

  • 在彼空谷   骨灰级手机控 发表于 08-24 16:08:48 ·来自PC 只看该作者 地板

    厉害了!楼主调试成功了发个视频吧,这个确实碉爆了。。。

    回复 举报

  • 西红柿的号   骨灰级手机控 发表于 08-24 15:02:19 ·来自PC 只看该作者 板凳
    internet13 发表于 2017-08-24 14:36:07

    还需要Arduino开发板吗

    视频里的是有的。以后正常来说是不需要的。这个还没确定,还在跟官方探讨这个问题。现在蓝牙和开发板串口直连会有点问题。

    回复 举报

  • internet13   神仙级手机控 发表于 08-24 14:36:07 ·来自PC 只看该作者 沙发

    还需要Arduino开发板吗

    回复 举报

回复