System Architecture
SEAN 2.0 is built on two main components: the game engine (Unity) and the Robot Operating System (ROS).
System Diagram
Within Unity, we use the Unity ROS-TCP-Connector library to interface with ROS. This ROS interface allows control of a simulated robot via the standard ROS navigation stack. We currently target ROS Noetic with Python 3 compatibility.
Terminology
Scenario
A scenario occurs in a physical environment where virtual avatars exhibit some a Pedestrian Behavior and the robot is assigned a specific start (A) to goal (B) navigation task.
Physical Environment
The physical environment is the physical world in which the interaction occurs. We have created three main environments: the Lab, Warehouse, and Outdoor scene.
We also have four environments based on popular pedestrian datasets.
Pedestrian Behavior
Pedestrian behavior describes the method of controlling individual pedestrians and assigning them A-B navigation goals.
Robot Task
Every robot task is an A-B navigation task where the robot is transported to the start pose in the environment and presented with the navigation goal pose.
System Components
SEAN is built on two high level systems: Unity and ROS.
Our code is divided between these two systems. The code is available in the following four repositories :
-
ROS workspace and with setup and development scripts: https://github.com/yale-sean/sim_ws.
-
Unity project is available here: https://github.com/yale-sean/social_sim_unity.
-
ROS package is available here: https://github.com/yale-sean/social_sim_ros.
-
This documentation is hosted here: https://github.com/yale-sean/docs.
Pull requests are welcome!