Я нашел способ создать дочерний скрипт на датчике приближения.В V-Rep, с выбранным датчиком приближения, перейдите к Add --> associated child script --> Non-Threaded
, затем sysCall_actuation()
будет выглядеть примерно так:
function sysCall_actuation()
local name = sim.getObjectName(sim.getObjectAssociatedWithScript(sim.handle_self))
result,distance,detectedPoint,detectedObjectHandle = sim.handleProximitySensor(sim.handle_self)
if distance then
sim.setFloatSignal("mydistance", distance);
end
end
, это считывает расстояние от датчика приближения и подталкивает его к сигналу (как вещь кроссплатформенного типа переменной).Тогда на стороне Java есть что-то вроде этого:
FloatW val = new FloatW(-1);
vrep.simxGetFloatSignal(clientID, "mydistance", val, remoteApi.simx_opmode_buffer);//call this with simx_opmode_streaming once before this to start vrep streaming the distances
, это получает значение, отправленное из vrep, и дает вам расстояние в виде FloatW.