0、機器人組成的理論知識
機器人是一個機電一體化的裝置,從控制的角度來看,機器人系統可以分為四大部分,即執行機構、驅動系統、傳感系統和控制系統。

1、 執行機構:人體的手和腳,直接面向工作對象的機械裝置;
2、驅動系統:人體的肌肉和筋絡,負責驅動執行機構,将控制系統下達的指令轉換成執行機構需要的信号;
3、傳感系統:人體的感官和神經,主要完成信号的輸入和回報,包括内部傳感器(裡程計、IMU等)和外部傳感器系統(攝像頭、雷射雷達等);
4、控制系統:人體的大腦,實作任務即資訊的處理,輸出控制指令信号;控制系統需要基于處理器(樹梅派、工控機、TK2等)實作,在處理器之上,控制系統需要完成機器人的算法處理、關節控制、人機互動等豐富的功能;
開始搭建自己機器人平台啦!!
逛了幾家淘寶店後,標明了 rikirobot智能機器人 家的兩驅三輪 ,全套(深度攝像頭+雷射雷達+工控機+驅動闆+小車平台)下來得5600,精打細算發現隻買小車平台+stm32的驅動闆,其他的單獨配省不少錢 嘿嘿~
免費為rikirobot做個廣告吧
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.757b2e8d4pteRI&id=546026210769&_u=6nk2em3f0c6
一、執行機構
平台直接買的rikirobot家的機器人(平台+stm32驅動闆)。平台本體由三層空間構成,使用鋁合金闆切割拼裝,執行機構比較簡單,有兩個直流電機帶動主動輪,配合一個從動輪實作機器人的移動。
二、驅動系統
riki 的平台搭載了如圖所示的底層驅動闆,其中內建了電源驅動、電機驅動、姿态傳感器接口等底層驅動功能;
1、電源子系統
按胡博士的說法,一般的機器人平台需要有個電源子系統,但是riki家的電源是 12V 2800mah的锂電池,直接給驅動闆供電;驅動闆通過USB micro的通訊端口給工控機供電、通過電機接口給兩個主動輪供電、通過傳感器接口給9軸IMU供電。
2、電機驅動子系統
直流電機的驅動子系統自上而下可分為兩部分,第一部分是與電機直連的電機驅動子產品,可将上層下達的控制信号轉換為電機需要的電源信号;第二部分是電機控制子產品,接收控制系統的運動指令,實作對電機的閉環驅動控制;
3、傳感器接口(9軸IMU、裡程計)
riki将部分傳感器接口內建到驅動闆上,可以處理9軸IMU、裡程計等傳感器的信号;
三、傳感器系統
1、内部傳感器
riki的内部傳感器包括GY-85 九軸IMU以及內建在小車主動輪上的編碼器;
GY-85 九軸IMU連結:https://detail.tmall.com/item.htm?spm=a230r.1.14.20.c6312336FAOwMf&id=41337816280&ns=1&abbucket=12
霍爾碼器連結:https://item.taobao.com/item.htm?spm=a230r.1.14.60.6b2a181dCRD5Qt&id=556442142947&ns=1&abbucket=12#detail
2、外部傳感器
riki套餐中配的深度攝像頭是樂視的、雷射雷達是思岚A1/A2,直接買套餐太貴了,我單獨買了kinect1、思岚A1算下來省了不少錢!下邊分别介紹下kinect1、思岚A1的具體參數:
kinect1 我是去淘寶上買的二手九成新,景深鏡頭感應距離是1.2米到3.5米,分别率是320×240 16位色深 30fps
具體參數如下所示,
思岚A1
四、控制系統
1、硬體方案
控制系統硬體選擇上有兩種方案:單處理器和多處理器。
單處理器,就是使用PC作為控制系統平台,控制系統的功能在PC上使用ROS系統實作,通過USB序列槽與機器人驅動闆直接通信,采集機器人資訊并控制機器人移動,這種方案簡單易用處理器性能強大,可很快實作ROS功能,但是PC機體大、靈活性差(必須用USB線跟驅動闆相連接配接)、接口種類少、且無法進行遠端監控,不作為推薦方案。
多處理器,針對第一種方案,做ROS開發的基本會選擇“PC+嵌入式系統”的方案,我選擇的是“PC+工控機Intel3865”,将工控機搭載在機器人上作為機器人本體的控制系統,PC通過無線網絡與工控機連接配接,實作對機器人人的遠端監控、圖形化顯示,以及處理複雜功能的運算。
1)如何實作工控機與PC機的通信?
設定IP位址,工控機與PC必須在同一個區域網路下,分别在計算機roswing-K45VD、syw上使用ifconfig指令檢視計算機的區域網路IP位址,如下圖所示:
PC端(ros-wing):ifconfig後得出的ip位址為192.168.1.4
工控機端(syw) ifconfig後得出的ip位址為192.168.1.20
分别在兩台計算機的/etc/hosts 檔案中加入對方的IP位址和對應的計算機名
# @ros-wing, /etc/hosts
192.168.1.20 syw
# @syw, /etc/hosts
192.168.1.4 ros-wing
然後分别在兩台計算機上ping下對方,看看網絡是否暢通
到此,說明底層的網絡通訊已經搞定了;
2)設定ROS_MASTER_URI
該小車采用的工控機+PC的雙控制模式,但是系統中隻能有一個Master,是以從機(工控機)需要知道Mater(PC)的位置。ROS Master的位置可以使用環境ROS_MASTER_URI進行定義,在從機工控機上使用如下指令設定ROS_MASTER_URI:
$ echo "export ROS_MASTER_URI=http://ros-wing:11311" >> ~/.bashrc
3)ssh連接配接
ROS是基于分布式的軟體架構,本小車采用雙控制模式,工控機(ubuntu16.04&ROS)作為小車端主要制器,PC(ubuntu 16.04&ROS)作為遠端控制系統。為了在自己的筆記本電腦上可以遠端控制小車,是以在小車工控機與自己的筆記本電腦上進行SSH配置。
step1:SSH程式的安裝
確定在小車工控機上安裝好了openssh-server程式,在本地主機上安裝好了openssh-client程式(ubuntu16.04預設已經裝好了用戶端)。
sudo apt install openssh-client #本地筆記本電腦上運作此條,實際上通常是預設安裝client端程式的
sudo apt install openssh-server #小車工控機上運作此條指令安裝
step2:小車工控機上啟動ssh服務
以下指令都隻針對伺服器端(server only)。
一般伺服器上安裝ssh完成後,會自動啟動ssh服務,并且預設随系統啟動,如果沒有,請手動啟動:
sudo /etc/init.d/ssh start #伺服器啟動ssh-server服務,
其他指令:
sudo /etc/init.d/ssh stop #server停止ssh服務
sudo /etc/init.d/ssh restart #server重新開機ssh服務
然後确認sshserver是否啟動了:(或用“netstat -tlp”指令)
ps -e|grep ssh
如果隻有ssh-agent那ssh-server還沒有啟動,需要/etc/init.d/ssh start,如果看到sshd那說明ssh-server已經啟動了。
如果沒有則可以這樣啟動:
sudo/etc/init.d/ssh start
step3:查詢伺服器的ip位址
在伺服器終端運作以下指令:
ifconfig #查詢ip位址,在傳回資訊中找到自己的ip位址
從我的傳回資訊中看到,我的ip位址(inet位址)是:192.168.1.20
step4:在本地主機端ssh遠端登入伺服器
這一步需要知道伺服器的使用者名(我的伺服器名字也是syw-Default-string)及IP位址。
在本地主機上運作以下指令:
使用者端連接配接伺服器用于登入遠端桌面(以下user時遠端主機的使用者名)
ssh s[email protected]
#或
ssh -l syw-Default-string 192.168.1.20
# 如果需要調用圖形界面程式
ssh -X [email protected]
初次登入時會出現以下資訊,請記住要輸入的密碼是伺服器主機本身的登陸密碼:
以上表示連接配接成功,且指令提示副前的使用者名@主機名由本地主機變成伺服器的資訊,即表明現在該終端所有的指令都是在伺服器中執行。
這個地方特别容易出問題,常見的報錯是Permission denied,please try again.
1、解決方法是
要修改目前使用者的ssh權限,即修改 /etc/ssh/sshd_config 檔案中
PermitRootLogin without-password
改為如下
PermitRootLogin yes
注意這時一定要重新開機伺服器,然後才能生效
2、剛接觸SHH的人(比如我)ssh s[email protected] 這個是錯誤的,正确的應該是ssh [email protected];
多說一嘴,兩個主機ping的時候是用ping syw-Default-string,這塊特别容易ssh [email protected]搞混淆了!!!
step5:退出遠端登入
用Ctrl+D或者exit
2、軟體方案
工控機上都需要裝ROS作業系統,裝ROS的教程特别多,這裡就不列了,有一點需要注意的是,在從機上裝ROS時胡博士推薦的是裝基本版,這個視從機的性能而定吧,如果是樹梅派推薦基本版,我用的是工控機豪一點,直接裝的完整版,哈哈!!