W7 <<
Previous Next >> W9
W8
我們加入了力傳感器、視覺傳感器,讓模型在碰觸障礙物時,可以自行避開並選擇路徑上無障礙物之路線進行移動。
模擬圖 :

模型Lua:
function sysCall_init()
end
function sysCall_actuation()
end
function sysCall_sensing()
end
function sysCall_cleanup()
end
function sysCall_afterDelete(inData)
for key,value in pairs(inData.objectHandles) do
print("Object with handle "..key.." was deleted")
end
end
function sysCall_afterCreate(inData)
for key,value in pairs(inData.objectHandles) do
print("Object with handle "..value.." was created")
end
end
--]]
function speedChange_callback(ui,id,newVal)
speed=minMaxSpeed[1]+(minMaxSpeed[2]-minMaxSpeed[1])*newVal/100
end
function sysCall_init()
bubbleRobBase=sim.getObjectAssociatedWithScript(sim.handle_self)
leftMotor=sim.getObjectHandle("bubbleRob_leftMotor")
rightMotor=sim.getObjectHandle("bubbleRob_rightMotor")
noseSensor=sim.getObjectHandle("bubbleRob_sensingNose")
minMaxSpeed={120*math.pi/180,300*math.pi/180}
backUntilTime=-1
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])*1
simUI.setSliderValue(ui,1,100*(speed-minMaxSpeed[1])/(minMaxSpeed[2]-minMaxSpeed[1]))
end
function sysCall_actuation()
result=sim.readProximitySensor(noseSensor)
if (result>0) then backUntilTime=sim.getSimulationTime()+4 end
if (backUntilTime<sim.getSimulationTime()) then
sim.setJointTargetVelocity(leftMotor,speed)
sim.setJointTargetVelocity(rightMotor,speed)
else
sim.setJointTargetVelocity(leftMotor,-speed/5)
sim.setJointTargetVelocity(rightMotor,-speed/200)
end
end
function sysCall_cleanup()
simUI.destroy(ui)
end
路徑Lua:
require('graph_customization')
力傳感器Lua:
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
function sysCall_init()
end
function sysCall_trigger(inData)
-- callback function automatically added for backward compatibility
sim.breakForceSensor(inData.handle)
end
視覺傳感器Lua:
function sysCall_init()
end
function sysCall_vision(inData)
-- callback function automatically added for backward compatibility
-- (vision sensor have no filters anymore, but rather a callback function where image processing can be performed)
local retVal={}
retVal.trigger=false
retVal.packedPackets={}
simVision.sensorImgToWorkImg(inData.handle)
simVision.edgeDetectionOnWorkImg(inData.handle,0.200000)
simVision.workImgToSensorImg(inData.handle,false)
return retVal
end
W7 <<
Previous Next >> W9