Assuming you have a working simulation installation (see link below)

Setup

Check that you have the following repos and versions

Obviously these are not the only compatible versions. In the near (?) future we will be tagging compatible versions. These are versions which are known to work

repo version commit
ardupilot-ros-utils main 3edcda0
ardupilot add-shim-dep 74005b8928
ardupilot_gazebo ros2 3791592
ardupilot_gz main 58f4726
asdl-blueboat main 4c14201
asdl-blueboat-oceans25 main 0634595
asdl-oak main 345e70a
micro-xrce-dds-gen HEAD 93b118a
ucrt-ros main 4989951
ardupilot_sitl_models main d5d6017
asdl-blueboat-ext main 4810938
asdl-livox main 4c78505
asdl-ros-dev HEAD 6e2d69e
lyoko main b4ac451
micro_ros_agent jazzy 52abdf5
greenhorn 2.y 4c7829e

Check that the simulation install works

Try launching the default experiment

cd ~/.local/ros/asdl-ros/
colcon build --merge-install
source install/setup.bash
ros2 launch lyoko_gz_bringup spawn_experiment.launch.py experiment_name:=example_experiment_config

This should launch the sydney_regatta world with several asdl-blueboats in it (if you are on the add-sydney-regatta branch OR my PR has been approved). It may take some time to boot.

Explaining Repos/Packages

The software stack uses a multi-repo structure because Sean said/says it is best practice. This means that not only are functions split across ROS packages, but also across repositories. Running the full stack involves combining the packages from multiple repositories.

Lyoko

Starting simulations with robots in them is handled by packages in the lyoko repository. lyoko_gz_bringup contains launch utilities, lyoko_gz_worlds contains world descriptions, and lyoko_gz_maritime does I’m not sure what. Robot definitions are NOT contained in lyoko.

Read the lyoko_gz_bringup README to learn about starting simulations!

Defining Robots

In order to ensure compatibility between Lyoko and the robots it spawns, all UCRT robots must have a bringup package, and a description package.

The bringup package must provide a bringup.launch.py script which starts all relevant nodes. The asdl-blueboat bringup is a good example of this. The package should also provide a hardware.launch.py script which starts hardware relevant nodes and calls the bringup launch.

The robot description package must provide a urdf description of the robot. This package must also include a config directory with a vehicle_gz_bridge.yaml file which specifies ROS-to-GZ (or GZ-to-ROS) information transfer. The asdl-blueboat urdf and gz_bridge are good examples of this.

ucrt-ros