轮式移动机器人QBot的使用
夏季学期选了智能移动机器人导论课程,开始接触移动机器人。作为一门面向大二、大三学生的一门导论式的课程,课程作业其实并不太难,然而我们为了完成课程作业,前前后后还是弄了好几个星期,以至放了暑假都还要和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的安装为例简要说明:
- 安装Visual Studio 2010~2012 中的一个版本,微软良心,Visual Studio的安装非常省心,这里不多说,值得注意的是,QUARC 2.4.878是不支持Visual Studio 2013的;(安装VS是因为QUARC是依赖于VS的)
- 双击install_quarc安装,会弹出一个Compatibility Checking窗口提示是否通过了软件的检查,如果没有通过检查,则要倒回去看看是不是Matlab或者Visual Studio的安装不成功;
- 选择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的使用的更多相关文章
- ROS探索总结(三)——ROS新手教程【转】
转自:http://blog.csdn.net/hcx25909/article/details/8811313 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一ROS的 ...
- AGV
AGV AGV是(Automated Guided Vehicle)的缩写,意即“自动导引运输车”,是指装备有电磁或光学等自动导引装置,它能够沿规定的导引路径行驶,具有安全保护以及各种移载功能的运输车 ...
- 使用robot_pose_ekf对传感器信息融合
robot_pose_ekf是ROS Navigation stack中的一个包,通过扩展卡尔曼滤波器对imu.里程计odom.视觉里程计vo的数据进行融合,来估计平面移动机器人的真实位置姿态,输出o ...
- MM-RGV、AGV 、IGV是什么
RGV.AGV.IGV是什么 智能化物流仓储设备迅速崛起的时代,RGV.AGV.IGV,这三种看似有血缘关系的智能设备,到底有什么不同呢? RGV RGV即“有轨制导车辆”,又叫有轨穿梭小车,是与地面 ...
- ROS探索总结(三)——ROS新手教程
转自古-月 http://blog.csdn.net/hcx25909 前面我们介绍了ROS的特点和结构,接下来就要开始准备动手感受一下ROS的强大了. ROS官网的wiki上针对新手的教程很详细,最 ...
- zz“老司机”成长之路:自动驾驶车辆调试实践
随着自动驾驶技术的发展,一辆新车从被改装到上路需要经过的调试流程也有了许多提升.今天,我希望结合自己之前的调车经验来跟大家分享一下我们是如何将系统的各个模块逐步上车.调试.集成,进而将一辆“新手”车培 ...
- 人工智能与智能系统3-> 机器人学3 | 移动机器人平台
机器人学的基本工具已经了解完毕,现在开始了解移动机器人,这部分包括机器人平台.导航.定位. 所谓机器人平台就是指机器人的物理结构及其驱动方式.本文将学习两种典型移动机器人平台(四旋翼和轮式车)的运动与 ...
- css3实践之摩天轮式图片轮播+3D正方体+3D标签云(perspective、transform-style、perspective-origin)
本文主要通过摩天轮式图片轮播的例子来讲解与css3 3D有关的一些属性. demo预览: 摩天轮式图片轮播(貌似没兼容360 最好用chrome) 3D正方体(chrome only) 3D标签云(c ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——3.轮式里程计与运动控制
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
随机推荐
- SQL 批量字符串替换
--在SQL SERVER中批量替换字符串的方法 update table[表名] set Fields[字段名]=replace(Fields[字段名],'被替换原内容','要替换成的内容') up ...
- ajax请求跨域问题
ajax跨域,这个是面试的时候常被问到,也是在做项目的时候会遇到的问题,在之前的项目中就有遇到过,这里根据经验写了三种分享下 1.使用中间层过渡的方式 简单来说就是"后台代理",把 ...
- Azure开发者任务之七:在Azure托管服务中托管WCF服务角色
在一个托管服务中托管一个WCF服务角色和托管一个ASP.Net Web Role基本类似. 在上一篇文章中,我们学习了如何使用WCF Service Web Role. 在本文中,我会对上一篇文章进行 ...
- ahjesus 安装mongodb企业版for ubuntu
导入共匙 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 创建源列表 echo 'deb http ...
- 打印机问题win7 和xp
服务器端问题,重启如下服务 net stop "print spooler" net start "print spooler" gpedit.msc 本地计算 ...
- centos下完全卸载mysql
版权声明:本文为博主原创文章,未经博主允许不得转载. yum方式安装的MySQL 1.yum remove mysql mysql-server mysql-libs compat-mysql51 2 ...
- __proto__
proto 以前要访问原型, 必须使用构造函数来实现. 无法直接使用实例对象来访问原型. 火狐最早引入属性 __proto__ 表示使用实例对象引用原型. 但是早期是非标准的. 通过该属性可以允许使用 ...
- 初学Node(三)模块系统
模块系统 Node根据CommonJS规范实现了一套自己的模块机制,可以使用require()导入一个模块,使用module.exports导出一个模块. require使用 在Node中我们可以使用 ...
- SharePoint 2010 文档管理之过期归档工具
前言:使用过SharePoint的人都知道,SharePoint对于操作是便捷的,但是对于数据量承载却是不令人满意的,这样,就要求我们需要更加合理的使用,规范大家的使用规则和习惯,所以,定期清理不必要 ...
- .NET下单文件的上传处理
ASP.NET的单文件上传使用控件 <asp:FileUpload ID="upmess" runat="server" Width="248p ...