轮式移动机器人QBot的使用

夏季学期选了智能移动机器人导论课程,开始接触移动机器人。作为一门面向大二、大三学生的一门导论式的课程,课程作业其实并不太难,然而我们为了完成课程作业,前前后后还是弄了好几个星期,以至放了暑假都还要和Qbot在学校呆一段时间。这是为什么呢?网上关于Qbot的资料少得可怜。无论在百度、必应还是谷歌,以Qbot为关键词几乎搜不到任何有关的资料,甚至连官方网站都不再提供Qbot的支持,因为人家已经升级到Qbot 2了╮(╯-╰)╭

不过最后磕磕绊绊还是搞出来了,这里就把一些经验写下来,算是对Qbot的资料补充吧。其他学校不清楚,但是我校学弟学妹应该还是很需要这样的东西的。

1、Qbot简介

Qbot全称Quanser Qbot,是一个类似于扫地机器人的轮式移动机器人,拥有两个独立的驱动轮,一个万向随动轮,一个定向随动轮,配置有五个距离传感器,一个摄像头,一个压力传感器。除此之外,Qbot还提供外接传感器的接口。Qbot大概长下面这样:

轮式移动机器人QBot的使用

对Qbot的控制和编程主要通过Matlab Simulink进行,当然,官方会提供一些已经写好了的Simulink模块(需要安装QUARC)。Qbot自带WiFi热点,PC通过连接Qbot的WiFi热点来和Qbot通信。

2、开发环境配置

上面说到要控制Qbot需要通过Matlab Simulink,同时还依赖于QUARC,因此开发环境的配置主要是安装QUARC和Matlab。另外,还有模块的配置。

    1、Matlab的安装

QUARC支持的Matlab版本为2012~2014,因此需要安装这之间版本的Matlab。安装Matlab又是一个深坑,不过网上关于Matlab安装过程中的各种问题都有了较好的解决方案了,如果遇到问题,直接百度就好。我安装Matlab 2014a时曾遇到"找不到VCREDIST.MSI"的问题,在这个帖子的3L找到解决方案,如果各位同样遇到这个问题,可以参考一下。

      2、QUARC的安装

    老师提供的QUARC程序版本为2.4.878,在官网我没有找到QUARC程序的下载页面。下边就以QUARC 2.4.878的安装为例简要说明:

  1. 安装Visual Studio 2010~2012 中的一个版本,微软良心,Visual Studio的安装非常省心,这里不多说,值得注意的是,QUARC 2.4.878是不支持Visual Studio 2013的;(安装VS是因为QUARC是依赖于VS的)
  2. 双击install_quarc安装,会弹出一个Compatibility Checking窗口提示是否通过了软件的检查,如果没有通过检查,则要倒回去看看是不是Matlab或者Visual Studio的安装不成功;
  3. 选择license进行认证,license文件后缀为lic;

      3、Simulink模块的配置

好了,安装完上面三个软件以后,就可以开始连接Qbot了。点开网络连接,查看无线网里是否有一个名为GSAH的网络,如果有直接连接,如果没有,则需要按手动添加该网络。实测win7、win8均能搜到该网络,win8.1则无法搜到。因此如果你的操作系统是win8.1 需要按照如下步骤手动添加GSAH网络(参考):

1.打开cmd,输入:netsh wlan show networks,确定有GSAH这个网

2.打开网络和共享中心/设置新的连接或网络/手动连接到无线网络/网络名:GSAH,安全类型:无身份验证(开放式)/下一步/关闭

3.在cmd中运行:netsh wlan set profileparameter GSAH connectiontype=ibss

4.以后每次跑程序只要在cmd中:netsh wlan connect GSAH

5.断开:netsh wlan disconnect

6.要清除以上设置 :netsh wlan delete profile GSAH

然后打开网络共享中心修改IP地址,如下图:

轮式移动机器人QBot的使用

IP地址的范围为:182.168.1.10 ~ 182.168.1.19,如果同时有多台电脑连接,注意IP地址不要冲突。

保存以后,不妨来ping一下Qbot,看看是否已经连接上了。Qbot的IP地址印刷在后部,范围为182.168.1.20 ~ 182.168.1.254

确认已经连接上以后,可以打开一个Simulink模块开始尝试了。例如打开expriment1文件夹中的exp1_cal_d.mdl,如下图。

