吳志鵬,廖志青,冼嘉媚,曾奕雄,何 威
(華南理工大學廣州學院,廣東 廣州 515000)
中國南方地區夏季多雨,特別是長江流域容易發生洪災;東南沿海地區還會受到臺風的影響,容易引發洪水、泥石流等次生災害;夏季城市容易發生內澇。由于洪澇災害的危害性很大,它不僅對經濟造成嚴重的損失,而且還奪取了人類的生命。為了解決這個問題,設計了救援船體機器人,由第一代清潔船體機器人(圖1)迭代升級,將垃圾清潔裝置改為機械臂、拋射器和收繩器,由拋射器加機械臂的結構精準拋射出救生圈,對溺水人員實施救援。
本救援船體機器人中的控制系統有效地解決了救援船體的控制問題,致力于更好的后期算法開發。系統使用基于Linux操作系統上的ROS機器人操作系統,下位機使用基于Cortex-M3內核的32位高性能微控制器STM32F103ZET6為主控制芯片,為底層電機等運動原件提供控制[1]。救援船體機器人所要求的功能為救援動作的實施,如救生圈拋置、機器手拋擲、船體運動、圖像傳輸、路徑處理等功能,通過對各項功能進行分析得出將ROS機器人操作系統移植到救援船體機器人上的方案是可以實施的,并且將大大降低對執行機構信息處理的要求,轉為對微型電腦的要求。
對于救援船體機器人使用ROS機器人操作系統,一是便于搭建框架整體,二是便于日后升級迭代產品[2],使救援船體機器人可以與時俱進,增添不同模塊,適用于不同水域不同情況。下面對設計過程進行闡述。

圖1 初代清潔船
為了救援船實現圖片傳輸、路徑規劃、船體控制和機械臂控制等功能,下位機芯片使用STM32F103ZET6控制芯片。控制方式是通過上位機PC端發出協議擬定的命令到下位機STM32串口,下位機STM32已經寫好指定動作,如收到0x7F010X120103BCC的串口數據則螺旋槳正轉等,同過上位機發送不同的指令,實現對清潔船體控制。
圖2所示為STM32F103ZET6開發系統圖,該芯片具有64KB SRAM、512KB FLASH、2個基本定時器、4個通用定時器、2個高級定時器、2個DMA控制器(共 12個通道)、3個 SPI、2個 IIC、5個串口、1個USB、1個 CAN、3個 12位 ADC、1個 12位 DAC、1個SDIO接口、1個FSMC接口以及112個通用IO口[3]。
STM32特點:外設豐富,STM32擁有包括FSMC、TIMER、SPI、IIC、USB、CAN、IIS、SDIO、ADC、DAC、RTC、DMA等眾多外設及功能,具有極高的集成度;優異的實時性能,84個中斷,16級可編程優先級,并且所有的引腳都可以作為中斷輸入;杰出的功耗控制。STM32各個外設都有自己的獨立時鐘開關,可以通過關閉相應外設的時鐘來降低功耗;支持SWD和JTAG兩種調試口。SWD調試可以為你的設計帶來跟多的方便,只需要2個IO口,即可實現仿真調試。該開發板的部分參數如下:
(1)板子外形 10 mm×8 mm;
(2)主芯片 STM32F103RCT6(64腳);
(3)電源RTC后備電池座;
(4)2個USB取電口;
(5)5 V電源接口;
(6)3.3 V電源接口;
外擴8MB SPI FLASH(W25Q65)和外擴EEPROM 24CO2 SPI;
主芯片 STM32F103RCT6(64腳);
芯片 FLASH:256K和芯片SRAM:48K.

圖2 STM32 F103開發系統圖
為了更好地闡述救援船硬件部分內容,將救援船系統劃分為幾大系統。救援船體系統由上位機系統、下位機主控系統、機械臂控制器、船體運動控制器組成的控制系統,系統總體框圖如圖3所示。在下位機各個系統配置了多種編碼器、傳感器,用于船體、機械臂等。并且設置遠程遙控器和圖傳模塊,以便進行人機交互的功能。

圖3 硬件總框架
在對機器人的設計研究的過程中,主要是根據機器人所要實現的三個功能進行設計,分別是:拋射救生圈功能、回收救生圈、遠程遙控功能。
在初代清潔船的基礎上將傳送帶等清潔功能移除,改為一個三軸機械臂,再在機械臂上安裝一個拋射器,拋射器安裝有一個氣壓發射裝置,通過觸動開關,拋射一個帶有繩子的救生圈,通過機械臂關節的移動來改變拋射器的拋射角度,從而達到精準救援,再在救援船底部安裝一個由直流無刷電機組成的收繩器,通過電機正轉,達到收繩的功能。
船體左右對稱分布,船架則為支撐整個船體,船架通過六個定點連接兩側浮筒,限制多個自由度,防止上下左右出現松動情況,更加穩固。對于受力負荷過強的部分船架(如:傳動機構板塊、調節機構板塊)采用三角形定理,增加支架,使得承受負載增大不易變形。船架材料采用硬鋁為主,合金鋼為輔(部分高強度部位),用以減輕整體船重,同時長時間在水中作業要避免被腐蝕。螺旋槳動力部分負責驅動機器人前進(如圖4),螺旋槳的轉向由另一個直流無刷電機負責,動力部分安裝有伺服驅動、16位絕對式編碼器、霍爾傳感器來確保轉向準確。

