0
0
Pcb-designHow-ToBeginner · 4 min read

How to Use jmavsim with PX4 for Drone Simulation

To use jmavsim with PX4, first build PX4 with simulation support, then start the PX4 SITL (Software In The Loop) simulator and launch jmavsim as the visual simulator. This connects PX4's flight control software to jmavsim for real-time drone simulation.
📐

Syntax

Here is the basic command pattern to run PX4 with jmavsim:

  • make px4_sitl jmavsim: Builds PX4 and starts the SITL simulator with jmavsim as the visualizer.
  • make px4_sitl_default jmavsim: Builds the default PX4 SITL target and launches jmavsim.
  • ./Tools/jmavsim_run.sh: Script to start jmavsim separately if PX4 SITL is already running.

Each part means:

  • make: Build and run PX4 SITL.
  • px4_sitl or px4_sitl_default: PX4 simulation target.
  • jmavsim: The Java-based visual simulator.
bash
make px4_sitl jmavsim
💻

Example

This example shows how to build and run PX4 SITL with jmavsim on a Linux system. It demonstrates starting the simulation and connecting the visualizer.

bash
# Step 1: Clone PX4 Firmware repository
git clone https://github.com/PX4/PX4-Autopilot.git
cd PX4-Autopilot

# Step 2: Update submodules
git submodule update --init --recursive

# Step 3: Build and run PX4 SITL with jmavsim
make px4_sitl jmavsim
Output
INFO [px4] Creating symlink /home/user/src/PX4-Autopilot/build/px4_sitl_default INFO [px4] Built px4_sitl_default INFO [simulator] Starting jmavsim... INFO [commander] Startup complete INFO [mavlink] Partner ID: 1 INFO [mavlink] Connected to jmavsim on UDP port 14540 INFO [commander] Vehicle is armed INFO [commander] Vehicle is disarmed
⚠️

Common Pitfalls

Common mistakes when using jmavsim with PX4 include:

  • Not building PX4 with the jmavsim target, causing the visual simulator not to launch.
  • Running jmavsim separately without PX4 SITL running, so no connection is made.
  • Firewall or network issues blocking UDP ports (default 14540) used for communication.
  • Using outdated PX4 firmware or jmavsim versions causing compatibility problems.

Always ensure you have the latest PX4 firmware and Java installed for jmavsim.

bash
## Wrong way: Running jmavsim without PX4 SITL
./Tools/jmavsim_run.sh
# This will fail to connect if PX4 SITL is not running.

## Right way: Start PX4 SITL with jmavsim together
make px4_sitl jmavsim
📊

Quick Reference

CommandDescription
make px4_sitl jmavsimBuild and run PX4 SITL with jmavsim visual simulator
make px4_sitl_default jmavsimBuild default PX4 SITL target and launch jmavsim
./Tools/jmavsim_run.shStart jmavsim separately (PX4 SITL must be running)
killall javaStop jmavsim if it hangs or needs restart
sudo ufw allow 14540/udpAllow UDP port for PX4-jmavsim communication

Key Takeaways

Use 'make px4_sitl jmavsim' to build and run PX4 SITL with jmavsim together.
Ensure PX4 SITL is running before starting jmavsim separately to avoid connection errors.
Keep PX4 firmware and jmavsim updated to avoid compatibility issues.
Check UDP port 14540 is open for communication between PX4 and jmavsim.
Use provided scripts and commands to simplify launching and stopping the simulator.