[课程与套件] 底盘控制 工程实践 底盘任务1

[复制链接]
版主掌心的温柔
2018-3-29 20:11:07 显示全部楼层

马上注册,玩转Robomaster!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 掌心的温柔 于 2018-3-29 20:20 编辑

工程实践——底盘任务1

底盘任务1:实现绿色灯启动,红色灯停止任务。(学会使用红外传感器进行巡线。使用颜色传感器识别颜色)。
下图为实现效果的GIF图片,耐心等待显示。
任务1.gif

模块功能介绍:
每路的传感器的红外发射管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,此时模块的TTL输出端为高电平,相应指示二极管一直处于熄灭状态;当被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管导通,此时模块的TTL输出 端为低电平,指示二极管被点亮。
红外对管.jpg
图1
TB23EvvbceK.eBjSszgXXczFpXa_!!1070042715.jpg_430x430q90.jpg
图2
模块应用:
1.智能小车或机器人寻线(包括黑线和白线),沿着黑线路径走,又称寻迹。
2.智能小车避悬崖,防跌落。
3.智能小车避障碍
4.可应用于其它自动化光电反射应用。

红外寻迹传感器驱动:(读取四路红外寻迹传感器,需要参考实践指导书61页有关红外开关实验的内容。
寻迹传感器.jpg

图3

//红外寻迹传感器初始化
for (uint8_t i = 0; i < 4; i++)
{
    set_digital_io_dir(i+1, IO_INPUT);//IO1~IO4都设置为输入模式
}

//红外寻迹传感器读取
for (int8_t i = 0; i < 4; i++)
{
    read_digital_io(i+1, sensor+i);//将IO1~IO4电平状态存入sensor数组
}


一:使用四路红外传感器,遇到黑线无反射,指示灯为熄灭状态,读取回高电平“
1”。黑线外为漫反射状态,指示灯为点亮状态,读取低电平“0”。使用普通IO口读取方式,存入数组中,实验指导书第二课时中有具体讲解。

二:使用颜色传感器,进行颜色识别。
捕获1234567.png
图4
GY-33是一款低成本颜色识别传感器模块。工作电压3-5v,功耗小,体积小,安装方便。
通常所看到的物体颜色,实际上是物体表面吸收了照射到它上面的白光(日光)中的一部分有色成分,而反射出的另一部分有色光在人眼中的反应。根据德国物理学家赫姆霍兹(Helinholtz)的三原色理论可知,各种颜色是由不同比例的三原色(红、绿、蓝)混合而成的。
由上面的三原色感应原理可知,如果知道构成各种颜色的三原色的值,就能够知道所测试物体的颜色。对于GY-33来说,当选定一个颜色滤波器时,它只允许某种特定的原色通过,阻止其它原色的通过。

例如:当选择红色滤波器时,入射光中只有红色可以通过,蓝色和绿色都被阻止,这样就可以得到红色光的光强;同理,选择其它的滤波器,就可以得到蓝色光和绿色光的光强。通过这三个光强值,就可以分析出反射到传感器上芯片的光的颜色。此模块我们使用串口UART(TTL电平)读取R,G,B的值,从而判断颜色。
颜色传感器接线.jpg
图5
① 使用我们的串口线,红色线接VCC,咖啡色线接CT,黄色线接DR,黑色线接GND。
② 另一端接RM主控板串口3。

颜色传感器驱动:(串口通信读取部分参考实践指导书串口通信章节
//颜色传感器串口初始化
uart_init(USER_UART3, 9600, WORD_LEN_8B, STOP_BITS_1, PARITY_NONE);
uart_recv_callback_register(USER_UART3, color_uart_callback);
uart_receive_start(USER_UART3, color_recv, COLOR_BUFF_LEN);


//颜色传感器串口的回调函数
void color_uart_callback(void)
{
  memcpy(&rgb_data, color_recv+4, 3);//将传感器数据放入rgb_data结构体中
}


传感器安装:
我们有四个红外传感器把它安装在底盘的前端。
寻迹传感器安装位置.jpg
图6
捕获4.PNG
图7
捕获5.PNG
图8
根据距离调节模块上的旋钮,来保证接近黑线时,指示灯为熄灭。
颜色传感器安装位置.jpg
图9
捕获1.PNG
图10
如果是①情况,则底盘应该直行。
如果是②情况,则底盘应该左转一个较小的角度。
如果是③情况,则底盘应该左转一个较大的角度。
如果是④情况,则底盘应该右转一个较小的角度。
如果是⑤情况,则底盘应该右转一个较大的角度。

if ((sensor[0] == 0) && (sensor[1] == 0) && (sensor[2] == 0) && (sensor[3] == 0))
{
   chassis.vw = 0;
}

else if (sensor[1] == 1)
{
   chassis.vw = 25;
}
if (sensor[0] == 1)
{
   chassis.vw = 95;
}
else if (sensor[2] == 1)
{
   chassis.vw = -25;
}
else if (sensor[3] == 1)
{
   chassis.vw = -95;
}

捕获32.jpg
图11
①  红外寻迹传感器的数据,某一传感器靠近黑线时,某位数据会变为“1”,其他情况为“0”。注意需要安装完之后进行电位计调整。
②  颜色传感器的读取数据,我们如果需要进行颜色判断的情况下,需要将颜色传感器贴近颜色区块,通过Debug模式进行相应颜色的R,G,B特征值的提取判断。

思考问题:
1:如果需要转比较陡的弯则我们需要降低车速。

2:如果我们需要进行分叉路怎么办呢?
捕获2.PNG
图12
3:如果我们需要转直角弯怎么办呢?


捕获3.PNG

图13


我们可以使用黄色灯降低车速,然后使用我们的想法进行控制,然后转弯结束后,再提速行驶。

所有传感器连接图.jpg
跳转到指定楼层

[课程与套件] 底盘控制 工程实践 底盘任务1

[复制链接]
上等兵七小丘人
2018-8-4 15:14:24 显示全部楼层
请问哪里有实践指导书?

[课程与套件] 底盘控制 工程实践 底盘任务1

[复制链接]
中士thomas
2018-10-10 00:58:10 显示全部楼层
挺不錯的程序實踐

[课程与套件] 底盘控制 工程实践 底盘任务1

[复制链接]
上等兵yzsszy
2018-10-18 16:37:36 显示全部楼层
浅显易懂,很适合初学者

[课程与套件] 底盘控制 工程实践 底盘任务1

[复制链接]
中士小花火
2018-12-22 21:31:52 来自手机 显示全部楼层
6666666666666

[课程与套件] 底盘控制 工程实践 底盘任务1

[复制链接]
上等兵thomashui
2018-12-25 11:53:09 显示全部楼层
加油!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

触屏版 | 电脑版

Copyright © 2019 RoboMasters 版权所有

快速回复 返回顶部 返回列表