產品協同設計第三組

git << Previous Next >> Onshape

V-rep

Proximity sensor

添加接近傳感proximity sensor

Menu bar --> Add --> Proximity sensor --> Cone type

orientation dialog 對話框中

沿y軸和z軸旋轉90度 點擊Rotation Selection

position dialog 對話框中

x方向設置0.1 z方向設置0.12

修改距離傳感器的參數Show volume parameter

Offset 0.005, Angle 30 Range 0.15

Show detection parameter中將Don’t allow detection ifdistance smaller than取消

最後將傳感器連接到機器人的身體

Vision sensor

添加視覺傳感器 vision sensor

Menu bar-->Add-->Vision sensor-->Perspective type

將視覺傳感器和距離傳感器放置一起且方向一致

1. 在視覺傳感器的屬性欄中配置Far clipping plane 爲1

Resolution x 和y 設爲256和256

2. 點擊show filter dialog

3. 選擇Edget detection on work image

然後點擊Add filter

4. 閾值設置爲0.2 點選OK

Floating view上右鍵 View-->Associate simulation with selected vision sensor

就可以看到視覺感測器的畫面

bubbleRob腳本

選擇對象BubbleRob--->右鍵選擇Add-->Associate child script-->Non threaded

腳本文件語言爲lua語言

function speedChange_callback(ui,id,newVal)
    speed=minMaxSpeed[1]+(minMaxSpeed[2]-minMaxSpeed[1])*newVal/100
end

function sysCall_init()
    -- This is executed exactly once, the first time this script is executed
    bubbleRobBase=sim.getObjectAssociatedWithScript(sim.handle_self) -- this is bubbleRob's handle
    leftMotor=sim.getObjectHandle("bubbleRob_leftMotor") -- Handle of the left motor
    rightMotor=sim.getObjectHandle("bubbleRob_rightMotor") -- Handle of the right motor
    noseSensor=sim.getObjectHandle("bubbleRob_sensingNose") -- Handle of the proximity sensor
    minMaxSpeed={50*math.pi/180,300*math.pi/180} -- Min and max speeds for each motor
    backUntilTime=-1 -- Tells whether bubbleRob is in forward or backward mode
    -- Create the custom UI:
        xml = '<ui title="'..sim.getObjectName(bubbleRobBase)..' speed" closeable="false" resizeable="false" activate="false">'..[[
        <hslider minimum="0" maximum="100" onchange="speedChange_callback" id="1"/>
        <label text="" style="* {margin-left: 300px;}"/>
        </ui>
        ]]
    ui=simUI.create(xml)
    speed=(minMaxSpeed[1]+minMaxSpeed[2])*0.5
    simUI.setSliderValue(ui,1,100*(speed-minMaxSpeed[1])/(minMaxSpeed[2]-minMaxSpeed[1]))
end

function sysCall_actuation()
    result=sim.readProximitySensor(noseSensor) -- Read the proximity sensor
    -- If we detected something, we set the backward mode:
    if (result>0) then backUntilTime=sim.getSimulationTime()+4 end 

    if (backUntilTime<sim.getSimulationTime()) then
        -- When in forward mode, we simply move forward at the desired speed
        sim.setJointTargetVelocity(leftMotor,speed)
        sim.setJointTargetVelocity(rightMotor,speed)
    else
        -- When in backward mode, we simply backup in a curve at reduced speed
        sim.setJointTargetVelocity(leftMotor,-speed/2)
        sim.setJointTargetVelocity(rightMotor,-speed/8)
    end
end

function sysCall_cleanup()
	simUI.destroy(ui)
end


bubbleRob

成品圖




git << Previous Next >> Onshape