ATOS stands for AV Test Operating System, and is an ISO 22133-compliant and ROS2-based scenario execution engine, controls, monitors and coordinates both physical and virtual vehicles and equipment according to scenarios specified in the ASAM OpenSCENARIO® format. It is made for running in real-time and uses GPS time to ensure exact and repeatable execution between runs.
To build ATOS follow the guide below. More documentation can be found [here](https://atos.readthedocs.io/en/latest/).
There are two ways to start using ATOS: using the docker image or building from source. The docker image is the easiest way to get started, but if you intend to make changes to ATOS, we recommend building from source.
To run ATOS using the docker image, first install docker on your computer. Then, run the following command from the root repo directory:
docker compose upYou can also start ATOS without the compose file with docker run:
If you run Docker Engine you can start ATOS using the computers own network stack with
docker run --network="host" --ipc=host --privileged -it -v ~/.astazero/ATOS/:/root/.astazero/ATOS/ astazero/atos_docker_env:latest bash -c "source /root/atos_ws/install/setup.sh ; ros2 launch atos launch_basic.py insecure:=True"If you run Docker Desktop you will need to specify the ports to expose to the host computer.
docker run --ipc=host --privileged -it -v ~/.astazero/ATOS/:/root/.astazero/ATOS/ -p 80:80 -p 8080:8080 -p 8081:8081 -p 8082:8082 -p 8420:8420 -p 3443:3443 -p 55555:55555 -p 443:443 -p 9090:9090 astazero/atos_docker_env:latest bash -c "source /root/atos_ws/install/setup.sh ; ros2 launch atos launch_basic.py insecure:=True"See the GUI documentation on how to enable secure connections. You might wish to mount the config directory at ~/.astazero/ATOS/ to a different location on your host computer. This can be done by changing the path after the -v flag in the above command. You might also wish to inspect the image with instead of running the launch_basic.py script. This can be done by removing the last "bash -c ..." part of the command.
ATOS comes with an installation script that automates the installation process. Native installation is supported on Ubuntu 20.04 with ROS 2 Foxy, Ubuntu 22.04 with ROS 2 Humble, and Ubuntu 24.04 with ROS 2 Jazzy. The script will install ROS 2, ATOS dependencies, and ATOS itself. It will also create a workspace (~/atos_ws) and build ATOS. The script can be executed using the following command:
./setup_atos.shYou can find instructions on how to manually install ATOS and its dependencies from source here.
ATOSFleetManagement is a lightweight development stack built around truck_object_control and truck_object_gui and does not start OpenScenarioGateway, JournalControl, or EsminiAdapter.
After building, start it with:
ros2 launch atos launch_atosfleetmanagement.py insecure:=TrueThe placeholder COT input topic for TruckObjectControl is:
/atos/truck_objects/cot
Expected temporary payload format:
id=<truck_id>;distance_m=<value>;tcp_connected=<0|1>
TruckObjectControl publishes speed commands on:
/atos/truck_objects/speed_command
Build and start with docker compose:
docker compose -f docker-compose-fleetmanagement.yml up --buildStart with simulated trucks enabled:
WITH_TRUCK_SIMULATOR=True docker compose -f docker-compose-fleetmanagement.yml up --buildStart with simulated trucks disabled:
WITH_TRUCK_SIMULATOR=False docker compose -f docker-compose-fleetmanagement.yml up --buildOpen TruckObjectGUI at:
http://localhost:8420
Example deployment folder on server: /opt/atos.
- Copy repository to server:
sudo mkdir -p /opt/atos
sudo rsync -a ./ /opt/atos/- Install service env file and customize:
sudo cp /opt/atos/scripts/atosfleetmanagement.env.example /etc/default/atosfleetmanagement
sudo nano /etc/default/atosfleetmanagement- Install and enable service:
sudo cp /opt/atos/scripts/atosfleetmanagement.service /etc/systemd/system/atosfleetmanagement.service
sudo systemctl daemon-reload
sudo systemctl enable --now atosfleetmanagement- Service management:
sudo systemctl status atosfleetmanagement
sudo systemctl restart atosfleetmanagement
sudo journalctl -u atosfleetmanagement -fPlease click here for instructions on how to use ATOS with a GUI.
This project has partly been funded by the below organisations. The herein expressed views of the contributors do not necessarily reflect the views of the organisations.
