您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > 2015RoboGame知识培训――上位机编程
2015RoboGame上位机程序设计•张海滨•电话:15805519140•邮箱:zhbzhbyr@gmail.comOutline开发环境•VS(VB,C++,C#)•Matlab•Labviw基本控件和串口通信•基本控件介绍•基于VS的串口通信Dll调用•Matlab的Dll文件生成•VS的调用上位机程序编写Note•程序控制流程图(程序框架)•程序调试技巧•异常处理、防假死、数据库、多线程寄语•Robogame参赛期望VS2010的前世今生VS2010环境配置VS2010代码调试√VS2010工程解析代码运行与bug发现开发环境介绍(VisualStudio2010)VS2010的前世今生新特性:C++标准方面:新标准C++0x的全面支持。IDE方面:MSBuildIntelliSenseMFC方面:增加了新的UI控件类:实现了对Windows7界面风格的全面支持VS2010的前世今生VS2010环境配置VS2010代码调试VS2010工程解析代码运行与bug发现√VS2010的前世今生VS2010环境配置VS2010代码调试VS2010工程解析下一阶段工作分析√VS2010的前世今生VS2010环境配置VS2010代码调试VS2010工程解析代码运行与bug发现√VS2010代码调试-调试信息查看VS2010代码调试-步进调试VS2010代码调试-调试工具Outline开发环境•VS(VB,C++,C#)•Matlab•Labviw基本控件和串口通信•基本控件介绍•基于VS的串口通信Dll调用•Matlab的Dll文件生成•VS的调用上位机程序编写Note•程序控制流程图(程序框架)•程序调试技巧•异常处理、防假死、数据库、多线程寄语•Robogame参赛期望串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口(SerialInterface)是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本。通信协议ViewDetail开发环境•VS(VB,C++,C#)•Matlab•Labviw基本控件和串口通信•基本控件介绍•基于VS的串口通信Dll调用•Matlab的Dll文件生成•VS的调用上位机程序编写Note•程序控制流程图(程序框架)•程序调试技巧•异常处理、防假死、数据库、多线程寄语•Robogame参赛期望开发环境•VS(VB,C++,C#)•Matlab•Labviw基本控件和串口通信•基本控件介绍•基于VS的串口通信Dll调用•Matlab的Dll文件生成•VS的调用上位机程序编写Note•程序控制流程图(程序框架)•程序调试技巧•异常处理、防假死、数据库、多线程寄语•Robogame参赛期望良好的编程习惯良好的习惯对于人的成长是非常重要的,良好的编程习惯对于我们编程能力的提高也是非常重要的。我们编程时要有良好的风格,源代码的逻辑简明清晰,易读易懂是好程序的重要标准。规则:(1)标识符应含有含义鲜明的单词•尽量不要直接用一个字母的变量,除了约定的几个变量如i、j、k、n等,一般使用一些单词的缩写,或直接用汉语拼音的缩写。(2)适当的把一个大程序分割成若干个子程序•适当的写若干个子程序,会减轻很多的调试负担。在调试程序过程中,首先调试每个子程序,子程序相对来说规模较小,调试比较方便。然后再去调试主程序。这样调试的思路会比较清晰。(3)程序中添加适当的注释•对于一些语句比较多的程序,在某块实现某个功能的语句前添加简短的注释,有助于自己更清楚的认识自己的程序。(4)程序的结构要清晰•一般来说每条语句要比它的上层语句退2格,属于同一层的语句要对齐。Begin和end要对齐,有助于检查它们的配对。模块化顺序执行/条件执行通信/传感器/判断程序调试断点的设置监视窗口的设置单步调试添加中间输出断点设置•F9/鼠标单击/右键快速断点设置变量监视(变量窗口/鼠标悬停)逐过程调试•在断点处,如果希望继续执行程序,则可按F5键,程序会运行到下一个断点的代码行处。•如果要一步步查看程序的执行情况,以及变量、属性值等,则可按F10键(逐过程调试的快捷键)。逐语句调试•在调用函数的情况下,逐过程调试将执行函数,然后跳过函数体。•F11逐语句调试能够看到函数体内的代码逐句执行的情况。加入WriteLine输出语句。查找所有引用、转到定义调试重心在于修正语法错误和逻辑错误的过程,重点在于定位问题。SQL(StructuredQueryLanguage)Server开发环境•VS(VB,C++,C#)•Matlab•Labviw基本控件和串口通信•基本控件介绍•基于VS的串口通信Dll调用•Matlab的Dll文件生成•VS的调用上位机程序编写Note•程序控制流程图(程序框架)•程序调试技巧•异常处理、防假死、数据库、多线程寄语•数字图像处理简介•Robogame参赛期望•图像处理基础•数字识别方法及步骤数字图像处理相关内容图像处理•图像:二维函数f(x,y)。–x,y为空间坐标,f(x,y)为图像信息(灰度、亮度、颜色)。•数字图像:离散,矩阵–采样,量化,存储–数字图像元素:像素•成像方式–所有波段的电磁波–声波、震动等什么是图像•数字矩阵数字图像表示)1,1()1,1()0,1()1,1()1,1()0,1()1,0()1,0()0,0(),(MNfNfNfMfffMfffyxf空间分辨率:M×N。灰度分辨率:离散灰度级数GkNkNMb2kG2存储一幅数字图像所需位数•数据结构–单通道:灰度图,二值图–多通道:RGB,HSV,YUV/YCbCr/YPbPr,RGBA……–索引图像:调色板,存储索引值•文件格式–BMP格式(BitMap):位图,文件头+数据,未经压缩,可以直接二进制读取操作–JPEG:静止灰度或彩色,压缩率大,常用需要特定的算法读取其中信息。–GIF:8位文件格式,256色,压缩,动画–PNG,TIF……图像存储•图像运算–算术运算(加减乘除)–逻辑运算(与或非、异或)算术运算•目的:提高清晰度,去噪声,前处理•用途:去噪声、边缘增强、提高对比度、改变亮度、改善细节–空域法:像素直接操作•灰度变换、直方图修正、空域滤波–变换域法:变换后再处理,逆变换得到处理后图像•频域滤波、小波分析等图像增强•g(m,n)=T[f(m,n)]–功能:改变动态范围,灰度区域截取,感兴趣区域空域法——灰度变换•定义:灰度级出现频数(频率)分布,反应图像清晰性,直方图均匀分布时,图像最清晰。•均衡化:调节对比度,增强图像对比度。空域法——直方图修正空域法——空域滤波器•线性滤波器——模板与图像卷积–低通滤波器,高通滤波器,带通滤波器•非线性滤波器——取决与邻近像素值–中值滤波R=mid{Zk}–最大值滤波R=max{Zk}–最小值滤波R=min{Zk}空域滤波器W1W2W3W4W5W6W7W8W9Z1Z2Z3Z4Z5Z6Z7Z8Z9模板像素邻域•平滑滤波器–用途:去除无用小细节,连接中断线段与曲线,去噪音,平滑图像–方法:低通滤波,中值滤波空域滤波器——平滑滤波•锐化滤波器–用途:改善细节,边缘提取,目标定位与识别–方法:高通滤波器,微分滤波器•微分滤波器:Roberts交叉梯度算子,Prewitt梯度算子,Sobel梯度算子,Laplacian二阶微分算子空域滤波器——锐化滤波PrewittRobertsSobelLaplacian•频域–离散傅立叶变换–离散余弦变换•时频分析–盖伯变换–小波变换其它图像增强方法•目的:提取感兴趣区域•用途:区域分割,目标定位,目标识别与分类,规划与决策–边缘检测法:点、线、边–Hough变换法–阈值分割法–数学形态学方法图像分割•点的检测——空域高通滤波•线的检测——模板操作•边的检测——微分算子–Roberts交叉梯度算子,Prewitt梯度算子,Sobel梯度算子,Laplacian二阶微分算子图像分割——边缘检测•通过灰度门限对图像像素进行分类图像分割——阈值分割•腐蚀——使二值图像减小一圈•膨胀——使二值图像扩大一圈图像分割——数学形态学方法原图腐蚀后膨胀后•开-闭运算–开运算——先腐蚀,再膨胀•消除细小对象,分离细小粘连,不改变形状平滑边缘–闭运算——先膨胀,再腐蚀•填充细小空洞,连接邻近对象,不改变面积平滑边缘图像分割——数学形态学方法原图开运算闭运算•结构法识别(多个结合)–简单描绘子,如周长,面积,紧凑度,灰度等–形状数,边界矩–欧拉数•决策论法识别–分类器,最小距离,相关匹配–神经网络,支持向量机(SVM)数字识别方法及步骤步骤原始图像灰度图预处理彩色空间变换,阈值分割包含数字区域的二值图像图像增强滤波,去除背景数字区域二值图像图像分割分割数字区域若干单数字二值图像图像细分分割单个数字结构化识别数字信息相关匹配识别神经网络,SVM网络训练……1.灰度化与二值化–方法,灰度阈值法,自适应阈值法……2.其它:滤波,形态学操作(开闭,腐蚀/膨胀)预处理imshow(I),title(‘OriginalImage');I1=im2bw(I,0.65);I0=imread(file);I0=imresize(I0,[480,640]);I=rgb2gray(I0);•目标:提取数字区域,并分割单个数字分割[x,y]=find(I1);x1=min(x);x2=max(x);y1=min(y);y2=max(y);I2=I1(x1:x2,y1:y2);•数字特征–连通域•两个连通域:8•一个连通域:0,4,6,9•零个连通域:1,2,3,5,7–周长,曲率,端点个数……表示与描述60°100°120°•字形确定,模板匹配方法:相关系数,差,异或识别匹配结果•根据模板相关运算结果,识别数值。解释与结果待识别模板运算结果61优点:简单,运算量少;缺点:针对特定形状,通用性差•Matlab,图像处理,常用接口通信•VisualStudio+第三方库–VC,图像处理OpenCv,串口CSerialPort……–C#,图形处理EmguCv,AForge.net……•QT,C++库通用•其它,python,VB也有丰富的库供使用•不建议自己从底层做起,能直接使用稳定的第三方库尽量使用,省时稳定工具软件•学会使用Google,英文关键字可以得到更多信息•多关注诸如VS等软件的论坛•有时间多逛逛pudn,CSDN,CodeProject,GoogleProject,sourceforge,github等代码托管社区,会有很多源代码。•耐心一些建议ROBOGAME参赛期望PassionPracticeEnjoymentCooperationLeadershipSafetyPerseveranceThankYou!
本文标题:2015RoboGame知识培训――上位机编程
链接地址:https://www.777doc.com/doc-3485930 .html