# Automatic check
It is generally a good idea to perform some checks before flight, especially before an autonomous one. There are several methods of automated self-checks of the drone subsystems.
## selfcheck.py
The `selfcheck.py` utility script is part of the `clever` package; it performs automated tests of the main aspects of the ROS platform and PX4. The utility is pre-installed on [the Raspberry Pi image](microsd_images.md).
In order to run it, enter the following command in [the Raspberry Pi console](ssh.md):
```(bash)
rosrun clever selfcheck.py
```
Description of some checks:
* FCU – checks for proper connection with the flight controller;
* IMU – checks whether the data from from IMU is sane;
* Local position – checks presence of local position data;
* Velocity estimation – checks whether drone velocity estimation is sane(**autonomous flight is not to be performed if this check fails!**);
* Global position (GPS) — checks for presence of global position data (GPS module is required for this check);
* Camera — checks for proper operation of the Raspberry camera.
* ArUco — checks whether [ArUco](aruco.md) detection is working
* VPE — checks whether VPE data is published
* Rangefinder — checks whether [rangefinder](laser.md) data is published
## commander check
In order check the main subsystems of PX4 and the possibility of arming at the moment you can run the `commander check` command in the MAVLink console.
If you're running SITL, you should use the terminal where PX4 simulation is running instead of the MAVLink console.