There are many important sectors of the aerospace industry, and one of the fastest growing and most hyped is that of the 'drone', or more properly, 'unmanned aerial vehicle' or 'system'- a UAV or UAS. With the beginning of the UAV Team, the Aerospace Club has opened up the possibility of projects which are almost entirely software based, bringing the realms of cutting-edge aerospace development directly to students of Computer Science and Computer and Software Engineering at the University of Nebraska-Lincoln.
Mission 8 Objectives
Fused Sensory Enhancement of a Human Operator by a Fleet of Aerial Robots
Aerial Target Destination
Head-to-Head Interaction with Opposing Aerial Robots
See the full competition rules here.
The team has made one of their drones and are working on making it fully automatic and controlled by voice commands. For the mission, 4 drones must stay with a human pilot as the pilot navigates an arena full of obstacles.
The IARC is the longest running collegiate aerial robotics competition in the world, challenging competing teams to develop robotic aerial systems considered impossible for any robots currently owned by government or industry. The IARC proceeds in a series of 'missions', with teams continuing to attempt a particular mission for multiple years until one team succeeds and a new mission is started.
While it's called 'Low Level', don't make the mistake that designing these systems only requires 'Low Skill'. When discussing control systems, levels refer to the distance a particular control system is away from interacting with an actual component. Using a business as an example, the lowest level of the business is the employee who manages nobody and simply does the work, while the highest level of the business is the boss, whose only job is to tell the rest of the employees what needs to get done. Low-Level Controls, in this case, is devoted to flight control of the quadcopter, taking instruction from the high-level CPU, and using a series of microcontrollers and sensors to move the quadcopter around in stable flight. Programming in C++, these microcontrollers communicate with electronic speed controllers (ESC's) which are themselves programmed specifically to the task, and which send signals to the motors. A suite of sensors also send signals to the microcontrollers, allowing the control system to determine the quadcopter's position relative to the ground, as well as orientation, rate of rotation, airspeed, and various other factors. All these variables must be recognized, examined for relevance, and the requisite adjustments sent either to the ESC's or back to the CPU so that the requested flight plan may be executed. Also within the realm of the Low-Level Group are those in charge of making sure all the necessary components of the quadcopter have power, as well as working with the Mechanical Group to ensure the correct motors are being used for the mission at hand.
For all the software work that goes into a UAV, it can't get off the ground without the necessary mechanical structures and systems for the software to interact with. To this end, our Mechanical Group is tasked with designing, producing, and assembling all structural and mechanical components of the quadcopter. These components have included everything from custom landing legs and specialty components for completing the competition, to a solution for battery attachment and testing and maintenance on the frame. This requires familiarity with the tools and equipment necessary for effective component production, including power tools, machine tools, and even a 3D printer, as well as computing tools. The computing tools used by the Mechanical Group mostly consist of the program Solidworks, to include its 3D CAD design suite, as well as structural and fluid simulation. When simulations require a second opinion, ANSYS is utilized.
While the Low-Level Control System deals mostly with the microcontroller systems, the High-Level Controls Group utilizes C++ and CUDA programming capabilities to operate the CPU and interrogate the necessary inputs to determine the goal hierarchy, path planning, and object recognition. On the current design, High-Level does this using an Nvidia Jetson TX1 and three cameras- two on the 'front' (given the quad can fly in any direction, front is an arbitrary decision) to allow stereoscopic vision for distance calculation, and one on the back for simple position awareness of Roombas. To consider these video inputs, the CPU uses OpenCV, an open-source computer vision library, to identify Roombas, obstacles, edges of the field, as well as distances to each. Altitude and airspeed may also be extrapolated from visual information, if necessary. When a determination is made about where the quadcopter must move to achieve the current goal (intercepting a Roomba, for example), the necessary directions for rotation, velocity, and altitude are sent to the microcontrollers of the Low-Level Group, to be interpreted as instructions for each motor.
One would expect that a team dealing with autonomous UAV development would primarily be made up of programmers, but we do manage to fit a few Mechanical and Electrical Engineering students onto the team, and they do some pretty essential work too! Of course, this team is open to any student of any major who would like to join to learn and help build our next UAV! You'll always be in good company here, with members who've worked for many locally based national and international companies, as well as aerospace and software companies based out of state, and government agencies like NASA.
Hardware lead: Tristin Gilbert
Software lead: Gerson Uriarte
Project Manager: Andrew Hossack
Secretary: Khawm Mung