圖4 動力系統
在操作者控制下,操作者通過遠程攝像頭了解方位與救援需求,通過遠程遙控器發射指定信號到PC端,經過ROS信號觸發,發布消息到串口節點,再由串口節點發送指令到STM32控制板中,實現控制精準拋投器拋射救生圈。通過攝像頭判斷出溺水人員已經成功抓牢救生圈時,通過遠程遙控器發送指令到PC端,再由PC端發布消息到串口節點,由串口節點發送電機回收指令,使收繩器啟動,回收救生圈。
當PC機啟動時,預先寫好在Service文件中的launch文件會啟動,即ROS各個節點程序啟動,開始于下位機通訊,發送指令初始化下位機stm32,包括:時鐘、GPIO、串口、LCD、中斷及其分組、延時函數、定時器、字庫等的初始化。后等待遙控器的指令,啟動救援船體機器人。
通信部分主要由USART利用STM32內部串口的資源來實現PC端ROS操作系統和下位機的數據傳遞指令的下達,搖桿遙控帶接收器采用433通訊傳輸方式發送數據到PC端ROS操作系統。在linux系統上使用ROS平臺進行上層與下層通訊,使用編程語言C++為基礎,調用serial庫與下位機STM32進行串口通訊。定義發送至下位機的信息,即x、y軸的速度以及方向角,從ROS中的cmd_vel主題獲取發布速度以及方向角,并將方向角轉化為四元數,將以上所有信息加上兩個停止位存儲至列表。初始化串口信息,設置端口號、波特率、通信字節位數等。首先測試是否能成功連接串口,若成功則將存儲速度以、方向四元數以及停止位的列表發送至下位機,如不成功則拋出響應問題。接收下位機傳輸至上位機的信息,對其信息進行解析,可以初略得出救援船體機器人當前所在位置,使用其他傳感器更加精確定位。
圖傳模塊功能,通過5.8 G,200 mW圖傳發射器,發送攝像頭接收到的圖片數據,該發射器有40個頻點,頻率范圍在5.645 GHz~5.945 GHz,電壓輸入范圍7~24 V.圖傳接收器4.3寸接收顯示一體機,內置靈敏度5.8 G接收器,接收頻率范圍為5.645 GHz~5.945 GHz,32頻點與5.8 G圖傳發射器匹配,要求攝像頭的圖像制式為NTSC內置天線電池。
船體控制功能,下位機已經封裝好各個不同執行機構的動作,如螺旋槳正轉反轉、機械臂旋轉、拋射器發射等,通過遙控器和圖傳模塊進行遠程人機交互操控,操控手柄選擇螺旋槳旋轉等不同動作,操控手柄發送信號到PC端ROS機器人操控系統通過USART通訊將人機交互結果發送至下位機STM32實現船體的位移。
STM32接收程序部分如下:
void USART1_IRQHandler(void)//′串口1中斷程序
{
u8 Res;
if(USART_GetITStatus(USART1 , USART_IT_RXNE)!=RESET) //接收中斷
{
Res=USART_ReceiveData(USART1); //讀取
if(Res==1)
{
ZX0=0;
ZX1=1;
}
else if(Res==2)
{
ZX0=1;
ZX1=0;
}
else if(Res==3)
{
}
else if(Res==4)
{
POWER=0;
OUT0=1;
YEL=0;
BLU=0;
OUT1=0;
YEL_K=1;
BLU_K=1;
OUT1_K=1;
POWER=1;
}
路徑規劃功能,因為救援船體上安裝要激光雷達等多個傳感器,可以檢測出湖面礁石、障礙物等,通過傳感器下位機stm32串口返回的數據,救援船體機器人傳感器模塊ROS節點,使用GPS、imu以及下位機傳輸上來的里程計能進行更加精確的位置定位,使用激光雷達可以進行躲避障礙物的功能。安裝GPS,imu相對應的驅動,使用C++編寫ROS節點,發布節點消息,使用ekf算法對GPS、imu以及里程計發布的消息進行融合得到更加精確的位置定位。激光雷達進行避障,在確定目標位置時使用global_costmap對總路徑進行規劃,并不斷更行,local_costmap本地路徑規劃,在救援船體機器人運行時出現障礙物的時候能及時規劃躲避路徑,完成躲避障礙物的功能。使用攝像頭進行圖像傳輸,安裝響應節點,打開攝像頭,并且使用SSH遠程連接,則可以進行遠程圖像傳輸??梢詫崟r的對水面以及救援船體機器人進行實況轉播,能及時了解船體以及水面當前情況。通過ROS節點處理,可以輕松避開障礙物等阻礙船體運行的物體,實現路徑規劃的功能。主要通過激光雷達實現即時的規劃躲避障礙物,防止救援船體與障礙物相撞,損壞船體。ROS有自帶navigation導航包,通過調用導航包,可以檢測出船體附件環境等,通過節點反饋,避開路障實現路徑規劃的功能如圖5所示。

圖5 避障測試
救援船體機器人平臺將運行ROS的PC作服務器端,主要負責復雜的計算和路徑規劃等復雜程度不一的任務。救援船體機器人由二級功能節點和任務控制等模塊組成,這樣系統可以在智能化和可靠性上都能滿足救援船體機器人的需求。ROS機器人操作系統平臺可用于開發一系列機器人系統,也可用于開發多機器人系統和非工業機器人系統,如足球機器人系統、服務類機器人系統、無人機系統等。
救援船體機器人用STM32下位機和機器人開源操作系統ROS設計了一個救援船體機器人系統。該系統首先由機器人平臺主控制器對多種傳感器進行信息采集和整合,通過STM32各傳感器采集數據向上位機發送當前數據然后利用串口通信傳輸,并能遠程控制救援船體機器人進行精確移動,最后對救援船體機器人進行了系統調試和測試,通過對救援船體機器人進行參數校核和完善程序等過程,使機器人系統達到了預期的設計要求。