Figure above is the graphic user interface of the GCS, which is developed based on GTK++. The GUI can be divided into three parts: the right module can be used to monitor the UAV status; the map on the left can be used to plotted its real-time position and the module at the bottom can be used to send waypoint commands to the quad-rotor.
The capabilities and performance of the subsystem are listed below:
l) The user is able to start the communication between the GCS and the quad-rotor by clicking on a botton.
2) The user is able to set the target coordinate for the quad-rotor on the interface.
3) The user is able to monitor the status of the UAV, including its altitude, roll, pitch and yaw.
4) The GUI can display the path covered by the UAV, its current coordinate and the target coordinate.
5) The GUI can show the position of the target once it is detected by the perception subsystem on the UAV.
Flow chart above is of the software in the GUI subsystem. It has two threads, one for the GTK++ and the other for a ROS node.
The ROS thread takes in the data of UAV status and sends it to the GTK thread. The GTK thread displays the GUI and reacts to the user input. If the user input is the command of waypoints, the GTK thread will send it to the ROS thread, which will send the command to the communication subsystem.