夏季学期选了智能移动机器人导论课程,开始接触移动机器人。作为一门面向大二、大三学生的一门导论式的课程,课程作业其实并不太难,然而我们为了完成课程作业,前前后后还是弄了好几个星期,以至放了暑假都还要和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. UnityShader快速上手指南(三)

    简介 这一篇还是一些基本的shader操作:裁剪.透明和法向量的应用 (纠结了很久写不写这些,因为代码很简单,主要是些概念上的东西) 先来看下大概的效果图:(从左到右依次是裁剪,透明,加了法向量的透明 ...

  2. 怎样在C#中从数据库中读取数据(数据读取器)

    实现在C#中通过语句,查询数据库中的数据 SqlConnection con = null; //创建SqlConnection 的对象 try    //try里面放可能出现错误的代码        ...

  3. 重新想象 Windows 8 Store Apps (71) - 其它: C# 调用 C++

    [源码下载] 重新想象 Windows 8 Store Apps (71) - 其它: C# 调用 C++ 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 其它 C# ...

  4. 【洛谷 P3385】模板-负环(图论--spfa)

    题目:有一个图有N个顶点,M条边.边用三个整数a b w表示,意思为a->b有一条权值为w的边(若w<0则为单向,否则双向).共T组数据.对于每组数据,存在负环则输出一行"YE5 ...

  5. 在Hadoop平台跑python脚本

    1.开发IDE,我使用的是PyCharm. 2.运行原理       使用python写MapReduce的“诀窍”是利用Hadoop流的API,通过STDIN(标准输入).STDOUT(标准输出)在 ...

  6. 【GOF23设计模式】模板方法模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_模板方法模式.钩子函数.方法回调.好莱坞原则 package com.test.templateMethod; publi ...

  7. [.NET] SQL数据分页查询

    [.NET] SQL数据分页查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. ...

  8. Java学习笔记之_JDBC

    JDBC简介 1.SUN公司为了简化,统一数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC 2.数据库驱动 3.JDBC全称为:JAVA DataBase Commectivity(j ...

  9. SilverLight MD5加密

    效果体验:http://keleyi.com/tool/md5.htm 嵌入页面的代码: <div style="width:400px;height:230px"> ...

  10. jquery 监控文本框键盘事件(回车事件),附常用keycode值。

    $(function(){ $(".search").keydown(function(event) { ) { //执行操作 } }) ); 完整的 key press 过程分为 ...