'Tis the season to celebrate generosity and giving

Our Melbourne agile software development community can be described using many words - smart, resourceful, collaborative, clever. Even powerful. And one word that is top of mind for me right now is - generous.

Over the last few years, Flying Robot School (FRS) has seen wonderful acts of generosity from the agile community. In fact, it’s what’s kept the wind beneath our wings. And given ‘tis the season, I thought I’d write about it. In no particular order, here are some ways that individuals, community groups and companies have supported FRS:

1. Battle of the Agile Bands

It was four years ago that we got a phone call from Nigel Dalton “Hey guys, so I have a cheque of $5 100 from the Battle of the Agile Bands (BotAB) gig that we had the other night.” While this gesture alone was already so moving, impactful and generous, little did we know that this would be a year-on-year tradition.

botab2015.jpg

BotAB is now an iconic tech event that sees Melbourne-based agile companies compete - musically! Growing bigger and better each year, the 2018 instalment needed to be spread across 2 nights (2019: Rod Laver Arena).

Flying Robot School has received in excess of $22 000 since that first phone call. We could not be any more grateful to Nigel Dalton for kicking the initiative off and for continuing to support FRS with the event’s proceeds. And yes Nigel still sits at the door to welcome all ticket holders as they arrive :)

nigel dalton.jpg

2. DiUS

When FRS was forming, DiUS had no hesitation in helping us get it off the ground. Both Joe Losinno and Clency Coutet were instrumental in helping with the basics. We needed CASA certification, and we needed insurance. And of course we needed people power. DiUS generously supported FRS’ work by offering their staff time in lieu for each day-long FRS program that is run. And this continues on even today.

Thank you DiUS for helping build a solid foundation for FRS and for continuing to support us along the tarmac.

3. Ed Wong and the Melbourne Agile Community

Screen Shot 2018-12-30 at 9.27.14 am.png

“I have an idea”. When Ed Wong speaks those 4 magic words it’s wise to listen hard. Ed is a man of many ideas - all sparked by his kind and curious nature. He sought to find a way to better run his agile community meetups, and also create value for a community-based organisation at the same time. The problem Ed was trying to solve: too many people were reserving a spot but then just weren’t showing up on the night, which causes headaches for the organisers. The idea: each person that wants to attend the Meetup pays a fee when they RSVP. When they show up, they have the choice of having the money refunded, or donating it. If they don’t show up, then the money is donated. You can read more about his plan here

Inspired by the BotAB movement led by Nigel Dalton, he chose Flying Robot School as the beneficiary of his brave social experiment.

Screen Shot 2018-12-30 at 11.30.40 am.png

4. Our volunteer team

Co-Founders Pete Cohen, Daryl Wilding-McBride and I could not do this on our own - FRS would not be possible without the rest of our volunteer team. Thank you to Trevor Plant and Paula Felagakis who have each helped shape and deliver the programs to the schools. It’s been early mornings, long commutes, questionable caffeine, energetic activities (teaching is tiring) - and all with a smile. Thank you!

Screen Shot 2018-12-30 at 11.33.11 am.png

It’s a wonderful time of year, where giving and gratefulness is at its peak. We thank you to all of these groups and individuals that given so much to FRS and made it possible to deliver our program to over 11 regional or rural schools. And we are grateful that over 4 years on, we are still soaring at an awesome altitude.

On behalf of the Flying Robot School team, we hope you have a safe and restful break surrounded by laughter and those you love. We can’t wait for 2019 to arrive so that we can launch back into doing what we love.

Kurnai College

At the end of July, the Flying Robot School (FRS) visited Kurnai College in Morwell, Victoria. We were there to spend the day with twelve Year 9 and 10 students that had shown a keen interest in technology. We wanted to expose the students to flying drones and get them excited about pursuing further study and a future career in STEM.

We had three 3DR Solo drones available for use on the day. Two of the drones had been kindly sponsored by EquipSuper in conjunction with the Baw Baw Latrobe Local Learning and Employment Network (BBLLLEN). Each drone had a GoPro mounted on a 3-axis gimbal to enable aerial photography and a hand-held controller fitted with an Android tablet.

In preparation for a session of pilot training, we presented the major risks and safety hazards associated with drone flying. Emphasising the importance of safety is an essential component of the training, as students need to be aware and considerate of others when flying.

After forming their own teams, each student was given a turn at flying a drone on the school oval, while the others in their team completed a worksheet covering relevant scientific concepts such as longitude, latitude, quadcopter dynamics and positioning systems. All the students approached the flying task with enthusiasm, their faces beamed when they saw the drones take off - they were genuinely surprised with their abilities. It was also great to see the students researching answers for their worksheets online and working proactively in their teams.

IMG_5410.JPG

A highlight of the day involved the students solving a real-world challenge. The challenge was linked to an initiative called ‘WithOneSeed’. An aim of this initiative is to encourage East Timorese farmers to plant and maintain trees, thereby earning themselves carbon credits. The farmers can then make an income from selling these credits to companies wishing to offset their carbon emissions. Official auditing of a farmers compliance involves measuring the size of the trees they grow. We asked the students to use their problem solving skills and devise a way to measure the circumference of a tree using a drone and photogrammetry techniques.

DSC_0372.JPG

The students approached the task with a great work ethic, continuing to re-work their measurement method until they improved the accuracy of their answers. They collated their findings and presented these to the entire group. After a great day of flying, each student was awarded a certificate for their participation in the program.

DSC04404.JPG

