夏季學期選了智能移動機器人導論課程,開始接觸移動機器人。作為一門面向大二、大三學生的一門導論式的課程,課程作業其實並不太難,然而我們為了完成課程作業,前前后后還是弄了好幾個星期,以至放了暑假都還要和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、本文僅供參考。
