40723106 cd2021

  • Home
    • Site Map
    • reveal
    • blog
  • 關於
  • Stage-1
    • W1
    • W2
    • W3
    • W4
    • W5
  • Stage-2
    • W6
    • W7
    • W8
    • W9
  • Stage-3
    • 每周進度
      • W10
      • W11
      • W12
      • W13-14
      • W15
      • W16
      • W17
      • W18
    • task1
W15 << Previous Next >> W17

W16

MTB_robot 的取放方塊流程規劃 (Process Planning):

1.onshape零組件繪製(20%)

利用onshape繪圖

影片:

2. 建立 CoppeliaSim 4.1.0 MTB robot 場景 (20%)

3. 手臂末端加入 components-gripper-suction pad 吸盤 (20%)

4.逆向運動學函式(20%)

影片:

5. Python remote API 逆向運動學函式 (20%)

程式:


import sim as vrep import math import random import time import math def moving (x,y): a=0.4 b=0.4 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 : deg1_base=deg1_base+math.pi end deg1_tri=math.asin(h/a) deg1=deg1_base+deg1_tri deg2=math.pi-(0.5*math.pi-deg1_tri)-math.acos(h/b) deg3=deg2-deg1 vrep.simxSetJointTargetPosition(clientID,deg1,0,opmode) vrep.simxSetJointTargetPosition(clientID,-deg2,0,opmode) vrep.simxSetJointTargetPosition(clientID,deg3,0,opmode) print ('Start') vrep.simxFinish(-1) clientID = vrep.simxStart('172.20.10.3', 19997, True, True, 5000, 5) if clientID != -1: print ('Connected to remote API server') res = vrep.simxAddStatusbarMessage( clientID, "40823239 ", vrep.simx_opmode_oneshot) if res not in (vrep.simx_return_ok, vrep.simx_return_novalue_flag): print("Could not add a message to the status bar.") opmode = vrep.simx_opmode_oneshot_wait STREAMING = vrep.simx_opmode_streaming vrep.simxStartSimulation(clientID, opmode) ret,joint01=vrep.simxGetObjectHandle(clientID,"joint1",opmode) ret,joint02=vrep.simxGetObjectHandle(clientID,"joint2",opmode) ret,joint03=vrep.simxGetObjectHandle(clientID,"joint3",opmode) ret,jointz=vrep.simxGetObjectHandle(clientID,"jointz",opmode) vrep.simxSetJointTargetPosition(clientID,joint01,0,opmode) vrep.simxSetJointTargetPosition(clientID,joint02,0,opmode) vrep.simxSetJointTargetPosition(clientID,joint03,0,opmode) vrep.simxSetIntegerSignal(clientID,"pad_switch",1,opmode) vrep.simxSetJointTargetPosition(clientID,jointz,-0.05,opmode) time.sleep(1) vrep.simxSetJointTargetPosition(clientID,jointz,0,opmode) time.sleep(2) moving:(0.2,0.7) time.sleep(1) vrep.simxSetIntegerSignal(clientID,"pad_switch",0,opmode) time.sleep(1) vrep.simxSetIntegerSignal(clientID,"pad_switch",1,opmode) vrep.simxSetJointTargetPosition(clientID,jointz,-0.04,opmode) time.sleep(1) vrep.simxSetJointTargetPosition(clientID,jointz,0,opmode) moving:(-0.3,-0.55) time.sleep(1) vrep.simxSetIntegerSignal(clientID,"pad_switch",0,opmode) time.sleep(1) vrep.simxSetIntegerSignal(clientID,"pad_switch",1,opmode) vrep.simxSetJointTargetPosition(clientID,jointz,-0.04,opmode) time.sleep(1) vrep.simxSetJointTargetPosition(clientID,jointz,0,opmode)
影片:


雲端:
https://drive.google.com/file/d/1i3z2C_N_h94ILZ5vNK8s72fXvKcyT-dv/view?usp=sharing



W15 << Previous Next >> W17

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