自主移动机器人培训教材
全自主移动机器人
全自主移动机器人维护
• 日常维护
• 保持设备正常
• 故障排除
• 检查相关连线
全自主移动机器人
全自主移动机器人
决策模块
• 决策模块的输入是视觉模块的输出,是球场上各个对 象的信息,如球相对于机器人的坐标,两个球门中心 点相对于机器人的坐标等等。决策模块的输出是具体 的运动参数,如左右轮速,它们将成为运动控制模块 的输入。在这里面运动控制模块所做的是根据过去部 分的和当前的视觉信息判断出当前状态,根据这个状 态使用对应的算法计算出适合的运动参数。 决策模块 主要是通过一个有限状态自动机来完成决策过程的。 而这个状态机是通过读取配置文件来构建的。 BlackGen在初始化的时候先读取这个配置文件并在程 序中构建出一个状态机供决策使用。用户可以根据自 己的需要针对不同情况编写不同的配置文件。
全自主移动机器人
基于CBaseVision类及其子类的图 像分析处理
• 软件在识别中使用颜色分割的方法,软件中需要 识别八种颜色,我们通过对H、I、S三个数组都设 成BYTE型,每一为为代表一种颜色,如果某个颜 色分量的某个值属于某中颜色,则对应与该颜色 的此颜色分量数组中的相应位设为1,否则设为0, 这样通过用某个象素的H、I、S值作为H、I、S三 个数组的索引对三个值进行位与即可得到当前象 素属于的颜色,也成为“8通道”的方法。这样效 率比较高。此部分已经被封装成vision.dll在程序 中通过加载dll实现。其中的大部分文件的源代码 是开放的。
全自主移动机器人
程序模块划分及工作流程四
全自主移动机器人
视觉模块
全自主移动机器人
视觉模块主要完成以下任务
• a) 基于Camera类的视频采集。 • b) 基于CBaseVision类及其子类 (CFrontVision和COmniVision)的图像 分析处理。 • c) 两个视觉的信息融合(updateWorld函 数)。
自主移动机器人软件模块
软件运行环境:
1. Windows XP Professional 操作系统 2. 需要摄像头驱动程序 3. 运动控制动态链接库TML_lib.dll,视觉动 态库omni_vision.dll,决策动态库 decision_making.lib和控制动态库control.lib。 4. 推荐运行在 PC CPU 800MHz以上,256M 以上内存环境。
全自主移动机器人
基于Camera类的视频采集
• Camera类表示摄像头设备,主要用来初始化摄像头和从摄像头中 获得的图像原始数据,通过摄像头获得的是24位RGB格式的图像 数据。RGB(red,green,blue)是在三基色理论基础上开发的相 加混合颜色空间,这也是在图像处理中通常采用的颜色空间,其 中在320×240的图像上每个象素点用3个Byte表示其RGB值。主要 采用了directShow技术进行视频捕捉。 • Camera类的接口很简单,为了方便使用,只有两个公共函数: – bool Init(int dev_num,char *pBuffer); • 执行初始化摄像头,在第一次从设备读取图像原始数据 (RGB颜色模式)之前,一定要执行初始化。 • 第一个参数dev_num表示该设备的在当前操作系统中的枚 举值; • 第二个参数pBuffer表示存放图像原始数据的缓冲区,该缓 冲区大小至少为3×320×240个BYTE。 – void CaptureImage(char *pBuffer); • 捕捉图像原始数据,参数pBuffer表示存放图像原始数据的 缓冲区。
全自主移动机器人
自主移动机器人简介
• Robocup足球机器人世界杯是目前世界上规模最大的智 能机器人联盟。 • Robocup中型组足球机器人是目前Robocup足球机器人 比赛中最富挑战性的课题之一,博得许多机器人研究 机构和大学的青睐。 • DM-B系列智能机器人系统既能够面向RobotCup中型组 足球机器人竞赛提供一个标准比赛任务。 • 能够用于如实时计算机视觉、多机器人协作算法等其 他多种研究。 • 还可以满足机电,自动控制等课程的教学演示、工程 实训,以提高学生的综合创新能力。 • 可扩展成工业领域和服务领域的智能无人小车和智能 服务机器人。
自主移动机器人
培训教程
全自主移动机器人
深圳市鸥鹏科技有限公司简介 • 深圳市鸥鹏科技有限公司(Open Technology Ltd) 是一家 专业从事机电一体化和专业机器人创新产品研究、开 发、生产和销售的高新技术企业,开发的具有自主知 识产权的机电一体化和专业机器人集成技术及产品不 仅可以广泛的应用于工业自动化领域,而且还可以广 泛的应用于普通高等院校和职业技术学院的自动化和 机电一体化等相关专业的实训、教学和研究。本手册 主要围绕普通高等院校和职业技术学院的数控原理与 数控技术、专业机器人和控制原理和控制工程等综合 创新实验室的建设来介绍产品,但这些产品并不仅仅 限于教学应用,他们的大多数产品都可以直接应用于 工业领域。 • 更详细信息请登录: •
全自主移动机器人
运动控制模块
• BlackGen机器人采用TECHNOSOFT 公司的 IPM 100运动控制板作为运动 控制器,用来将上位机指令转换为 运动输出。 • BlackGen采用运动控制动态链接库 TML_lib.dll来完成对IPM板的控制, 而控制工作主要在ipm类里面实现。
全自主移动机器人
全自主移动机器人
程序模块划分及工作流程二
全自主移动机器人
程序模块划分及工作流程三
BlackGen整个进程由5个线程组成: • 视觉线程, • 决策线程 • 运动控制线程 • 通信线程 • 另外还有一个主线程,它是程序的入口,它先为整个 进程作一些必要的初始化,如:初始化摄像头,读取 配置文件等。然后创建另外4个线程,接着就等待键盘 输入和处理指令,键盘输入的指令有start(开始), stop(暂停),end(程序结束)。
全自主移动机器人
CBaseVision类图像处理的典型步骤
全自主移动机器人
CFrontVision类中图像处理实现过程
全自主移动机器人
两个视觉的信息融合
• 软件有两个摄像头采集视频,采用的是不同的图像处理方法,因此在 视觉融合方面需要做一些工作。即不论所得的有效信息是从全维视觉 得到还是从前向视觉得到,在决策模块认为是一致的。 • bool updateWorld(CFrontVision &frontVision,bool frontOK,COmniVision &omniVison,bool omniOK,World &w) • 更新信息函数。该函数为上面的结构体中变量赋值。 • 第一个参数frontVision指向前向视觉对象。 • 第二个参数frontOk,true表示前向视觉参与视觉融合,false表示不参 与。 • 第三个参数omniVision指向全维视觉对象。 • 第四个参数omniOk,true表示全维视觉参与视觉融合,false表示不参 与。 • 注:在软件中主要是通过经验来融合两个视觉的信息。该部分应该根 据具体情况考虑修改。并且没有写单独一个视觉的情况,如果需要可 自己添加。 • 第五个参数w,World对象中包含Vision2Player成员,该成员会被赋值。
• 视觉模块 • 策略模块
全自主移动机器人
• 运动控制模块
程序模块划分及工作流程一
运行于BlackGen上的程序从结构上可以分为4个 主要模块: • 视觉模块 • 决策模块 • 运动控制模块 • 通信模块 • 除BlackGen之外,还有一个教练(Coach)程 序用于远程控制和查看当前信息。BlackGen运 行在机器人的笔记本中,Coach运行在场外的 计算机里面,一个Coach程序可以控制多个 BlackGen程序。
运动控制模块接口说明
主要成员函数:
• bool Ipm::initIpm() 初始化控制板。 • int Ipm::readASPD() 读取实际的左右轮速并把结果保存在R_ASPD和 L_ASPD这两个成员变量中。 • bool Ipm::DetectBlock(double lwset, double rwset) 判断机器人的左右轮 是否处在堵转状态,输入为lwset和rwset实际向IPM板发送的左右轮速。 函数给bLBlocking和bRBlocking两个成员变量赋值,这两个变量分别 代表了左右轮是否堵转。 第一个参数lwset为发到IPM板上的左轮速 第二个参数rwset为发到IPM板上的右轮速 • bool Ipm::LoadConfig(const char * filename) 读取配置文件,得到初始 化参数。 第一个参数filename为IPM板相关的配置文件,默认为 《ipm.cfg》 • void Ipm::axisOff() 让机器人处于poweroff的状态。 • void Ipm::axisOn() 让机器人处于poweron的状态。 • void Ipm::kickerOn() 打开机器人的踢球机构。 • void Ipm::kickerOff() 关闭机器人的踢球机构。 • bool Ipm::SendToIPM() 把类成员lv和rv作为左右轮速以速度控制的形 式发送指令给IPM板。
全自主移动机器人
决策模块的原理
全自主移动机器人
决策模块的原理
• 找球(FindBall)就是当视觉没有在图像上识别出球时所处的状态, 机器人采用自转的方式找球,如果看到球,跳到拿球状态。 • 拿球(GoToBall)就是机器人看见球了,但是球还没进入机器人 的带球机构,这个状态的动作需要一个具体的算法,一个已知目 标点求左右轮速的算法。当看不见球了状态跳到找球,如果球进 入机器人的带球机构时跳到带球状态。 • 带球(DriveToGoal)就是球在带球机构中,而球门并不在机器人 的射程中所处的状态,机器人针对对方球门的位置算出不同的左 右轮速,同样这里也需要一个特定的算法。如果球不见了状态跳 到找球,如果球脱离了带球状态跳到拿球状态,如果对方球门看 不见则跳到找球门的状态,如果对方球门进入射程范围就跳到射 门状态。 • 找球门(FindOppGoal)就是球在机器人的带球机构中,但是机器 人看不见对方球门,机器人需要带着球找对方球门。这里我们直 接设置左右轮速(25,40)走圆弧来完成这个工作。 • 射门(Kick)是球在带球机构中,对方球门又在射程中,机器人 打开踢球机构把球弹出。同样如果球不见了就跳到找球状态。