1、移动机器人轨迹跟踪软件设计站点设计DOC燕山大学课程设计说明书题目: 移动机器人轨迹跟踪软件设计(站点设计)学院(系): 电气工程学院 年级专业: 10级过程控制二班 学 号: 学生姓名: 指导教师: 陈贵林 李雅倩 燕山大学课程设计(论文)任务书院(系): 电气工程学院 基层教学单位: 自动化系 学 号学生姓名专业(班级)过控10-2设计题目移动机器人轨迹跟踪软件设计设计技术参数履带式移动机器人一台CCD摄像头一个设计要求1、 通过摄像头识别轨迹2、 机器人跟踪轨迹移动工作量1、完成设计说明书一份(包括封面、任务书、目录、正文、参考文献、个人体会),文稿建议打印,但要排版整洁规范,用B5纸打
2、印。2、正文包括软件使用方法、设计思路、主要算法流程、主要函数的说明;3、提交软件源程序一份,程序要有完整、规范的注释4、软件调试,包括轨迹识别、轨迹跟踪等。工作计划第1周:查阅相关资料,进行方案设计;第2周:编写程序;第3周:编写、调试程序;第4周:编写设计说明书,进行答辩。参考资料1. 郑阿奇.Visual C+实用教程.北京:电子工业出版社,20122. David Simon, 周瑜萍等编著.Visual C+ 6编程宝典.北京:电子工业出版社, 20053. 肖宏伟编著. Visual C+ 6.0实效编程百例. 北京:人民邮电出版社,2002指导教师签字陈贵林 李雅倩基层教学单位主
3、任签字李海滨说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。2013年11 月25 日 目 录前言 第一章 设计思路第二章 程序第三章 算法心得体会 前言机器人的应用越来越广泛,几乎渗透到所有领域。移动机器人是机器人学中的一个重要分支。早在60年代,就已经开始了关于移动机器人的研究。关于移动机器人的研究涉及许多方面,首先,要考虑移动方式,可以是轮式的、履带式、腿式的,对于水下机器人,则是推进器。其次,必须考虑驱动器的控制,以使机器人达到期望的行为。第三,必须考虑导航或路径规划,对于后者,有更多的方面要考虑,如传感融合,特征提取,避碰及环境映射。因此,移动机器人是一个集环境感知、动
4、态决策与规划、行为控制与执行等多种功能于一体的综合系统。对移动机器人的研究,提出了许多新的或挑战性的理论与工程技术课题,引起越来越多的专家学者和工程技术人员的兴趣,更由于它在军事侦察、扫雷排险、防核化污染等危险与恶劣环境以及民用中的物料搬运上具有广阔的应用前景,使得对它的研究在世界各国受到普遍关注关键字:移动机器人第一章 设计思路1.1 机器人的介绍机器人的诞生和机器人控制技术发展作为20世纪自动控制原理最具说服力的成就、人类科学技术进步的重大成果1,是现代计算机与自动化等技术高速发展的产物,同时也是当代最高意义上的自动化。自1956年第一台工业机器人诞生之日起,机器人的应用越来越普及。20世
5、纪60年代末机器人开始进入商业化和工业领域以来,机器人的应用范围已经遍及到工业、国防、宇宙空间、海洋开发、医疗保健、抢险救灾等人类生活的各个方面。机器人由于具有高度的灵活性、快速的反应能力以及巨大的信息处理能力,使其能够在很多环境替代人进行工作。从重复动作的流水线机械手到智能机器人,从平地到高山海底甚至太空,以至于在比较恶劣危险的工作环境,都是机器人发挥其作用的重要舞台,然而控制系统作为机器人的心脏,其性能的好坏直接决定了机器人的智能化水平。近年来对移动机器人的研究已成为了一大热点,促进了移动机器人在各个领域中的进一步应用,本文也将在这一方面进行一些分析和研究。智能移动机器人,是一个集环境感知
6、、动态决策与规划、行为控制与执行等多功能于一体的综合系统。它集中了传感器技术、信息处理、电子工程、计算机工程、自动化控制工程以及人工智能等多学科的研究成果,代表机电一体化的最高成就,是目前科学技术发展最活跃的领域之一。随着机器人性能不断地完善,移动机器人的应用范围大为扩展,不仅在工业、农业、医疗、服务等行业中得到广泛的应用,而且在城市安全、国防和空间探测领域等有害与危险场合得到很好的应用。因此,移动机器人技术已经得到世界各国的普遍关注。1.2 实训任务分配本次的设计任务在老师的帮助下得到了细致地划分,而且也增加了一些项目,总体来说任务分为三大块:1.轨迹的识别与跟踪。2.站的设计。3.自定义轨
7、迹的运行。这三部分的任务既是相互独立的又是相互联系的。首先来分析第一个任务:轨迹的识别与跟踪,这个任务包含了摄像头的初始化以及图像的采集以及图像的存取,轨迹的识别用到了一个算法。机器人的控制也是这个任务包含的一个总要部分,其中包括了速度控制,方向控制等等。第二个任务是站的设计,老师提到了“站”这个概念,这是在工厂的生产中的一些重要的机制,也是非常有实用性的一个设计。第三个任务是自定义轨迹的运行,老师提到了可以设计一个圆形轨迹也可以设计一个方形轨迹,机器人的这种运动在生产生活中的应用也是很广泛的。1.3 CCD摄像头的介绍CCD(电荷耦合器)摄像头基本知识现在科学级的摄像头比前几年更尖端,应用领
8、域也更广了。在生物科学领域,从显微镜、分光光度计到胶文件、化学放光探测系统,都用到了CCD的摄像头。但是很多研究工作者对CCD的指标仍云里雾里。下面对CCD的一些常见指标进行表述。常见的CCD一般指:CCD摄像头和插在电脑的采集卡区别数字摄像头与模拟摄像头所有CCD芯片都属于模拟的设备。当图像进入计算机是数字的。如果信号在摄像头、采集卡两部分完成数字化的,这个CCD被认为是模拟CCD。数字摄像头事实上是由内置于摄像头的数字化设备完成数字化过程,这样可以减少图像噪音。与模拟摄像头相比,数字摄像头提高了摄像头的信噪比、增加摄像头的动态范围、最大化图像灰度范围。科学级的绝大多数的CCD芯片都是由Ko
9、dak、Sony、SIT制造。评价CCD的基本指标信噪比SNR真实体现摄像头的检测能力。所有的CCD摄像头的厂家为提高摄像头的性能,都尽力使信号(可达到满井电子的数目)最大同时尽可能减少噪音。SNR=满井电子/噪音电子=动态范围=最大灰阶=2bit数在相同满井电子的CCD,降低CCD噪音,就能提高CCD的监测能力,热或者暗电流对于CCD都是噪音,噪音在CoolCCD基本都可以被深度致冷的Peltier消除。在曝光超过5-10秒,CCD芯片就会发热,没有致冷设备的芯片,“热”或者白的像素点就会遮盖图像。-20度的摄像头可以拍摄不超过5分钟的图像,-40度的摄像头拍摄时间可以超过1小时1.4机器人
10、从一站到另一站的界面第二章2.1定义站点的程序#if !defined(AFX_DLGSETTING_H_036F7483_B3C7_4494_88D7_5DE026FE6947_INCLUDED_)#define AFX_DLGSETTING_H_036F7483_B3C7_4494_88D7_5DE026FE6947_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000/ DlgSetting.h : header file/#include resource.h #include XPButton.h/ CDlgSett
11、ing dialogstruct Pattern/定义结构体,保存099的站点的特征 int num; /站点序号 int timer; /停靠时间 BOOL bIsPositive; /滚筒是否正转 BOOL bIsNegative; /滚筒是否反转;class CDlgSetting : public CDialog/ Constructionpublic: CDlgSetting(CWnd* pParent = NULL); / standard constructor / Dialog Data /AFX_DATA(CDlgSetting) enum IDD = IDD_DIALOG_
12、SETTING ; CComboBox m_ComboLowVel; CComboBox m_ComboHighVel; CComboBox m_ComboHandVel; CComboBox m_ComboRollerNegative; CComboBox m_ComboRollerPositive; CComboBox m_ComboStopTime; CComboBox m_ComboStation; /按钮美化 CXPButton m_XPbtn_1,m_XPbtn_2,m_XPbtn_3,m_XPbtn_4; /AFX_DATA/ Overrides / ClassWizard ge
13、nerated virtual function overrides /AFX_VIRTUAL(CDlgSetting) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL/ Implementationprotected: / Generated message map functions /AFX_MSG(CDlgSetting) virtual BOOL OnInitDialog(); afx_msg void OnBUTTONSaveSpeed(); afx
14、_msg void OnBUTTONSaveStation(); afx_msg void OnCloseupCOMBOStation(); afx_msg void OnButtonPrior(); afx_msg void OnButtonNext(); /AFX_MSG DECLARE_MESSAGE_MAP();/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif / !defined(AFX_DL
15、GSETTING_H_036F7483_B3C7_4494_88D7_5DE026FE6947_INCLUDED_)2.2对于前一站与后一站的定义/ DlgSetting.cpp : implementation file/#include stdafx.h#include REBotW.h#include DlgSetting.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifconst int comboStopTime5 = 0, 2, 15, 30, 40; /
16、停靠时间,单位:秒const double comboLowSpeed5 = 0.50, 0.40, 0.30, 0.20, 0.10; /低速const double comboHandSpeed5 = 1.20, 1.00, 0.80, 0.60, 0.40; /手动const double comboHighSpeed5 = 1.30, 1.20, 1.10, 1.00, 0.80; /高速const double g_dAGV_VEL_NORMAL = 8000;/21000; /每秒21000脉冲double g_dAGV_VEL_LOW;double g_dAGV_VEL_HAND
17、;double g_dAGV_VEL_HIGH;Pattern pStation100;/ CDlgSetting dialogCDlgSetting:CDlgSetting(CWnd* pParent /*=NULL*/) : CDialog(CDlgSetting:IDD, pParent) /AFX_DATA_INIT(CDlgSetting) /AFX_DATA_INITvoid CDlgSetting:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CDlgSetting) D
18、DX_Control(pDX, IDC_COMBO_LOW, m_ComboLowVel); DDX_Control(pDX, IDC_COMBO_HIGH, m_ComboHighVel); DDX_Control(pDX, IDC_COMBO_HAND, m_ComboHandVel); DDX_Control(pDX, IDC_COMBO_Roller_negative, m_ComboRollerNegative); DDX_Control(pDX, IDC_COMBO_Roller_positive, m_ComboRollerPositive); DDX_Control(pDX,
19、IDC_COMBO_StopTime, m_ComboStopTime); DDX_Control(pDX, IDC_COMBO_Station, m_ComboStation); /按钮美化 DDX_Control(pDX, IDC_BUTTON_PRIOR, m_XPbtn_1); DDX_Control(pDX, IDC_BUTTON_NEXT, m_XPbtn_2); DDX_Control(pDX, IDC_BUTTON_SaveSpeed, m_XPbtn_3); DDX_Control(pDX, IDC_BUTTON_SaveStation, m_XPbtn_4); /AFX_D
20、ATA_MAPBEGIN_MESSAGE_MAP(CDlgSetting, CDialog) /AFX_MSG_MAP(CDlgSetting) ON_BN_CLICKED(IDC_BUTTON_SaveSpeed, OnBUTTONSaveSpeed) ON_BN_CLICKED(IDC_BUTTON_SaveStation, OnBUTTONSaveStation) ON_CBN_CLOSEUP(IDC_COMBO_Station, OnCloseupCOMBOStation) ON_BN_CLICKED(IDC_BUTTON_PRIOR, OnButtonPrior) ON_BN_CLI
21、CKED(IDC_BUTTON_NEXT, OnButtonNext) /AFX_MSG_MAPEND_MESSAGE_MAP()/ CDlgSetting message handlersBOOL CDlgSetting:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here /打开站点配置文件 CFile TheFile(Station.dat,CFile:modeRead); CArchive ar(&TheFile,CArchive:load,40960); TheFile.SeekToB
22、egin(); for(int i=0;ipStationi.num; arpStationi.timer; arpStationi.bIsPositive; arpStationi.bIsNegative; CString str; str.Format( %d,i); m_ComboStation.AddString(str); ar.Close(); TheFile.Close(); m_ComboStation.SetCurSel(0); OnCloseupCOMBOStation(); /打开速度配置文件 CFile TheFile2(Velocity.dat,CFile:modeR
23、ead); CArchive ar2(&TheFile2,CArchive:load,40960); TheFile2.SeekToBegin(); int num_vel; ar2num_vel; g_dAGV_VEL_LOW = g_dAGV_VEL_NORMAL * comboLowSpeednum_vel; /低速 m_ComboLowVel.SetCurSel(num_vel); ar2num_vel; g_dAGV_VEL_HAND = g_dAGV_VEL_NORMAL * comboHandSpeednum_vel; /手动 m_ComboHandVel.SetCurSel(n
24、um_vel); ar2num_vel; g_dAGV_VEL_HIGH = g_dAGV_VEL_NORMAL * comboHighSpeednum_vel; /高速 m_ComboHighVel.SetCurSel(num_vel); ar2.Close(); TheFile2.Close(); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CDlgSetting:OnButtonPrior()
25、 /前一站 if(m_ComboStation.GetCurSel()0) m_ComboStation.SetCurSel(m_ComboStation.GetCurSel()-1); OnCloseupCOMBOStation(); void CDlgSetting:OnButtonNext() /后一站 if(m_ComboStation.GetCurSel()m_ComboStation.GetCount() m_ComboStation.SetCurSel(m_ComboStation.GetCurSel()+1); OnCloseupCOMBOStation(); void CDl
26、gSetting:OnCloseupCOMBOStation() /当IDC_COMBO_Station控件发生变化时 for(int i=0;i5;i+) if(pStationm_ComboStation.GetCurSel().timer = comboStopTimei) m_ComboStopTime.SetCurSel(i); if(pStationm_ComboStation.GetCurSel().bIsPositive) m_ComboRollerPositive.SetCurSel(1); else m_ComboRollerPositive.SetCurSel(0); i
27、f(pStationm_ComboStation.GetCurSel().bIsNegative) m_ComboRollerNegative.SetCurSel(1); else m_ComboRollerNegative.SetCurSel(0); void CDlgSetting:OnBUTTONSaveStation() /保存站点设置 if(MessageBox(您确定要更改当前的站点设置?,询问,MB_YESNO|MB_ICONQUESTION)=IDYES) pStationm_ComboStation.GetCurSel().timer = comboStopTimem_Com
28、boStopTime.GetCurSel(); pStationm_ComboStation.GetCurSel().bIsPositive = m_ComboRollerPositive.GetCurSel(); pStationm_ComboStation.GetCurSel().bIsNegative = m_ComboRollerNegative.GetCurSel(); CFile TheFile(Station.dat,CFile:modeCreate|CFile:modeReadWrite); CArchive ar(&TheFile,CArchive:store,40960); TheFile.SeekToBegin(); for(int i=0;i100;i+) arpStationi.num; arpStationi.timer; arpStationi.bIsPositive; arpStationi.bIsNegative; ar.Close(); TheFile.Close(); MessageBox(新的站点设置完毕! 下次打开应用软件时有效!,提示,MB_ICONWARNING);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1