Source code for rtgym.dataclass.raw_trajectory
import numpy as np
from .trajectory import Trajectory
from .raw_agent_state import RawAgentState
from typing import Optional
[docs]
class RawTrajectory:
def __init__(self, dur_ts: Optional[int] = None, batch_size: Optional[int] = None):
if dur_ts is not None and batch_size is not None:
self.behavior_type = "autonomous"
self.dur_ts = dur_ts
self.batch_size = batch_size
self.coord = np.zeros((batch_size, dur_ts, 2))
self.hd = np.zeros((batch_size, dur_ts, 1))
self.mv_dir = np.zeros((batch_size, dur_ts, 1))
self.disp = np.zeros((batch_size, dur_ts, 2))
else:
self.behavior_type = "controllable"
self.coord = []
self.hd = []
self.mv_dir = []
self.disp = []
[docs]
def update_state(self, ts, bhv_state: RawAgentState):
self.coord[:, ts, :] = bhv_state.coord
self.hd[:, ts, :] = bhv_state.hd
self.mv_dir[:, ts, :] = bhv_state.mv_dir
self.disp[:, ts, :] = bhv_state.disp
[docs]
def append(self, bhv_state: RawAgentState):
self.coord.append(bhv_state.coord)
self.disp.append(bhv_state.disp)
[docs]
def to_trajectory(self):
if self.behavior_type == "autonomous":
return Trajectory(
coord=self.coord,
hd=self.hd,
disp=self.disp
)
else:
return Trajectory(
coord=np.array(self.coord).transpose(1, 0, 2),
disp=np.array(self.disp).transpose(1, 0, 2)
)