宜昌老张

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

0
阅读(3312)

    原本略显神秘的,比较“高科技”的机器视觉,没想到有一天,我也可以体验一把,采用微软MSRDS软件做了一个入门实验。实验内容是:用PC摄像头,判断物体的蓝色色块中心是否偏离摄像头视野的X轴中央位置,如果偏离,则乐高NXT电机会带动摄像头向反方向偏转,以消除偏差。如上图。

实验视频:

    微软高清摄像头网址:http://item.taobao.com/item.htm?id=8373607177&_u=5con830c7ad

    乐高9797+9695机器人套件,网址:

http://item.taobao.com/item.htm?id=12941550436&

    下面介绍MSRDS软件中,与机器视觉相关的两个服务元件,WebCam与ColorSegment。见下图。


   把WebCam服务元件的属性设定其Configuration为[Set initial configuration]。点开WebCamState与ImageSize项目,设定视觉摄像头的长宽像素为320×240像素。


    ColorSegment元件的作用是依据颜色特征来把视野中的物体划分为色块,ColorSegment服务元件的属性设定其Configuration为[Set initial configuration]。点开Partners项目,设定其WebCam为既有的WebCam服务元件。点开Settings项目,设定阀值Threshold为1.25,最小色块MinBlobSize为50 。


    按下菜单工具栏中的启动按钮,或者按F5热键,运行DSS服务。


    在Run窗口,逐个寻找各行“Service started”的记录,点击其左侧的“-”符号便可看到对应的服务元件网址,现在要找到ColorSegment元件的浏览器监控网页,并点击它。我发现有些浏览器显示的ColorSegment元件浏览器监控网页,对它进行操作时,有些问题,后来我用了360安全浏览器,问题解决了。


    随之出现的浏览器页面,左侧的Source Image栏可看到摄像头的影像,我取出LEGO9797机器人套件中的蓝色球,放在白纸上,让摄像头辨识。

    下面左侧窗口是Source Image栏,显示是摄像头视野里的真实物体;右侧窗口是Segmented Image栏,显示物体辨识后的色块。


    按下监控网页的Control栏的[Start]按钮,让摄像头开始进入侦测模式。在左侧的Source Image栏显示的蓝色球区域内,用鼠标拉出一矩形框,包含住蓝色球的大部分色块。


    在Color Definitions栏的Add Entry位置,填入自订的色块名称,比如blue,并按下[Add]按钮,在按下[Add]按钮前不可移动蓝色球,以免定义到的色块颜色值错误。

    按下[Add]按钮后,右侧的Segmented Image栏才会出现辨识的色块,之前这个栏里显示“Segmented Image Available”的字样。此时,您移动摄像头视野里的蓝色球,辨识出的色块应该也会跟随蓝色球移动,这样就可以确定,通过跟踪色块的方法,来跟踪蓝色球,是否可行。


    把上图用红色下划线标注的新增的“blue”色块颜色值,记在纸上,然后停止DSS服务,回到ColorSegment元件的属性设置区,点击Colors栏右方的“+”符号,其下的ColorSet栏位Name设为blue,再点击Color旁和ColorDefinition旁的“+”符号,随之会打开参数栏,这时您可以根据刚刚在纸上抄下来的颜色值,按顺序一一填写。

     从库里拖出if元件和“LegoNXTBrickv2”NXT控制器以及“LegoNXTMotorv2”单电机元件。并按照程序全景图,进行元件连线和连接设置。


    在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软件与乐高机器人蓝牙联机运行方法,见博客文章《基于微软MSRDS的XBOX手柄操控乐高机械手车的编程》,网址:http://blog.chinaaet.com/detail/27568.html

    程序编写完毕后,按下键盘F5按键,启动DSS服务,并由蓝牙连接实体NXT机器人。NXT机器人控制器“嘟”的一声,说明程序连接成功,这时您在摄像头前左右移动蓝色球体,看看!NXT机器人会随之旋转并带动摄像头追踪蓝色球体。

    这个实验的MSRDS程序,请下载:3521852839600.zip

    对这些“高科技”好玩的技术,我也不是无师自通的,其实这些创客类技术,在台湾比较流行,可能是台湾跟国际潮流比较紧吧。对于微软这个机器人专业软件MSRDS,台湾入门书籍有两本不错,可以在淘宝,用繁体字搜索下,再买来看看,不过书籍的价格比较贵,当然看我博客,是最经济的方法,但不可能要求全面啊。

     这个有机器视觉的乐高NXT机器人作品,我给出3张图,看是否可以根据它们搭建出这个作品来,但实际上对于新手肯定还是困难,要经过适当的训练,起码要知道图中显示出的是哪些零件,这些零件的搭建特点是什么?有点基础以后,看着图,硬着头皮试着搭建,逐渐会柳暗花明的。

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