The two drones donated by EquipSuper will remain at Kurnai College for a few months, before being rotated through other schools in the Baw Baw Latrobe region. The students have been encouraged to start their own flying robot club at their school and involve other students interested in technology and a career in STEM. The FRS is looking forward to visiting Lowanna Secondary College, Yallourn, in October.

Simulating an automated Solo mission

On the 3DR Solo, we can fly missions manually with the controller, or we can fly automated missions with a ground control station (GCS). By 'automated' we mean the aircraft is not controlled by manual input to the controller's sticks as usual, but rather it is controlled by the autopilot. We give the autopilot a series of points on a map, called waypoints, which make up a mission. We can then start the mission, monitor the aircraft's progress, and send it new commands in-flight, from the GCS.

Before we go and fly automated missions in the real world, it's a good idea to simulate the missions first. It's a good idea because a simulator makes it easy for you to get comfortable with automated missions before taking your precious drone outside for its first automated flight.

For the Solo, there's a nice way of doing that, using the same Tower app on an Android tablet that we will be using for real-world missions. This applies whether we are defining the mission on Tower, or writing a Python script to define the mission.

In this article, I will take you through the process of setting up your simulation environment for Solo missions. I'm going to assume you have access to a Windows PC, but it's also easy to do the same thing on OS X and Linux.

DroneKit

DroneKit is an open source library for creating your own flying robot applications. Through its interface (also known as an API), you can send commands to the flying robot, and monitor the robot's position and altitude. This means that you can use a GCS such as Tower to define and run your Solo missions, but you can also write a program to do that as well. This is useful because you might want to fly special moves that are difficult to define on a tablet, or you might want to have control of the Solo's onboard computer and sensors for extra-special missions.

Installing Python

Python is a great language for many applications, and especially good for robotics. That's why it is the language used by the DroneKit team. If you haven't already started writing scripts in Python, learning to use it to control flying robots is time well spent, and fun too.

Download and install the latest 2.7 from here:

https://www.python.org/downloads/windows/

You might be wondering why not use Python 3. Support for Python 3 in DroneKit is coming, but it's not here yet. The example scripts are still written for Python 2.7. As DroneKit is an open source project, you would be most welcome to contribute to it!

Install dronekit-sitl

SITL stands for 'software-in-the-loop'. It means that in our simulation setup we will be using the same software that controls a real Solo, which is called ArduPilot Copter. That means we can be sure that how the software behaves in the simulation will be quite close to how it performs in the real world, except for the weather, and obstacles like trees, of course.

To install dronekit-sitl, we will use the Python package manager, called pip.

pip install dronekit-sitl -UI

Install MAVProxy

MAVProxy is a very useful piece of software for our flying robot programming toolbox. It's a GCS but it's also a plumbing construction set for drone applications. Its name comes from the messaging protocol used by ArduPilot, called MAVLink, where MAV stands for 'micro air vehicle'.

Install the latest version at:

http://firmware.diydrones.com/Tools/MAVProxy/

There's a lot of useful information about MAVProxy here.

Install Tower

On your Android tablet, make sure the latest version of Tower is installed. Use the Play Store app to install Tower, and 3DR Services.

Find out your tablet's IP address

Tower provides a number of ways of connecting to the vehicle (in this case, our simulated vehicle). We'll be using UDP to communicate between MAVProxy and Tower. We will tell MAYProxy on the PC to send UDP packets to Tower on the tablet, which is going to be listening on port 14550. To do that, we need to know the tablet's IP address.

Go to Settings -> About device -> Status. There you should be able to find the tablet's IP address.

It will be different in your case, but for me it's 10.0.0.91. We'll use that in the next step.

Preparing Tower on your tablet

When you start Tower, you should see a screen similar to this one.

The startup screen in Tower.

The startup screen in Tower.

Change the protocol to UDP if it isn't already selected. Touch the three dots to specify the port we'll listen to for UDP messages.

Touch 'UDP Server Port' and enter 14550 for the port number.

Start the simulator

Now we're ready to start the simulator on the PC. By default, it will listen on port 5760 for connections.

dronekit-sitl copter-3.3

Start MAVProxy

Next we will start MAVProxy, telling it to connect to the simulator on port 5760, and to send its output to the tablet on port 14550, where Tower will be listening. Make sure to substitute the tablet's IP address in the --out parameter.

In a Command Prompt separate to the one where we started the simulator:

"C:\Program Files (x86)\MAVProxy\mavproxy.exe” --master tcp:127.0.0.1:5760 —out udpout:10.0.0.91:14550

If all is going to plan, on the Windows PC you should see command prompts with the output of the simulator and MAVProxy, which should be connected, and MAVProxy waiting for a connection from Tower.

Connect with Tower

On the Android tablet, in Tower, connect to MAVProxy and the simulator. Now you're all set to plan a mission and execute it, as if you were flying a real Solo.

Here's the setup we just created.

To try it out, define a very simple mission with three waypoints.

Upload the mission to the (simulated) vehicle. When you do that, Tower will automatically add takeoff and return-to-launch (RTL) commands to the mission.

When you're ready to fly the mission, touch 'Arm' and 'Auto'. You will see the aircraft's altitude increase to the mission altitude, in this case 80 meters above ground level (AGL).

The blue rectangle under the aircraft in the display represents what the aircraft's camera can see on the ground, which is useful for ground surveys, and something we'll use in later projects.

Summing up

In the next article, I'll build on the simulator setup here and take you through the process of writing a Python script to run an automated mission. Until then, take your time and get to know Tower with the simulator.