Halo Development Update #03

Here is the first post regarding the Halo software, so I'm going to go over its overall goals. First and foremost, Halo must be controlled in a way that does not put anyone or anything around it in danger, so safety is the number one priority. Because of this, Halo is the only drone on the market that we know of that actually has redundant systems, both in hardware and in software. In other words, if one control board goes down or if any part of the software crashes, on a regular drone, its game over, but not on Halo. On Halo, the task of controlling the drone is divided up between 5 primary microprocessors, each one with a specific task. If any one board, for whatever reason, was to fail, only a part of the functionality of the drone will be lost and, in the future, we hope to implement software that will allow each board to take over the task of another, creating a flawless transfer of control, allowing Halo to keep on flying. In the future, the only way to tell the drone is broken will be through a notification from the drone, and not by the drone crashing to the ground. 

The second goal of the software is to provide easy to use control of the drone, while still allowing advanced flying. This goal has played a large part in the controller design, which will hopefully be released in the upcoming weeks. The aim of this part of the software is to provide smart control of the drone, and to maximize the responsiveness of the hardware. Since the majority of software written so far is centered around the operating system, I will go more in depth about the user interface software in future updates. The third goal of the software is to be modular and easily updated. This way, we can quickly and efficiently produce updates for any bugs that may arise in the code, as well as coming up with advancements. The second part of this goal is to allow updates to happen to individual parts of the drone, which both reduces the time needed to update the drone, but also makes updates easier to produce, and thus making it possible for us to release them quicker. In other words, keeping software software. 

Now that I have gone over the goals, on to where we stand in the realm of software here at Thanics. Thus far, there is a complete prototype of the drone hardware control code, which was made using a testing drone, but has not yet been tested on a Halo prototype. This is the first layer of code, and unfortunately also one of the most tedious. This layer is what directly interacts with the hardware, and translates what the drone wants to do into what is required to get the hardware to do it, and also partially monitor the actions of the hardware to make sure they match the intent. Since every other layer of software must go through this one, it is imperative to get it right. After this part is finalized, then we can move on to the smart controlling of the drone. To put it in other terms, we are giving the drone the ability to move and control all of its components, next we need to give it a goal to accomplish, and instructions how to accomplish that goal.

-Darius Lukas, Chief Software Engineer