
Distance calculation
CoppeliaSim can measure the minimum distance between two measurable entities in a flexible way. The calculation is an exact minimum distance calculation.

[Minimum distance calculation between two manipulators]
Using the API function sim.checkDistance, one can easily calculate the minimum distance between entities, for instance between a robot and its environment, from within a child script, in each simulation step:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function sysCall_init()
local robotBase=sim.getObject( '/robotModelAlias' )
robotCollection=sim.createCollection(0)
sim.addItemToCollection(robotCollection,sim.handle_tree,robotBase,0)
end
function sysCall_sensing()
local result,distData,objectPair=sim.checkDistance(robotCollection,sim.handle_all)
if result>0 then
local txt= 'Robot clearance is ' ..distData[7]
txt=txt.. 'm, minimum distance object pair is ' ..getAsString(objectPair)
print (txt)
end
end
|
One can also display the measured minimum distance, as a colored segment in the scene:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function sysCall_init()
local robotBase=sim.getObject( '/robotModelAlias' )
robotCollection=sim.createCollection(0)
sim.addItemToCollection(robotCollection,sim.handle_tree,robotBase,0)
distanceSegment=sim.addDrawingObject(sim.drawing_lines,4,0,-1,1,{0,1,0})
end
function sysCall_sensing()
local result,distData,objectPair=sim.checkDistance(robotCollection,sim.handle_all)
if result>0 then
sim.addDrawingObjectItem(distanceSegment, nil )
sim.addDrawingObjectItem(distanceSegment,distData)
end
end
|
CoppeliaSim's distance calculation functionality is also available as stand-alone routines via the Coppelia geometric routines.
|