Autonomy S24

Title: WARG - Software Engineering Co-op

Manager: Tong Zhang (Tron 2B, Resume, Linkedin)

Compensation and Benefits Information: This position is unpaid.

Location & Time Commitment:

This position is hybrid or in person in Waterloo. You will have very flexible hours as you desire and are free to set your own schedule, but we will expect you to be available for our team meetings which tend to take place in the evenings and weekly flight tests which occur over the weekends (you don’t have to attend if your project isn’t being tested, but it’s highly encouraged). Our equipment, hardware, and aerial vehicles are in our E5 bay which will be required for job responsibilities.

Team Summary:

The Waterloo Aerial Robotics Group (WARG) is a student design team at the University of Waterloo competing annually in the Aerial Evolution Association of Canada's (AEAC) Student Competition. We are a passionate group of students focused on innovating in the Unmanned Aerial Vehicle industry. We take pride in building everything ourselves, from the autopilot, frame, and computer vision software, to our custom designed ZeroPilot board used in our aircraft.

The Autonomy subteam is responsible for developing and implementing custom software solutions for autonomous drone operations. As the AEAC competition and drone technology at large shift towards autonomous operations, our role becomes increasingly significant.

Project Descriptions:

You have the option of working on either or both of these projects.

Project 1 Custom Object Avoidance:

This project focuses on developing a Python module for our drones to autonomously avoid obstacles using LiDAR technology. The main objective is to create a system that enables our drones to navigate safely in complex environments without human intervention. You will be the primary developer for this project, with opportunities to lead and design the architecture.

Project 2 Integrated Monitoring And Command Station (IMACS) 2.0:

IMACS 2.0 is a custom desktop application used by WARG to monitor and control drones. The application includes a user interface which allows pilots and ground station operators to quickly read important drone telemetry in real time such as position, orientation, and status of drone components (e.g. battery voltage). Ground station operators can also command the drone through the application interface.

IMACS 2.0 is written in the Dart programming language with the Flutter framework. You will be the primary developer for this project.

Job Responsibilities:

Project 1 Custom Object Avoidance

  • Develop a Python module to allow our drones to autonomously avoid obstacles.

  • Design and implement an object detection algorithm using LiDAR data to detect obstacles.

  • Communicate with ArduPilot flight controller via dronekit-python commands.

Project 2 IMACS 2.0

  • Develop a user interface using the Dart programming language and the Flutter framework.

  • Work with the Dart MAVLink library to communicate with ArduPilot flight controller via MAVLink messages.

  • Implement front-end logic and GUI elements that interacts with the drone data telemetry system.

Required Skills:

  • Problem solving: ability to independently experiment and research when you get stuck.

  • Programming skills: experience writing software, reading/writing documentation, and testing/debugging code.

  • A drive to learn and contribute: design teams are all about growth and passion, and we want you to be serious about achieving something you can be proud of at WARG and stay on after your co-op ends.

  • Strong communication skills: capable of staying in contact with various stakeholders, participating in technical discussions, and asking thoughtful questions.

  • Bonus skills:

    • Specific to Project 1: Experience with Python, concurrency and multithreading, LiDAR.

    • Specific to Project 2: Experience with Dart, Flutter, user interface design.

    • Experience with ArduPilot and MAVLink.

    • Experience with Git/version control and code review.

    • Experience with Asana and Confluence.