找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 10609|回复: 3

借助微软MSRDS软件,乐高机器人有了机器视觉

[复制链接]
发表于 2012-6-9 15:12:10 | 显示全部楼层 |阅读模式
全景图.jpg
   原本略显神秘的,比较“高科技”的机器视觉,没想到有一天,我也可以体验一把,采用微软MSRDS软件做了一个入门实验。实验内容是:用PC摄像头,判断物体的蓝色色块中心是否偏离摄像头视野的X轴中央位置,如果偏离,则乐高NXT电机会带动摄像头向反方向偏转,以消除偏差。如上图。
实验视频:

   
    下面介绍MSRDS软件中,与机器视觉相关的两个服务元件,WebCam与ColorSegment。见下图。
视觉元件.jpg
   把WebCam服务元件的属性设定其Configuration为[Set initial configuration]。点开WebCamState与ImageSize项目,设定视觉摄像头的长宽像素为320×240像素。
WebCam.jpg
    ColorSegment元件的作用是依据颜色特征来把视野中的物体划分为色块,ColorSegment服务元件的属性设定其Configuration为[Set initial configuration]。点开Partners项目,设定其WebCam为既有的WebCam服务元件。点开Settings项目,设定阀值Threshold为1.25,最小色块MinBlobSize为50 。
ColorSegment元件设置.jpg
    按下菜单工具栏中的启动按钮,或者按F5热键,运行DSS服务。
启动按钮.jpg
    在Run窗口,逐个寻找各行“Service started”的记录,点击其左侧的“-”符号便可看到对应的服务元件网址,现在要找到ColorSegment元件的浏览器监*控网页,并点击它。我发现有些浏览器显示的ColorSegment元件浏览器监*控网页,对它进行操作时,有些问题,后来我用了360安全浏览器,问题解决了。
run窗口.jpg
    随之出现的浏览器页面,左侧的Source Image栏可看到摄像头的影像,我取出LEGO9797机器人套件中的蓝色球,放在白纸上,让摄像头辨识。
    下面左侧窗口是Source Image栏,显示是摄像头视野里的真实物体;右侧窗口是Segmented Image栏,显示物体辨识后的色块。
color识别.jpg
    按下监*控网页的Control栏的[Start]按钮,让摄像头开始进入侦测模式。在左侧的Source Image栏显示的蓝色球区域内,用鼠标拉出一矩形框,包含住蓝色球的大部分色块。
包含住蓝色球.jpg
    在Color Definitions栏的Add Entry位置,填入自订的色块名称,比如blue,并按下[Add]按钮,在按下[Add]按钮前不可移动蓝色球,以免定义到的色块颜色值错误。
    按下[Add]按钮后,右侧的Segmented Image栏才会出现辨识的色块,之前这个栏里显示“Segmented Image Available”的字样。此时,您移动摄像头视野里的蓝色球,辨识出的色块应该也会跟随蓝色球移动,这样就可以确定,通过跟踪色块的方法,来跟踪蓝色球,是否可行。
    在Color Definitions栏的Add Entry位置,填入自订的色块名称,比如blue,并按下[Add]按钮,在按下[Add]按钮前不可移动蓝色球,以免定义到的色块颜色值错误。
    按下[Add]按钮后,右侧的Segmented Image栏才会出现辨识的色块,之前这个栏里显示“Segmented Image Available”的字样。此时,您移动摄像头视野里的蓝色球,辨识出的色块应该也会跟随蓝色球移动,这样就可以确定,通过跟踪色块的方法,来跟踪蓝色球,是否可行。
辨识的颜色值.jpg
    把上图用红色下划线标注的新增的“blue”色块颜色值,记在纸上,然后停止DSS服务,回到ColorSegment元件的属性设置区,点击Colors栏右方的“+”符号,其下的ColorSet栏位Name设为blue,再点击Color旁和ColorDefinition旁的“+”符号,随之会打开参数栏,这时您可以根据刚刚在纸上抄下来的颜色值,按顺序一一填写。

    从库里拖出if元件和“LegoNXTBrickv2”NXT控制器以及“LegoNXTMotorv2”单电机元件。并按照程序全景图,进行元件连线和连接设置。
程序.jpg
    在if活动元件的判断式填写“Areas[0].CenterX>190”与“Areas[0].CenterX<130”,形成3个条件情况,Areas[0]为辨识时摄像头发现的最大色块。
    如果色块中心的位置大于190,说明物体向右偏离摄像头视野X轴中央位置,则应给A电机设置功率为-0.1,让电机左转。如果色块中心的位置小于130,则给A电机设置功率为0.1,电机右转,从而补偿偏差,跟踪蓝色球。如果色块中心的位置大于130,并且小于190,则电机功率为0,摄像头不偏转。
    if元件和“LegoNXTBrickv2”NXT控制器、“LegoNXTMotorv2”单电机元件的详细使用,以及MSRDS软件与乐高机器人蓝牙联机运行方法,见博客文章《 微软XBOX手柄遥控乐高机械手车的MSRDS编程详解 》,网址:http://www.eefocus.com/zhang700309/blog/12-05/279205_eb30b.html
    程序编写完毕后,按下键盘F5按键,启动DSS服务,并由蓝牙连接实体NXT机器人。NXT机器人控制器“嘟”的一声,说明程序连接成功,这时您在摄像头前左右移动蓝色球体,看看!NXT机器人会随之旋转并带动摄像头追踪蓝色球体。
    这个实验的MSRDS程序,请下载: colorApplication.zip (9.06 KB, 下载次数: 15)
    对这些“高科技”好玩的技术,我也不是无师自通的,其实这些创客类技术,在台湾比较流行,可能是台湾跟国际潮流比较紧吧。对于微软这个机器人专业软件MSRDS,台湾入门书籍有两本不错,可以在淘宝,用繁体字搜索下,再买来看看,不过书籍的价格比较贵,当然看我博客,是最经济的方法,但不可能要求全面啊。
图片4.jpg
   这个有机器视觉的乐高NXT机器人作品,我给出3张图,看是否可以根据它们搭建出这个作品来,但实际上对于新手肯定还是困难,要经过适当的训练,起码要知道图中显示出的是哪些零件,这些零件的搭建特点是什么?有点基础以后,看着图,硬着头皮试着搭建,逐渐会柳暗花明的。

图片1.jpg 图片2.jpg 图片3.jpg
从上面搭建图可以看出,一个大的黑色圆盘齿轮被压在下面,NXT电机通过三个灰色中等大小的齿轮传动,驱动了一个小齿轮,这个小齿轮与圆盘齿轮内环齿啮合,使圆盘齿轮的转动,进而带动上面的控制器、电机和摄像头的转动。注意,小齿轮与圆盘齿轮内环齿啮合的细节在图上是看不到的,这就需要搭建时,琢磨下,于是会豁然明了的,这可能也是乐高积木创意的乐趣所在。


辨识的颜色值.jpg
ColorSegment元件设置.jpg
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-6-10 21:34:11 | 显示全部楼层
好东西,受教了 ,,,
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2012-6-26 21:13:16 | 显示全部楼层
可以连上超声波测距,在坦克上自动打靶。无敌了。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2016-6-10 10:17:29 | 显示全部楼层
很不错的贴子,让乐高可以更有想象力。
另外,想请教个问题,就是对于EV3的拓展,用什么软件和那一种语言比较好,比如数字识别和声音识别方面的。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2025-6-29 07:33 , Processed in 0.148669 second(s), 26 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表