ROS(Robot OperatingSystem)是開(kāi)源的機(jī)器人系統(tǒng)平臺(tái)。使用這個(gè)之后,機(jī)器人就可以看見(jiàn)東西、測(cè)繪、導(dǎo)航,或是以的算法作用于周?chē)沫h(huán)境當(dāng)中。假如想要制造復(fù)雜的機(jī)器人,已經(jīng)準(zhǔn)備好的ROS程序代碼就能派上用場(chǎng)。ROS能在低限度下運(yùn)用。這可以透過(guò)Raspberry Pi等級(jí)的計(jì)算機(jī)安裝。
做為ROS的入門(mén)篇我們來(lái)看看如何控制伺服機(jī)。伺服機(jī)的缺點(diǎn)是會(huì)盡快遵照指令運(yùn)轉(zhuǎn),因此頭部常常會(huì)突然活動(dòng),以至于失去平衡。不過(guò)使用ROS之后,就可以進(jìn)行正弦曲線運(yùn)動(dòng),讓機(jī)器人保持穩(wěn)定。由于可以在ROS當(dāng)中進(jìn)行這項(xiàng)操作,因此無(wú)須改寫(xiě)控制用的程序代碼。另外,連接伺服機(jī)和ROS的程序代碼,以及伺服機(jī)的硬件都無(wú)須變更。再者,程序代碼還可以任意使用。
ROS很適合用在Ubuntu或Debian上,無(wú)須編譯。建置時(shí)要在Linux機(jī)器上執(zhí)行Ubuntu,使用業(yè)余用伺服機(jī)、Arduino和普通的導(dǎo)線。ROS要在Ubuntu機(jī)器上啟動(dòng),訊息則透過(guò)USB傳送到Arduino。只要安裝二進(jìn)制的ROS套件,就會(huì)在主控臺(tái)程序(像是gnome-terminal或konsole)追加以下指令,這樣Arduino系統(tǒng)就能辨識(shí)ROS函式庫(kù)。
接下來(lái)要將程序代碼上傳到Arduino當(dāng)中,執(zhí)行低階的伺服機(jī)控制,以便能從Linux機(jī)器操作。這時(shí)要以限制范圍內(nèi)的百分比(0.0~1.0)伺服機(jī)的位置。之所以使用百分比而不是寫(xiě)明角度,是因?yàn)锳rduino的程序代碼限制了正確的角度,要避免在角度時(shí)發(fā)生沖突。
就如各位所見(jiàn),使用ROS之后,一般的循環(huán)函數(shù)就會(huì)變得相當(dāng)簡(jiǎn)單。循環(huán)函數(shù)只會(huì)訂閱(subscribe)數(shù)據(jù),任何Arduino循環(huán)都一樣。設(shè)定時(shí)要將ROS初始化,將各個(gè)ROS訊息訂閱者的訂閱叫出來(lái)。每個(gè)訂閱者會(huì)占據(jù)Arduino的RAM,數(shù)量取決于要用程序代碼做什么,以6個(gè)到12個(gè)為限。
接下來(lái)要設(shè)法透過(guò)Arduino在ROS的世界說(shuō)話。簡(jiǎn)單的方法是使用機(jī)器人啟動(dòng)檔。雖然以下的檔案內(nèi)容非常簡(jiǎn)單,但是這里要追加啟動(dòng)檔,如此一來(lái)即使是非常復(fù)雜的機(jī)器人,也能用一個(gè)指令啟動(dòng)。
SMK20-JIC5/8-VK-C6FSMK20-JIC5/8-VK-C6FSMK20-JIC5/8-VK-C6F
從SCOUT V4.4之后SIMOTION可以連接西門(mén)子的精智屏,如果用戶需要將SCOUT項(xiàng)目中的老型號(hào)觸摸屏(如:MP277,TP277)替換為西門(mén)子的精智屏,而SCOUT項(xiàng)目依然用SCOUT Classic軟件進(jìn)行調(diào)試,則需要使用TIA Portal軟件移植原項(xiàng)目并將原觸摸屏進(jìn)行替換,而且還要在項(xiàng)目中創(chuàng)建PLC代理來(lái)實(shí)現(xiàn)SIMOTION控制器與精智屏的連接
rostopic指令可以看出ROS訊息傳送到機(jī)器人的哪個(gè)部位??戳讼旅娴某绦虼a就會(huì)發(fā)現(xiàn),「/head/tilt」可以透過(guò)Arduino使用。訊息要使用「rostopic」傳送。-1的選項(xiàng)只會(huì)發(fā)布(publish)訊息一次,通知/head/tilt傳送一個(gè)浮點(diǎn)數(shù)。