На узле B убедитесь, что mobility
включен, а location
и origin
установлены, так что вы находитесь в локальной системе координат в метрах. Если ваша система координат не имеет географической привязки, вы можете установить origin
в [NaN, NaN]
:
def node = agentForService org.arl.unet.Services.NODE_INFO
node.origin = [Float.NaN, Float.NaN] // or GPS coordinates
node.location = [0, 0, 0] // or wherever you want to start
node.mobility = true
Теперь, когда вы получаете дейтаграмму на узле B, ваш агент может установить node.speed
и node.heading
до желаемой скорости и курса. Например:
node.heading = 90 // head East
node.speed = 1 // at 1 m/s
На самом деле вы можете вычислить курс на нужную вам путевую точку.
Ваш агент может отслеживать положение узла (возможно, используя TickerBehavior
), и когда пришло время остановиться (например, вы приблизились достаточно близко к точке пути [2,0,0]
), установите скорость на 0:
// if within 1 m of waypoint, stop
if (MathUtils.distance(node.location, [2,0,0] as double[]) < 1) {
node.speed = 0
}