达尔文OP2代码解读(二)视觉处理模式

来源:互联网 发布:淘宝现金流量表 编辑:程序博客网 时间:2024/06/05 12:46
/* * VisionMode.cpp * *  Created on: 2017. 11. 20. *      Author: kay *      Add some comments  */#include <stdio.h>#include <unistd.h>#include "VisionMode.h"#include "Action.h"#include "ColorFinder.h"#include "LinuxActionScript.h"namespace Robot{    /*主函数main.cpp中的用法int detected_color = 0;    detected_color |= (red_pos.X == -1)? 0 : VisionMode::RED;//1    detected_color |= (yellow_pos.X == -1)? 0 : VisionMode::YELLOW;//2    detected_color |= (blue_pos.X == -1)? 0 : VisionMode::BLUE;//4    if(Action::GetInstance()->IsRunning() == 0)        VisionMode::Play(detected_color);*/void VisionMode::Play(int color)//color为参数,通过数字调用相应的执行函数{    static int old_color = 0, color_count = 0;    if(old_color != color || color == 0)    {        old_color = color;        color_count = 0;    }    else        color_count++;    if(color_count < 15) return;//超时检测 15次都是同样的颜色(有颜色|没颜色),则退出函数。//RED=1  YELLOW=2   BLUE=4    switch(color)    {    case (RED)://1        Action::GetInstance()->Start(4);        LinuxActionScript::PlayMP3("../../../Data/mp3/Thank you.mp3");        break;    case (YELLOW)://2        Action::GetInstance()->Start(41);        LinuxActionScript::PlayMP3("../../../Data/mp3/Introduction.mp3");        break;    case (BLUE)://4        Action::GetInstance()->Start(24);        LinuxActionScript::PlayMP3("../../../Data/mp3/Wow.mp3");        break;    case (RED|YELLOW)://3        Action::GetInstance()->Start(38);        LinuxActionScript::PlayMP3("../../../Data/mp3/Bye bye.mp3");        break;    case (RED|BLUE)://5        Action::GetInstance()->Start(54);        LinuxActionScript::PlayMP3("../../../Data/mp3/Clap please.mp3");        break;    case (BLUE|YELLOW)://6        Action::GetInstance()->Start(15);        LinuxActionScript::PlayMP3("../../../Data/mp3/Sit down.mp3");        while(Action::GetInstance()->IsRunning()) usleep(8*1000);        Action::GetInstance()->Start(1);        LinuxActionScript::PlayMP3("../../../Data/mp3/Stand up.mp3");        break;    case (RED|YELLOW|BLUE)://7        Action::GetInstance()->Start(27);        LinuxActionScript::PlayMP3("../../../Data/mp3/Oops.mp3");        break;    }    color_count = 0;}}

1.函数用途:颜色检测。通过检测到不同的函数,可以做相应的动作,和调用相应的语音。

2..颜色组成:红、蓝、黄。(三种颜色的组合)。7种组合(什么都没有检测到不算)

3.超时检测:超过15次检测到是相同的颜色(没有检测到也算),退出检测。

4.动作说明:可通过代码英文进行判断。

阅读全文
0 0