* Add vitepress tree * Update existing workflows so they dont trigger on changes in the docs path * Add nojekyll, package.json, LICENCE etc * Add crowdin docs upload/download scripts * Add docs flaw checker workflows * Used docs prefix for docs workflows * Crowdin obvious fixes * ci: docs move to self hosted runner runs on a beefy server for faster builds Signed-off-by: Ramon Roche <mrpollo@gmail.com> * ci: don't run build action for docs or ci changes Signed-off-by: Ramon Roche <mrpollo@gmail.com> * ci: update runners Signed-off-by: Ramon Roche <mrpollo@gmail.com> * Add docs/en * Add docs assets and scripts * Fix up editlinks to point to PX4 sources * Download just the translations that are supported * Add translation sources for zh, uk, ko * Update latest tranlsation and uorb graphs * update vitepress to latest --------- Signed-off-by: Ramon Roche <mrpollo@gmail.com> Co-authored-by: Ramon Roche <mrpollo@gmail.com>
2.4 KiB
Multi-Vehicle Simulation with JMAVSim
This topic explains how to simulate multiple UAV (multicopter) vehicles using JMAVSim and SITL. All vehicle instances are started at the same position in the simulation.
:::tip This is the easiest way to simulate multiple vehicles running PX4. It is suitable for testing multi-vehicle support in QGroundControl (or the MAVSDK, etc.). Multi-Vehicle Simulation with Gazebo should be used for swarm simulations with many vehicles, or for testing features like computer vision that are only supported by Gazebo. :::
How to Start Multiple Instances
To start multiple instances (on separate ports):
-
Build PX4
make px4_sitl_default -
Run sitl_multiple_run.sh, specifying the number of instances to start (e.g. 2):
./Tools/sitl_multiple_run.sh 2 -
Start the first instance in the same terminal (this will run in the foreground):
./Tools/simulation/jmavsim/jmavsim_run.sh -l -
Open a new terminal for each subsequent instance, specifying the simulation TCP port for the instance:
./Tools/simulation/jmavsim/jmavsim_run.sh -p 4560 -lThe port should be set to
4560+iwhereiiterates for each instance (from0toN-1)
QGroundControl should automatically connect to all the new vehicle instances (all GCS traffic is sent to PX4's remote UDP port: 14550 from all instances).
The vehicle that is currently being controlled is displayed in the application to bar; you can select this vehicle text to display a selection list of all of the (simulated) connected vehicle instances (Vehicle 1, Vehicle 2, etc.) and choose a new vehicle to control.
Developer APIs such as MAVSDK or MAVROS can connect to individual instances by listening on sequentially allocated PX4 remote UDP ports from 14540 (first instance) to 14549.
Additional instances all connect to port 14549.
Tip
The sitl_multiple_run.sh script starts a separate process for each vehicle. To restart the simulations after killing one of them, you must call sitl_multiple_run.sh again, and also restart each of the individual instances in their own terminals.
Additional Resources
- See Simulation for more information about the port configuration.