diff --git a/reports/2022-12-16_px4_simulation_monkin.md b/reports/2022-12-16_px4_simulation_monkin.md index 06e5773..d5f4ab3 100644 --- a/reports/2022-12-16_px4_simulation_monkin.md +++ b/reports/2022-12-16_px4_simulation_monkin.md @@ -26,6 +26,7 @@ While PX4 supports other simulators, the following are the most relevant for our ### Simulator MAVLink API All simulators communicate with PX4 using the *Simulator MAVLink API*. This API defines a set of messages that **supply sensor data** from the simulated world to PX4 and return motor and actuator values from the flight code that will be applied to the simulated vehicle. The image below depicts the flow of information between the simulator and PX4: + ![MavLink Message Flow](assets/Pixhawk/px4_mavlink_msg_flow.png) Note: A SITL build of PX4 uses [SimulatorMavlink.cpp](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/simulation/simulator_mavlink/SimulatorMavlink.cpp) to handle these messages. To see the messages that are exchanged in more detail, visit the [documentation page](https://docs.px4.io/main/en/simulation/#simulator-mavlink-api). @@ -41,6 +42,7 @@ By default, PX4 uses commonly established ports for MAVLink communication with G ## SITL Simulation Environment The diagram below shows a typical SITL simulation environment: + ![PX4 Simulation Environment](assets/Pixhawk/px4_sitl_environment.png) The different parts of the system connect via UDP, and can be run on either the same computer or another computer on the same network. @@ -97,9 +99,11 @@ The `HEADLESS` flag avoids running the jMAVSim GUI, as it does not seem to work jMAVSim is a simple multirotor/Quad simulator that allows you to fly *copter* type vehicles running *PX4* around a simulated world. After running the simulation, through `HEADLESS=1 make px4_sitl_default jmavsim`, you should see the terminal output similar to the one below, mentioning that the vehicle is ready for takeoff. + ![SITL terminal upon start](assets/Pixhawk/px4_sitl_terminal_start.png) Additionally, if you setup the QGroundControl comm link correctly, you should see the vehicle in the simulation environment with the indicator on the top right corner, indicating that the vehicle is ready to be controlled. + ![QGroundControl connected](assets/Pixhawk/qgroundcontrol_ready.png) There you have it. That wraps up the setup of the simulation environment. Now, it is possible to start developing the software for the rocket. To test the PX4 firmware is working, type `help` in the terminal to see the available commands and execute one of them, for example `commander takeoff` to make the vehicle takeoff. @@ -111,6 +115,7 @@ There you have it. That wraps up the setup of the simulation environment. Now, i This report covered the necessary information to start developing the software for the rocket in a simulation environment. As shown, the initial configuration is far from ideal, but this document should help to avoid most of the problems during the setup. As of right now, I only created a simple `hello world` command to test the software. The next steps involve experimenting the PX4 software in more complex scenarios, more fitting to a rocket use case. Furthermore, the vehicle setup requires some fine tuning to enable some sensors, such as the *radio transceiver*. + ![QGroundControl summary](assets/Pixhawk/qgroundcontrol_summary.png) Finally, there's more work to be done in other areas, namely: Choosing the Pixhawk board, the sensors and investigating how to relate the [SAVOIR architecture](https://savoir.estec.esa.int/) with the current software.