40823142

  • Home
    • Site Map
    • reveal
    • blog
  • 主頁
  • STAGE1-AG17
    • W2 進度報告
    • W3 進度報告
    • W4 進度報告
  • STAGE2-AG10
    • W5 進度報告
    • W6 進度報告
    • W7 進度報告
    • W8.W9 進度報告
  • STAGE3-AG4
    • 第一版本
    • 第二部分
  • Tasks
    • Task 1
    • Task 2
    • Task 3
  • Stage-1 API
  • 各周作業
    • W13
      • 小組直播影片
      • RobotDk操作
    • W14-W15
      • Inverse kinematics for a 2-joint robot arm using geometry 翻譯
      • Inverse kinematics for a 2-joint robot arm using algebra 翻譯
    • W16
Inverse kinematics for a 2-joint robot arm using algebra 翻譯 << Previous

W16

總檔案連結


1.Onshape 零組件繪製:圖檔連結


2.建立 CoppeliaSim MTB robot 場景:

function ex(x,y)
    a=1
    b=1
    c=math.pow((math.pow(x,2)+math.pow(y,2)),0.5)
    s=(a+b+c)/2
    f=math.pow((s*(s-a)*(s-b)*(s-c)),0.5)
    h=f/(2*c)
    math.pow(x,2)
    degl_b=math.atan(x/y)
    if x<0 and y<0 then    
        degl_b=degl_b+math.pi
    end
    degl_t=math.asin(h/a)
    degl=degl_t+degl_b
    degll=math.pi-(0.5*math.pi-degl_t)-math.acos(h/b)
    deglll=degll-degl
    sim.setJointTargetPosition(joint1,degl)
    sim.setJointTargetPosition(joint2,-degll)
    sim.setJointTargetPosition(joint3,deglll)
end

function sysCall_threadmain()
    --定義軸的名稱
    joint1=sim.getObjectHandle('1') 
    joint2=sim.getObjectHandle('2')
    joint3=sim.getObjectHandle('3')
    joint4=sim.getObjectHandle('4')
    --sim.setJointTargetPosition(軸名稱,弧度or距離)=>讓軸轉指定的弧度(rad)or距離(M)
    sim.setJointTargetPosition(joint1,0)
    sim.setJointTargetPosition(joint2,0)
    sim.setJointTargetPosition(joint3,0)
    sim.setJointTargetPosition(joint4,0)
    --sim.wait(秒)=>暫停(秒)
    sim.wait(5)
    --sim.setIntegerSignal('名稱',信號值)=>給pad_switch信號為1
    sim.setIntegerSignal('pad_switch',1)
    --sim.setJointTargetPosition(軸名稱,弧度or距離)=>讓軸下降0.1
    sim.setJointTargetPosition(joint4,-0.1)
    sim.wait(5)
    sim.setJointTargetPosition(joint4,0)
    sim.wait(5)
    --迴圈重複以下動作到結束
    while sim.getSimulationState()~=sim.simulation_advancing_abouttostopre do
        --移動到座標
        ex(-0.02,0.07)
        sim.wait(5)
        sim.setIntegerSignal('pad_switch',0)
        sim.wait(5)
        sim.setIntegerSignal('pad_switch',1)
        sim.setJointTargetPosition(joint4,-0.1)
        sim.wait(5)
        sim.setJointTargetPosition(joint4,0)
        sim.wait(5)
        ex(-0.03,-0.055)
        sim.wait(5)
        sim.setIntegerSignal('pad_switch',0)
        sim.wait(5)
        sim.setIntegerSignal('pad_switch',1)
        sim.setJointTargetPosition(joint4,-0.1)
        sim.wait(5)
        sim.setJointTargetPosition(joint4,0)
        sim.wait(5)
    end    
end
    


3.手臂末端加入 components-gripper-suction pad 吸盤:


4.逆向運動學函式:

5.Python remote API 逆向運動學函式:


Inverse kinematics for a 2-joint robot arm using algebra 翻譯 << Previous

Copyright © All rights reserved | This template is made with by Colorlib