当前位置:首页 > 通信技术 > 通信技术
[导读]摘要:文中主要研究移动机器人在环境未知情况下的障碍物检测问题,提出了一种基于Matlab和VC++混合编程的障碍物检测系统软件实现方法。该方法整合了MATLAB的数值计算功能,具有强大的图形、图像处理功能和VC++的可视

摘要:文中主要研究移动机器人在环境未知情况下的障碍物检测问题,提出了一种基于Matlab和VC++混合编程的障碍物检测系统软件实现方法。该方法整合了MATLAB的数值计算功能,具有强大的图形、图像处理功能和VC++的可视化、执行速度快、易维护升级等特点。实验结果表明,这种检测方法在障碍物检测系统的开发过程中可以大大提高编程效率,并缩短软件的开发周期。
关键词:Matlab;VC++;混合编程;障碍物检测

0 引言
    在智能移动机器人自主导航的研究中,应用视觉来进行实时障碍检测,一直是研究的热点问题。目前,许多研究工作者已将视觉导航应用到移动机器人的移动控制中,但由于其图像处理数据量大、算法较复杂,因此在具体应用中存在实时性较差、道路区域检测的算法不够鲁棒、只能适合算法特定的道路模型等缺点。为了提高移动机器人检测障碍物的实时性,文中提出了一种基于Matlab和VC混合编程的障碍物检测系统软件实现方法,可以大大提高编程的效率,缩短软件的开发周期,且可以快速准确地检测到障碍物。

1 VC++与Matlab混合编程方法
    Matlab是由美国MatlaWorks公司推出的用于算法开发、数据分析以及数值计算的高级技术计算语言和交互式环境,在矩阵运算、数值计算和图形显示等方面,具有强大的功能,非常直观、简洁。它为各工程计算领域提供了相应的工具箱,在控制界、生物医学工程、语音处理、数字信号处理、雷达工程、信号分析、计算机技术等各行各业中都得到了广泛的应用。但是和其它高级编程语言相比,它的程序执行速度较慢,其源代码的公开不利于算法和数据的保密。
    VisualC++是Microsoft公司推出的面向对象可视化编程的高级程序设计语言,它集成了功能强大的编译器、连接器、调试器、AppWizard等多种多样的可视化编程工具。它采用编译方式运行,运行速度快,特别是编写界面的能力很强。但它在数字处理分析、算法工具、编程效率和准确方便的绘制数据图像方面远低于Matlab语言。
    Matlab与VC++常用的结合方法有5种:
    ①Matlab引擎。
    ②用Matcom将Matlab的M文件编译成C语言文件并嵌入VC++。
    ③使用Matlab提供的函数库或C++接口函数库直接在VC中编程。
    ④利用Matlab提供的MCC命令生成与Matlab文件对应的基于C语言或C++语言的包裹文件,再嵌入VC中。
    ⑤应用组建技术实现Matlab与VC混合编程。
    本研究针对5种方法进行了研究和试验。后4种方法对于Matlab的图像处理工具箱只有部分支持,而Matlab引擎对Matlab具有全功能调用功能,包括对于数字图像和通信对象处理的支持,故本文选用Matlab引擎来实现基于VC++和Matlab的障碍物检测系统研发平台。

2 障碍物检测系统的设计与实现
2.1 Matlab和VC接口编译环境的设置
    在VC的集成环境中,如要实现与Matlab引擎之间的通信,需要对VC的编译环境进行一些设置,例如:为VC工程添加Matlab头文件、添加Matlab库文件等等。
2.2 VC中调用Matlab引擎的设置及程序实现
    在VC中利用Matlab引擎进行图像处理,首先需要在程序中进行一些基本定义,如在使用Matlab引擎类的cpp文件中首先添加语句#inclu-de“engine.h”以及#include“matrix.h”,需要用Engine*m_ep定义Matlab引擎,用m_ep=engOpen(NULL)语句启动Matlab引擎;最后还要用engClose(m_ep)语句关闭Matlab引擎等。
    本文研究的障碍物检测系统主要是先利用双目立体视觉来检测障碍物的位置及距离等信息,并对移动机器人的双摄像机进行控制来采集图像对,然后对图像进行一系列的处理。其软件设计采用模块化开发思想,主要包括图像采集模块、边缘特征提取模块、Otsu图像分割模块、摄像机标定模块、立体匹配模块和三维重建模块。障碍物检测系统主界面如图1所示。


    图像Otsu分割Matlab图像处理部分源程序为:
   


