2015年5月24日 星期日

ROSA 的多工同步無等待控制

http://4rdp.blogspot.com/2015/05/rosa.html?m=0

專利申請書裡的插圖
續前文,ROSA 值得推薦的地方在多工同步無等待系統控制 (Synchronous Control System Without Waiting) 設計,各位觀看多數機器人的動作控制,總是感覺死板板,以手臂控制為例,假設這手臂有三個關節,分別是肩、肘、腕,多數的機器人控制,會先轉動肩部馬達定位後再轉動肘部再腕部,簡單說,先大關節控制再逐一到小關節,一次只動一顆馬達,因此觀看機器人動作缺少靈活性,動作不夠順暢。

ROSA 的多工同步無等待控制系統,可以多顆伺服馬達 (多工) 同時 (同步) 轉動,並且操作程式不必安插多餘等待指令 (無等待),為了實踐這樣想法,將這些功能寫入 ROSA 系統程式中,這一切動作控制細節皆由 ROSA 處理,這個 的多工同步無等待控制概念,已先申請發明專利。

或許有人可能會疑問,直接寫 Arduino 的 C 程式不就好了,還要 ROSA 做什麼?使用 ROSA 主要可以簡化你的控制程式,因為想寫一個多工同步無等待的機器人程式,蠻複雜的,簡單說 ROSA 可以讓你撰寫機器人高階控制的部分,其餘控制細節則交由 ROSA 處理。這裡用三顆馬達程式舉例說明






# ROSA Profile Example
# 專利申請證號 (台)104112947、(陸)PAT. PENDING No. 201510217500.5
# 未經授權,禁止任何商業使用
# (C) 2015, Bridan, CC BY-NC-SA 3.0 TW

CONF 2,0,0,0               # 預設 pin 2 ~ 4 為伺服馬達
CONF 13,20                 # 預設 pin 13 為數位輸出
SET 2,90,90,90            # 設定馬達角度 90 度
#
:MAIN
CALL SHOULDER       # 呼叫肩部馬達控制
CALL ELBOW              # 呼叫肘部馬達控制
CALL CLIP                   # 呼叫夾子馬達控制
GOTO MAIN                # 跳到主迴圈起頭
#
:SHOULDER                # 馬達3 為肩部馬達
SERVO 3,30,20,0,1     # 30 ~ 160 度,慢速來回擺動 20%電力
WAIT 0.8                      # 中間再停頓 0.8 秒
SERVO 3,160,20,0,1   # 停頓期間仍有電力維持
WAIT 0.8
RETURN
#
:ELBOW                       # 馬達2 為肘部馬達
SERVO 2,60,50,0,0      # 60 ~ 170 度,中速來回擺動 50%電力
SERVO 2,170,50,0,0
RETURN
#
:CLIP                              # 馬達4 為夾子馬達
SET 13,1                        # pin 13 接一 LED 亮滅顯示
SERVO 4,90,100,0,0     # 90 ~ 160 度,快速開夾擺動 100% 電力
SET 13,0
SERVO 4,160,100,0,0
RETURN
#

這三顆馬達可以不同速度獨立運轉,並且機器人的控制程式看不到條件式,亦無需安插不必要的等待指令接續...

沒有留言:

張貼留言