40823231 cd2021

  • Home
    • Site Map
    • reveal
    • blog
  • About
  • stage1
    • w1製作討論
    • W2~W3製圖及模擬
      • 零件圖繪製
      • CoppeliaSim程式模擬
    • W4報告影片
  • W5
  • stage2
    • W6製作分工討論
    • W7~W8零件圖
    • W8~W9CoppeliaSim程式模擬
  • stage3
    • task1
    • task2
    • task3
      • 第11週
      • 第12週
      • 第13週
      • 第15週
    • 模擬影片
  • W15
    • 影片整理1
    • 影片整理2
  • W16
    • lua程式碼
    • 鍵盤指令程式
    • python remoteApi程式
    • require
    • 吸盤程式
W16 << Previous Next >> 鍵盤指令程式

lua程式碼

W16 lua coppeliasim 場景檔

W16 exam lua程式執行 (0.2, 0.7, 0.05) 與 (-0.3, -0.55, 0.05)兩位置放置

以下為lua程式碼:

function moving(x,y)
    a=0.55
    b=0.368
    c=math.pow((math.pow(x,2)+math.pow(y,2)),0.5)
    s=(a+b+c)/2
    area=math.pow((s*(s-a)*(s-b)*(s-c)),0.5)
    h=area/(2*c)
    deg1_base=math.atan(x/y)
    if x<0 and y<0 then
        deg1_base=deg1_base+math.pi
    end
    deg1_tri=math.atan(h/a)
    deg1=deg1_base+deg1_tri
    deg2=math.pi-(0.5*math.pi-deg1_tri)-math.acos(h/b)
    deg3=deg2-deg1
    sim.setJointTargetPosition(joint01,deg1)
    sim.setJointTargetPosition(joint02,-deg2)
    sim.setJointTargetPosition(joint03,deg3)
end


function sysCall_threadmain()
   joint01=sim.getObjectHandle('joint01')
   joint02=sim.getObjectHandle('joint02')
   joint03=sim.getObjectHandle('joint03')
   jointz=sim.getObjectHandle('jointz')
   sim.setJointTargetPosition(joint01,0)
   sim.setJointTargetPosition(joint02,0)
   sim.setJointTargetPosition(joint03,0)
   sim.setJointTargetPosition(jointz,0)
   sim.setIntegerSignal("pad_switch",1)
   sim.setJointTargetPosition(jointz,-0.04)
   sim.wait(5)
   while sim.getSimulationState()~=sim.simulation_advancing_abouttostopre do
       sim.setJointTargetPosition(jointz,0)
       moving(0.2,0.7)
       sim.wait(5)
       sim.setIntegerSignal("pad_switch",0)
       sim.wait(5)
       sim.setIntegerSignal("pad_switch",1)
       sim.setJointTargetPosition(jointz,-0.04)
       sim.wait(5)
       sim.setJointTargetPosition(jointz,0)
       sim.wait(5)
       moving(-0.3,-0.55)
       sim.wait(5)
       sim.setIntegerSignal("pad_switch",0)
       sim.wait(5)
       sim.setIntegerSignal("pad_switch",1)
       sim.setJointTargetPosition(jointz,-0.04)
       sim.wait(5)
       sim.setJointTargetPosition(jointz,0)
       sim.wait(5)
       end
end

程式碼筆記:

function moving(x,y)

計算座標(x,y)的方程式

function sysCall_threadmain()

主程式的方程式

joint01=sim.getObjectHandle('joint01')

表示coppeliasim中joint01的軸在程式中的的名稱。

sim.setJointTargetPosition(joint01,0)

表示設定軸joint01在0的位置。

sim.wait(5)

表示等待時間為5秒。

while sim.getSimulationState()~=sim.simulation_advancing_abouttostopre do

循環第35行到第53行的程式碼

sim.setIntegerSignal("pad_switch",0)
sim.setIntegerSignal("pad_switch",1)

此為吸盤控制程式,"0"為吸取,"1"為放下


W16 << Previous Next >> 鍵盤指令程式

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