Open Geonhee-LEE opened 2 years ago
CrowdNav/crowd_sim 에서 얘기하는 Simulation Framework 참조:
OpenAI gym
library, and has implemented two abstract methods.
reset()
:
step(action)
:
agent.act(observation)
to get actions of agents.Agent
Agent is a base class, and has two derived class of human and robot.
Agent class holds all the physical properties of an agent, including position, velocity, orientation, policy and etc.
visibility
: humans are always visible, but robot can be set to be visible or invisible
sensor
: can be either visual input or coordinate input
[CrowdNav]
# compute the observation
if self.robot.sensor == 'coordinates':
ob = [human.get_observable_state() for human in self.humans]
elif self.robot.sensor == 'RGB':
raise NotImplementedError
kinematics
: can be either holonomic (move in any direction) or unicycle (has rotation constraints)
def step(self, action, update=True):
...
if self.robot.kinematics == 'holonomic':
vx = human.vx - action.vx
vy = human.vy - action.vy
else:
vx = human.vx - action.v * np.cos(action.r + self.robot.theta)
vy = human.vy - action.v * np.sin(action.r + self.robot.theta)
act(observation)
: transform observation to state and pass it to policy
ORCA
: compute collision-free velocity under the reciprocal assumptionCADRL
: learn a value network to predict the value of a state and during inference it predicts action for the most important humanLSTM-RL
: use lstm to encode the human states into one fixed-length vectorSARL
: use pairwise interaction module to model human-robot interaction and use self-attention to aggregate humans' informationOM-SARL
: extend SARL by encoding intra-human interaction with a local mapJointState
, and it's different from the state of the whole environment.
ObservableState
: position, velocity, radius of one agentFullState
: position, velocity, radius, goal position, preferred velocity, rotationDualState
: concatenation of one agent's full state and one another agent's observable stateJoinState
: concatenation of one agent's full state and all other agents' observable states
controlller에서 환경 분리, Env 폴더 생성 추 후 유틸리티(plotting)도 분리 필요