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

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

1、Qbot简介

Qbot全称Quanser 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地址,如下图:

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,如下图。

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

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,开始你的机器人旅程吧!

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,保存退出,如下图。

如果没有安装该编译器的话,再次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)

    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为例)

    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为例)

    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、本文仅供参考。

轮式移动机器人QBot的使用的更多相关文章

  1. ROS探索总结(三)——ROS新手教程【转】

    转自:http://blog.csdn.net/hcx25909/article/details/8811313 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 一ROS的 ...

  2. AGV

    AGV AGV是(Automated Guided Vehicle)的缩写,意即“自动导引运输车”,是指装备有电磁或光学等自动导引装置,它能够沿规定的导引路径行驶,具有安全保护以及各种移载功能的运输车 ...

  3. 使用robot_pose_ekf对传感器信息融合

    robot_pose_ekf是ROS Navigation stack中的一个包,通过扩展卡尔曼滤波器对imu.里程计odom.视觉里程计vo的数据进行融合,来估计平面移动机器人的真实位置姿态,输出o ...

  4. MM-RGV、AGV 、IGV是什么

    RGV.AGV.IGV是什么 智能化物流仓储设备迅速崛起的时代,RGV.AGV.IGV,这三种看似有血缘关系的智能设备,到底有什么不同呢? RGV RGV即“有轨制导车辆”,又叫有轨穿梭小车,是与地面 ...

  5. ROS探索总结(三)——ROS新手教程

    转自古-月 http://blog.csdn.net/hcx25909 前面我们介绍了ROS的特点和结构,接下来就要开始准备动手感受一下ROS的强大了. ROS官网的wiki上针对新手的教程很详细,最 ...

  6. zz“老司机”成长之路:自动驾驶车辆调试实践

    随着自动驾驶技术的发展,一辆新车从被改装到上路需要经过的调试流程也有了许多提升.今天,我希望结合自己之前的调车经验来跟大家分享一下我们是如何将系统的各个模块逐步上车.调试.集成,进而将一辆“新手”车培 ...

  7. 人工智能与智能系统3-> 机器人学3 | 移动机器人平台

    机器人学的基本工具已经了解完毕,现在开始了解移动机器人,这部分包括机器人平台.导航.定位. 所谓机器人平台就是指机器人的物理结构及其驱动方式.本文将学习两种典型移动机器人平台(四旋翼和轮式车)的运动与 ...

  8. css3实践之摩天轮式图片轮播+3D正方体+3D标签云(perspective、transform-style、perspective-origin)

    本文主要通过摩天轮式图片轮播的例子来讲解与css3 3D有关的一些属性. demo预览: 摩天轮式图片轮播(貌似没兼容360 最好用chrome) 3D正方体(chrome only) 3D标签云(c ...

  9. SLAM+语音机器人DIY系列:(三)感知与大脑——3.轮式里程计与运动控制

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

随机推荐

  1. Hyperion Business Modeling for Microsoft Windows (32-bit)

    介质包搜索 常见问题    说明   复查 许可证列表 以确定需要下载的产品程序包. 请选择产品程序包和平台,然后单击“查找”. 如果只有一项结果,则可以看到下载页.如果有多个结果,请选择一个,然后单 ...

  2. Insus Search Utility Ver2

    一个搜索组件,虽然不是很强大,但它到现在为止,已经是第二个版本了.前一版本:http://www.cnblogs.com/insus/archive/2011/03/30/1999759.html此版 ...

  3. Microsecond and Millisecond C# Timer[转]

    文章转至:http://www.codeproject.com/Articles/98346/Microsecond-and-Millisecond-NET-Timer IntroductionAny ...

  4. AppCan可以视为Rexsee的存活版

    今天看到地宝的几个APP用appcan做的,我顿时惊呆了. 1. 走的同样是中间件的模式,支持原生UI界面的访问: 2. 在线打包的方式,进行资源的限制,以便商业化支持:

  5. 状态压缩DP--Mondriaan's Dream

    题目网址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=110044#problem/A Description Squares and ...

  6. Verilog学习笔记设计和验证篇(一)...............总线和流水线

    总线 总线是运算部件之间数据流通的公共通道.在硬线逻辑构成的运算电路中只要电路的规模允许可以比较自由的确定总线的位宽,从而大大的提高数据流通的速度.各个运算部件和数据寄存器组可以通过带有控制端的三态门 ...

  7. ahjesus解决win下U盘无法写入的问题

    可能是由于不同品牌的U盘出厂时磁盘分区和格式化方式不同而引起的兼容性问题.解决方案如下 启动cmd.输入diskpart,启动DISKPART工具 在DISKPART窗口中输入以下命令: >li ...

  8. IT外包行业与职业发展

          在IT行业,总是有一些IT外包公司的存在,凡是存在的都是合理的.当你做为IT从业人员应该尽量避免去外包公司工作 .特别是你从事软件开发工作.     先来说说缘由,一些外包公司本来是从事软 ...

  9. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...

  10. 2004-输入一个百分制的成绩t,将其转换成对应的等级

    ,具体转换规则如下: 90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E; 如果输入数据不在0~100范围内,请输出一行:“Score is error!”. 这题 ...