轮式移动机器人QBot的使用

点击QUARC菜单,选择OPTIONS,或者点击Simulation ,选择Model Configration Parameters,打开配置窗口,如下图。

轮式移动机器人QBot的使用

Code Genetation 中System target file 通过点击Browse…选择quarc_linux_verdex.tlc,interface中MEX-file arguments填写为'-w -d /tmp -uri %u','tcpip://182.168.1.63:17001',注意IP地址应改为对应Qbot的地址。然后就可以开始bulid,然后连接Qbot,开始你的机器人旅程吧!

轮式移动机器人QBot的使用

Bulid的过程中可能会报一些错误,如果你的Simulink模块中使用了变量(即字母),则在bulid之前,必须要在Matlab命令行中定义并给该变量赋值,否则会报错;除此之外,interface中MEX-file arguments中的命令格式错误也会报错,注意该命令中的所有标点均为半角,并且没有空格和制表符,如果实在查不出来的话,可以直接复制上面的命令修改IP地址后使用。连接的过程中也会报错,一般原因为interface中MEX-file arguments中IP地址填写错误或者Qbot没有运行相应程序,此时只需再次审察该命令,或者重新bulid,如果仍然无法连接,可尝试重启Qbot,重新连接GSAH,并在ping通之后再进行连接操作。

如果使用了视觉相关的模块,还可能会报出编译器的错误,这是需要打开配置页面,Code Genetation->QUARC,Compiler一栏下拉选择CodeSourcery Lite,保存退出,如下图。

轮式移动机器人QBot的使用

如果没有安装该编译器的话,再次bulid会提示找不到编译器,因此需要安装该编译器。将CodeSourcery Lite编译器的文件夹codesourcery拷贝到 {安装目录}\Quanser\QUARC\mingw32\msys\1.0\local\crosstool下,再次build即可。(该编译器文件夹由老师提供,可以在下载)

三、常用模块介绍

Quanser给的三个实验里(\Curriculum\Experiment 1,\Curriculum\Experiment 2,\Curriculum\Experiment 3)其实有大量已经build通过的模块,一般可以通过对这些模块的部分进行组合来快速达到既定目的。下面简单介绍一些我经常使用的一些模块:

  1、运动控制(\Curriculum\Experiment 2\Controllers\Exp2_Reactive_Motion_Planning_Polar_Hist.mdl)

轮式移动机器人QBot的使用

    x0、y0、theta0:Qbot初始位姿;

    right_vel、left_vel:右、左轮速度;

    x、y、theta:Qbot当前位姿;

    irrange:五个距离传感器返回的距离值(五维向量).

  2、路径规划(以\Curriculum\Experiment 2\Controllers\Exp2_Reactive_Motion_Planning_Polar_Hist.mdl为例)

轮式移动机器人QBot的使用

    target_xy:目标位置;

    robot_xyt:Qbot当前位姿;

    vlimit:车轮限速;

    dist_thr:距离允许误差;

    ang_thr:角度允许误差;

    hist、ir_heading:配合避障模块使用,如不使用可直接将相关代码注释掉;

    method:路径规划方法,取值为1、2,1:简单的旋转调整姿态,2:极坐标控制;

    right_vel、left_vel:右、左轮速度;

    target_distance:距目标位置的距离.

  3、避障(以\Curriculum\Experiment 2\Controllers\Exp2_Reactive_Motion_Planning_Polar_Hist.mdl为例)

轮式移动机器人QBot的使用

    robot_xyt:Qbot当前位姿;

    ir_range:距离传感器的返回值(五维向量);

    dist_th:Polar Histogram算法中的the maximum IR range(实在不知道该翻译成什么),默认取150;

    hist、ir_heading:传递给路径规划模块实现避障.

  此外还有\Curriculum\Experiment 3中的视觉模块也很常用,但只在设计视觉相关的功能时才会用到,而且输入输出和上面三个是相通的,因此这里不再介绍。

Enjoy it!

注:1、如果你能得到Qbot的话,本文中的所有资源应该都有渠道获得,因此这里不提供任何资源的下载;

  2、本文仅供参考。

上一篇:endsWith和startsWith同样效果其他形式的写法(2016.1.12)


下一篇:JVM的生命周期