Programming a Parrot Minidrone using Simulink
You know what I did this weekend? Yes, as the title of this post says, I deployed custom flight control software to my Parrot Rolling Spider Minidrone
Simulink Support Package for Parrot Minidrones
Last Christmas, my girlfriend got me one of those Parrot Rolling Spider Minidrone.
Immediately, I thought it would be cool to program it using Simulink. At that time, I did some research and it sounded pretty complicated to install a custom firmware and glue all the necessary code together.
Not anymore, with the recent release of the Parrot Minidrones Support Package.
Today I will describe my first experience using this package.
Installation
To get started, open the Add-On Explorer from the MATLAB toolstrip.
In the Explorer, search for "Parrot Minidrone", click Install, and follow the instructions. Once the package is installed, the installer will guide you through the hardware setup.
This setup will first update the minidrone firmware. Notice that once the firmware is updated, you will not be able to fly the minidrone from the smartphone app anymore. As one of my colleagues likes to say: When you update the firmware, you are converting a toy into an experimental device.
If you want to bring your minidrone back to "toy mode", you will need to go to the Parrot website and follow the instructions to reset the original firmware.
Once the firmware is updated, you will need to connect to the minidrone through Bluetooth. Once again, the Hardware Setup window will guide you through all the steps:
First Test
The best way to get started with programming the minidrone is using the Quadcopter Project, included with the Aerospace Blockset. In MATLAB, type asbQuadcopterStart to open the example.
This example is a full simulation of a Parrot minidrone. As you can imagine, we will not generate code for this entire model. What we want is generating code for the model flightControlSystem.slx, which is referenced by the FCS block.
In the Simulink Project click on the shortcut named Set Parrot Target
This will setup a few things in the model configuration to make the generated code compatible with the minidrone.
In the model, click the Build Button to generate code. Once the code generation is complete, go to the MATLAB prompt to connect to the minidrone, and start execution of the code.
For a first test, the line p.setPowerGain(20) is probably a good idea. It will instruct the drone to use 20% of the power available. That way, the drone will not fly, but the motors will move to confirm that the code is running.
What's Next?
The way things work, the customized firmware expects a library with a specific function and signature. In the example model, there are two bus objects specified on the two root-level Inport matching this expected signature. As output, a vector of 4 power commands, one per motor, is expected.
To familiarize yourself with all the sensors available, I recommend enabling MAT-file logging in the model configuration, and use To Workspace blocks in the model to log the sensors signals. After your flight terminates, you will then be able to exeute p.getMatFile to retrieve the logged signals from the drone and analyze them.
My First flight
Confirm that I could change the model and see the effect, I used a Signal Builder to command the drone to fly at a fixed height and move left and right. Here is what it looks like in action:
Now it's your turn
Install the Simulink Support Package for Parrot Minidrones and let us know if you are able to improve the stability of the flight controller, or implement cool features like line or target tracking using the downward pointing camera.
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.