First contact
This page takes you from a powered-up drone on a bench to a live telemetry dashboard on your screen, and it only ever asks the drone to report its state. Nothing here arms a motor or moves the aircraft. The whole walk-through assumes the propellers are off.
Join the drone’s network
Section titled “Join the drone’s network”Switch the drone on and give it half a minute. The first time we tried, ours did not appear within a minute. After a power cycle it showed up in about thirty seconds, and we do not yet know why, so a power cycle is worth trying before assuming something is broken. It appears as a network called Bebop2- and six characters, and it is open.
On Linux with NetworkManager, the one thing worth getting right is that the drone gives you no internet, and you do not want your computer to send everything through it. Make a profile that never becomes the default route:
nmcli dev wifi connect Bebop2-XXXXXX ifname wlan0nmcli con modify Bebop2-XXXXXX ipv4.never-default yes ipv6.method disabled connection.autoconnect noReplace Bebop2-XXXXXX with your drone’s name. You should be handed an address starting 192.168.42, and the drone itself answers at 192.168.42.1. If your computer has another connection, such as ethernet, it keeps carrying your normal traffic.
The tool
Section titled “The tool”We wrote a small command line tool for this, called bebop-2. It sits on top of a patched copy of the pyparrot library, because the stock one misreads several of the drone’s messages. The tool and its patched dependency live in the project’s repository, which is private for the moment, so this page describes what the commands do and not how to install them.
The commands you want first are these:
bebop-2 scan # look for the drone's access point; never joins itbebop-2 telemetry # read-only live dashboard, records a capturebebop-2 telemetry --discover # find the drone over mDNS instead of the fixed addressbebop-2 sim # a fake Bebop 2 on localhost, for working without the dronescan listens for networks and matches the drone by its vendor address prefix or by a name starting with “bebop”. It never joins anything.
telemetry connects and asks for exactly two things, the drone’s full state and its full settings. It then listens, draws a dashboard, and records everything it hears to a file in a captures folder. The project’s tests check that it sends no piloting command, and they check it against the simulator, which is the next best thing to checking it against the drone.
If you do not have a drone in front of you, sim starts a convincing fake on your own machine, and you point the dashboard at it with bebop-2 telemetry --ip 127.0.0.1. It is a good way to see what the dashboard does before you plug in the real thing.
What a healthy drone tells you
Section titled “What a healthy drone tells you”On the bench unit we used, the first few seconds of telemetry were enough to learn a lot. It reported its firmware as 4.7.1, passed all six of its own sensor self-tests (the inertial sensor, barometer, ultrasonic sensor, GPS, magnetometer and downward camera), and gave a real battery percentage. Attitude, speed and altitude updated about five times a second, and the GPS position about twice a second.
One thing looks odd and is not: without a GPS fix, positions read exactly 500, which is the drone’s way of saying “not available”, so a latitude of 500 is not a bug. One thing looks odd and we have not settled: our unit sat a few degrees off level in roll at rest, and we do not yet know whether that was the bench or the sensor.
When you are done, ctrl+c ends the dashboard, and the capture file is a plain line-by-line record you can keep, replay and read.
Comments
Spotted a mistake, or tried this on your own Bebop? Leave a note. Comments are kept on this site's own server.