手臂超出範圍,齒輪出現卡卡卡異聲


#1

您好,

我是用Python做手臂的二次開發,在開發過程有時候會出現手臂超出工作範圍。請問當手臂超出工作範圍時,且齒輪出現卡卡卡異聲的時候,需要如何讓手臂能恢復正常運作?
重啟電源並歸零? 歸零的方式是按住Key 兩秒嗎?

感謝


#2

歸零就行了,按住key兩秒或者dobotstudio裡點HOME。運行前請確認好位置是不是會超出運行範圍。


#3

Hi Daniel

歸零還是一樣,經詢問過代理商,他們說新的FW和舊手臂的板子會有此問題。我們的機器是2017年買的,現在用最新的FW是3.6.15。請問可以提供舊機型的最後一版FW給我們試試看嗎?

FW可以寄到以下位置 kyc1109@gmail.com or ethan_kuo@compal.com

謝謝


#4

下載最新的dobotstudio,打開軟件點擊更新FW,會自動更新。我的電腦還沒下載最新版dobotstudio,所以截圖會有偏差。


#5

Hi Daniel

我已經用最新的dobotstudio v1.9.1和最新的fw v3.6.15,但是這問題代理商說我們舊機器要用舊版fw。新版fw不適用於舊機器。
可否提供舊版FW給我們一試?

謝謝


#6

軟件得安裝目錄裡有對應版本得固件,dobot官網有每個版本得軟件。



#7

Hi Daniel

刷完就FW還是一樣,歸零或用Dobotstudio 的home也沒用,請問還有其他方法嗎?

謝謝


#8

不用最新的軟件也是一樣的結果嗎,會不會是最新的1.91版本軟件有問題呢,其他版本軟件裡寫代碼也是一樣的結果嗎?


#9

Hi Daniel

Dobotstudio v1.4.13, v1.7.1和v1.9.1內建的FW都試過了,按home鍵還是會出現撞機的問題。

下面是我用python寫的程式,請問會造成手臂異常嗎?

CON_STR = {
dType.DobotConnect.DobotConnect_NoError:  "DobotConnect_NoError",
dType.DobotConnect.DobotConnect_NotFound: "DobotConnect_NotFound",
dType.DobotConnect.DobotConnect_Occupied: "DobotConnect_Occupied"}
#Load Dll
api = dType.load()

init_pos=[]

state = dType.ConnectDobot(api, "", 115200)[0]
print("Connect status:",CON_STR[state])
def dobot_move_xy_real(int_x,int_y,int_z=5,up_down=1, delay=0): #Up_down: 1 is press and release key. 0 is just moved
global state 
global init_pos
if (state == dType.DobotConnect.DobotConnect_NoError):    
    try:
        while True:
            dType.SetQueuedCmdClear(api)
            
            dType.SetPTPJointParams(api, 200, 200, 200, 200, 200, 200, 200, 200, isQueued = 1) #四軸速度,加速度
            dType.SetPTPCommonParams(api, 100, 100, isQueued = 1)                
            
            #print("Before")
            tagPose = dType.GetPose(api) #x,y,z,r
            #show_pose_data(tagPose)                
            
            if not init_pos:
                init_pos = dType.GetPose(api)
                print("Inintial Position Saved.")
                x = int_x
                y = int_y
                z = tagPose[2]
                r = tagPose[3]
            else:                
                x = int_x
                y = int_y
                z = tagPose[2]
                r = tagPose[3]

            lastIndex = dType.SetPTPCmd(api, dType.PTPMode.PTPMOVLXYZMode, x, y, z, r, isQueued = 1)[0]#水平移動
            
            if up_down==1:
                lastIndex = dType.SetPTPCmd(api, dType.PTPMode.PTPMOVLXYZMode, x, y, z-int_z, r, isQueued = 1)[0]#down                                  
            dType.SetQueuedCmdStartExec(api)
            #Wait for Executing Last Command
            while lastIndex > dType.GetQueuedCmdCurrentIndex(api)[0]:
                dType.dSleep(delay*1000)
            dType.SetQueuedCmdStopExec(api)                
            if up_down==1:
                lastIndex = dType.SetPTPCmd(api, dType.PTPMode.PTPMOVLXYZMode, x, y, z, r, isQueued = 1)[0]#up                                  
            dType.SetQueuedCmdStartExec(api)
            #Wait for Executing Last Command
            while lastIndex > dType.GetQueuedCmdCurrentIndex(api)[0]:
                dType.dSleep(0)
            dType.SetQueuedCmdStopExec(api)                   
            return 0
    except Exception as e:
        traceback.print_exc()
        print("關閉連線")
        dType.DisconnectDobot(api)
        return 1
elif (state == dType.DobotConnect.DobotConnect_Occupied):
    print("Device on use, please close previous app.")
    return 1
elif (state == dType.DobotConnect.DobotConnect_NotFound):
    print("Device not found")
    return 1
else:
    print("Unknow Error")
    return 1

dobot_move_xy(20,20)

#10

代碼只會在代碼運行的時候異常,跟回零異常沒有關係的。代碼裡如果輸入了運行範圍之外的坐標就會出現紅燈和異常。


#11

Hi Daniel

問題解決了,後來詢問代理商。
方法是Teaching&Playback抓一個要當home的點,然後按右鍵選SetHome,然後Download到手臂。Home鍵就可以正常運行了。

謝謝