The following image shows the Parrot Bebop quadrotor craft, which will be discussed in this section. This quadrotor is a larger quadrotor with more advanced features than the Crazyflie. The Bebop gathers data from onboard sensors such as the three-axes accelerometer, gyroscope, magnetometer, ultrasound sensor and pressure sensor to provide optimal stable control for flight and agile maneuvers. This ability for stable flight allows the pilot to obtain quality video and images with the onboard camera.
Parrot is a company, with headquarters in Paris, France, that produces products such as the Bebop quadrotor. As of November 2016, there is now a second version of Bebop: the Bebop 2. The Bebop 2 is described in detail on the Parrot website at https://www.parrot.com/us/drones/parrot-bebop-2#parrot-bebop-2. Some differences between the Bebop 1 and Bebop 2 are identified in the following table:
Factors |
Bebop 1 |
Bebop 2 |
---|---|---|
Price |
$399.99 |
$549.99 |
Battery life |
11 minutes |
25 minutes |
Max horizontal speed |
13 m/s |
16 m/s |
Max climbing speed |
2.5 m/s |
6 m/s |
Signal range |
up to 250 m |
up to 300 m |
GPS |
12 satellites max |
19 satellites max |
Camera |
14 megapixel; 180° fisheye |
14 megapixel; 180° fisheye (more tilted towards ground) |
Video |
3-axis full HD 1080p |
3-axis full HD 1080p |
Frame type |
250 mm |
290 mm |
Overall dimensions |
28 x 32 cm |
32.8 x 38.2 cm |
Propeller size |
14 cm |
15.2 cm |
Weight |
400 grams |
500 grams |
Colors |
yellow, red, blue |
red, white |
Other features |
LED tail light |
Both versions of Bebop can be controlled by the Parrot Skycontroller or by using smartphones or tablets. Operation of the Skycontroller is described on the following site: http://blog.parrot.com/2014/12/15/how-to-pilot-skycontroller/.
Bebop has onboard sensors for autonomous flight through the use of GPS for guidance. The Bebop also has a forward-looking camera for aerial photography. The Wi-Fi communications module of Bebop allows both manual control and control with a ROS package called bebop_autonomy
. The next section will concentrate on the use of the ROS software to control Bebop.
The bebop_autonomy
software is the ROS driver for Parrot Bebop 1 and Bebop 2 quadrotors based on the Parrot ARDrone SDK3 development kit. This driver was developed and is maintained at the Autonomy Lab of Simon Fraser University by Mani Monajjemi. We thank Mr. Monajjemi for his generous assistance in helping us prepare this section.
The instructions for loading the ROS software and using it for Bebop are well described at:
The features to be incorporated into bebop_autonomy
and the status of these features can be found in the documentation at https://media.readthedocs.org/pdf/bebop-autonomy/latest/bebop-autonomy.pdf. This document covers bebop_autonomy
versions for Indigo, Jade, and Kinetic.
To load the bebop_autonomy
software, first get the required Ubuntu packages with the following command:
$ sudo apt-get install build-essential python-rosdep python-catkin-tools
Update the system information on the newest versions of packages and their dependencies:
$ sudo apt-get update
Create the Bebop workspace bebop_ws
and download software from GitHub:
$ mkdir -p ~/bebop_ws/src $ cd ~/bebop_ws $ catkin init $ git clone https://github.com/AutonomyLab/bebop_autonomy.git src/bebop_autonomy
Use rosdep
to install the bebop_autonomy
package dependencies:
$ rosdep update $ rosdep install --from-paths src -i
Then, build the workspace:
$ catkin build
Once the software is loaded and the files are built, add the following statement in the .bashrc
file:
source ~/bebop_ws/devel/setup.bash
Also within the .bashrc
file, verify that the ROS_MASTER_URI
, the ROS_IP
, and the ROS_HOSTNAME
variables are not set.
Remember, adding the source statement to the .bashrc
file will apply it to each new terminal window opened.
Also, check your ROS package path with the following command:
$ echo $ROS_PACKAGE_PATH
The path /home/<username>/bebop_ws/src
should display as five paths on the screen:
/home/<username>/bebop_ws/src/bebop_autonomy/bebop_autonomy /home/<username>/bebop_ws/src/bebop_autonomy/bebop_description /home/<username>/bebop_ws/src/bebop_autonomy/bebop_msgs /home/<username>/bebop_ws/src/bebop_autonomy/bebop_driver /home/<username>/bebop_ws/src/bebop_autonomy/bebop_tools
The software download creates a number of packages that are used to control Bebop. The bebop_autonomy
package is actually a metapackage with a package.xml
file that lists four other packages, as follows:
bebop_description
which contains the URDF and mesh filesbebop_driver
which contains C++ code for the node bebop_driver_node
bebop_msgs
which contains messages used with Bebopbebop_tools
which contains miscellaneous tools for BebopPreparing to fly Bebop
Before flying Bebop, review the Bebop User's Guide available at http://www.parrot.com/usa/support/parrot-bebop-drone/.
Read the instructions in that document for the following points:
After a preflight check and clearing the flying area of people and obstructions, power on Bebop and wait for several minutes.
Using the Systems Settings tab in the Ubuntu desktop, select Network and check your wireless connections to see whether your computer is communicating with Bebop. You should see the Bebop network BebopDrone-<xxxxxxx>
. The numbers indicate the identification number of your Bebop. The IP address should be 192.168.42.1
for the Bebop as the Default Route.
Then, test the communications between the computer workstation and the Bebop by pinging the craft. From a terminal window, issue the ping command to the Bebop and wait for the response:
$ ping 192.168.42.1
PING 192.168.42.1 (192.168.42.1) 56(84) bytes of data. 64 bytes from 192.168.42.1: icmp_seq=1 ttl=64 time=9.41ms 64 bytes from 192.168.42.1: icmp_seq=2 ttl=64 time=5.46ms
Now, it is time to launch the bebop_driver
node and use commands to perform a takeoff and landing. Launch Bebop with the following command:
$ roslaunch bebop_driver bebop_node.launch
Explore the nodes and topics:
$ rosnode list
The output should be as follows:
/bebop/bebop_driver /bebop/robot_state_publisher /rosout
Then, type the following command:
$ rostopic list
This will produce a long list, in which the following topics are of interest in getting Bebop to take off and land:
/bebop/takeoff /bebop/land /bebop/reset /bebop/autoflight/navigate_home
Note that, in both lists, the namespace (ns) is bebop
and the items are listed as /bebop/<node>
or /bebop/<topic>
.
Watch it fly. Bebop goes straight up 1 meter after you execute the following command:
$ rostopic pub /bebop/takeoff std_msgs/Empty --once
The output should be as follows:
publishing and latching message for 3.0 seconds
Bebop will land when you issue this command:
$ rostopic pub /bebop/land std_msgs/Empty --once
The output is as follows:
publishing and latching message for 3.0 seconds
There are many other options for the Bebop that are not covered here. Refer to the Bebop website and the instructions for the bebop_autonomy
software previously listed to explore all of Bebop's functions.