The controller is fed with an external position using the onboard companion computer and planned trajectories are also sent via the same mechanism. The companion computer also controls user interrupts and perceives the environment using sensors and creates maps for collision avoidance. If there are pre-determined 3D models, they can also be included in the map. All sensors and hardware are checked simultaneously to enable failsafe operations. According to desired stability and smooth operation with small steady errors, the attitude and position PID configurations are optimized computationally and empirically.
C++ / ROS / PX4
Target waypoints are selected such as pallet locations in the warehouse or the whole rack area. Then pre-flight planning is done and is waited for the user input. The flight starts from the charging dock and the drone gets into the aisle. In the operations, simultaneous planning is executed and the drone determines its path according to missions and the current environment. The drone grabs images when it is reached to address and starts processing them, then sends them to the user while the mission is ongoing. When the mission is completed or the battery is low, the drone starts to return home position. In the flight, the drone fixes its trajectory when it finds any reference points like pallets on the racks or fiducial markers at the beginning of the aisles.
Failsafe Mechanisms / Safety
No body can takeoff the drone when there is human or object around. If the drone sense any anomaly on the hardware or latency it decides return to home, hold and wait or land directly. To enable sensor failure, it checks every sensor with respect to each other.
Additionally, no need of any communication for autonomous flight after takeoff.
The user can plan a mission and starts an operation. Users can observe flights in 3D to follow the operation. Also, users can display the images and results of the read barcodes. If users can find any suspicious thing, they can stop/abort flying and even they can shut down the motors in an emergency situation by using the custom panel. You can find more detail about the panel in the GUI project.