3 障碍物检测系统检测过程及结果
    图2~5为障碍物检测系统的处理过程,即从获取实时图像、图像预处理、障碍物特征提取、特征点匹配等过程,最后通过视差法计算出障碍物的位置坐标,从而为决策控制提供必要的信息。表1为检测到的障碍物中的部分点坐标。



4 结束语
    本文利用Matlab和VC++混合编程的方法,将VC++的可视化图形界面功能和MATLAB的强大图像处理功能有机的结合起来,设计出移动机器人障碍物检测系统软件开发平台。在实际的科研中,省去了编写一些复杂烦琐的图像算法代码,可以为熟悉VC语言的工程技术开发实用图像处理算法研究提供方便;利用Matlab引擎可以简单有效的实现在VC中调用Matlab的功能,因此提高了效率,缩短了软件开发周期。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

一直以来,EDA都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来EDA软件的相关介绍,详细内容请看下文。

关键字: EDA SPICE MATLAB

太阳能供电应用系统的设计需要考虑多个方面,包括太阳能电池板、储能装置、控制模块等。本文将介绍一种基于太阳能供电的应用系统设计方法,并从这几个方面进行详细阐述。

关键字: 太阳能 系统设计

北京2023年8月15日 /美通社/ -- 日前,在第五届OCP China Day 2023(开放计算中国技术峰会)上,浪潮信息正式推出融合架构3.0原型系统,以开创性的系统架构设计实现了计算资源、存储资源、...

关键字: 系统设计 内存 软件定义 数据中心

北京2023年8月7日 /美通社/ -- 随着大模型智能水平的提升,AIGC所需要的算力在不断增长。大模型的参数量超过千亿,甚至突破万亿级别,预计智算中心将迎来更快发展。IDC预测,2022-2026年,全球AI计算市场...

关键字: CHINA 数据中心 AI 系统设计

无论温度怎么变化始终UCQ1=UCQ2,电路以两只管子集电极电位差作为输出,就克服了温漂 当u11=u12(共模信号)T1管和T2管所产生的电流变化相等;因此集电极电位的变化也相等。

关键字: 差分放大器 系统设计 电极电位

在科研以及应用软件领域,LabVIEW和MATLAB作为比较常用的2款工具,相信很多人都用过吧。简单的概括一下,LabVIEW侧重测试测量和数据采集,MATLAB侧重科学计算和数据分析。

关键字: LabVIEW matlab 混合编程

评估板(EVB)及其配套软件具有即插即用功能,可轻松评估ADI产品的性能。其图形用户界面(GUI)提供了直观的方式,可进行手动配置并与该设备通信。但是,在更复杂的产品中,如果不能自动处理这些重复性任务,那么在评估所有可用...

关键字: ADI Python MATLAB

摘要:随着社会不断发展,传统化石能源已经无法满足日益增长的能源需求,基于这一情况,光伏电源的使用逐渐变多。而高渗透率的光伏电源出力大于负荷的消耗时,配电网的电压波动影响会变大,网络发生故障而造成部分负荷失电停止运行后也会...

关键字: 光伏电源 电压分布 MATLAB

大家好,我是鲏。认识我的朋友都知道,我是一个实践派,相比研究枯燥的理论知识,我更喜欢做自己想做的项目,用技术来实现自己的想法的感觉真的很棒。所以从大学期间一直到现在,除了工作中的项目外,我依然保持着自己做项目的习惯,有坚...

关键字: 系统设计 技术选型 需求分析

(全球TMT2022年8月30日讯)近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部件的最...

关键字: 系统设计 英特尔 数据中心 生态系统
关闭
关闭