Difference between revisions of "Bebop"

From PaparazziUAV
Jump to navigation Jump to search
 
(85 intermediate revisions by 11 users not shown)
Line 3: Line 3:
<div style="float: right; width: 40%">__TOC__</div>
<div style="float: right; width: 40%">__TOC__</div>


The [http://www.parrot.com/usa/products/bebop-drone/ Bebop] from [http://www.parrot.com/ Parrot] is an Wifi controlled flying quadrotor and is designed to be controlled with Android and iOS devices.


== Features ==
= Introduction =
=== Connectivity ===
 
* Wi-Fi antennas: MIMO dual-band with 2 double-set of ceramic antennas for 2.4 and 5 GHz
By default the [http://www.parrot.com/usa/products/bebop-drone/ Bebop] from [http://www.parrot.com/ Parrot] is a Wifi controlled flying quadrotor, designed to be controlled with an Android or iOS device.
 
'''No more restrictions''' as from now; with a few simple clicks you can '''run Paparazzi on the Bebop''' and have full autonomous flight and much more!
 
= Getting started =
 
== What you need==
# A Bebop or Bebop 2 updated to at least firmware v3.3.0
# A joystick, for example [http://www.hobbyking.com/hobbyking/store/__20951__Hobbyking_6CH_RC_Flight_Simulator_System_Mode_2_.html this one]
# A laptop with Ubuntu installed
 
Steps to follow:
# Install Paparazzi via [http://wiki.paparazziuav.org/wiki/Installation the one liner to be found here]. Just Cut 'n Paste (CTRL+C from webbrowser then CTRL+SHIFT+V in your Linux terminal) and press ENTER
# Start Paparazzi Center with the default configuration
# Power up your Bebop
# Press the '''on/off button four times''' short fast half a second clicks '''after''' the bebop is fully powerd up, notice the solid green light on Bebop and solid Red on Bebop 2
# Make a Wifi connection with your PC and the Bebop
# In the Paparazzi center choose "Bebop" Or "Bebop2" in the airframe dropdown menu
# Press the "Upload" button in the Paparazzi Center, wait...
# Select Flight UDP/Wifi in the session menu
# Press execute
 
Voila, you will get telemetry from your Bebop. Now it is up to you how and where to fly.
 
==Instruction Video==
TIP: Good [https://www.youtube.com/watch?v=eojAPZvT1Ck video series to watch]. Although it is made for the ARDrone 2, the steps are very similar for the Bebop drone.
 
= Features =
== Connectivity ==
* Wi-Fi antennas: MIMO dual-band with 2 double-set of dipole antennas for 2.4 and 5 GHz
* Sending power: Up to 26 dBm
* Sending power: Up to 26 dBm
* Signal range: N/A
* Signal range: N/A


=== Structure ===
== Structure ==
* 4 Brushless Outrunner motors
* 4 Brushless Outrunner motors
* Glass fiber reinforced (15%) ABS structure
* Glass fiber reinforced (15%) ABS structure
Line 18: Line 46:
* Anti-vibration bumpers
* Anti-vibration bumpers


=== Camera ===
=== Full Motor details ===
 
Handy in case for a simulator motor model
 
====Bebop====
* Magnets: 12
* Stators: 9
* Layers of stator metal: 15
 
* Copper windings: 34
* Copper diameter: 0.29mm
* Copper resistance: over 50 cm wire ~0.3 ohm
 
Dimentions:
* Flange height 7.67mm
* Flange dia22.7mm
* Axis length 19.4mm
* Axis dia 1.9 mm
* Statorheight 5.55mm
* Stator diam 18.33mm
 
Weight:
* Flange weight 3.05g
* Flange and magnets 5.15g (Magnet ~ 1.5mm thick on a Flange dia22.7mm)
* Magnet only (and the glue) 2.1g
 
====Bebop 2====
* No dat (yet) It ould be nice if you could demolish on of your Bebop 2 motors or a spare one and add your data here.
 
== Camera ==
* Camera with "Fisheye" lens 180° 1/2,3": 6 optical elements and 14 Mega pixels sensor
* Camera with "Fisheye" lens 180° 1/2,3": 6 optical elements and 14 Mega pixels sensor
* Video stabilization: Digital on 3-axes
* Video stabilization: Digital on 3-axes
Line 28: Line 85:
* Extended memory: Micro USB
* Extended memory: Micro USB


=== Battery ===
== Battery ==
 
Bebop 1
* Lithium Polymer 1200 mAh
* Lithium Polymer 1200 mAh
* Flight time: Around 12 minutes
* Flight time: Around 12 minutes


=== Processor ===
Bebop 2
* Lithium Ion Polymer 2700 mAh
* Flight time: Around 22 minutes
* Max discharge rate 21.5A
* Max charge rate 3.5A
 
== Processor ==
* Motherboard:
* Motherboard:
** Parrot P7 dual-core CPU Cortex 9
** Parrot P7 dual-core CPU Cortex A9
** Quad core GPU
** Quad core GPU
** 8Gb flash memory
** 8Gb flash memory
* All fixed on a magnesium shelf that acts as electromagnetic shielding and as a radiator
* All fixed on a magnesium shelf that acts as electromagnetic shielding and in the same run as a heat sink for heat dissipation and cooling of the all the onboard processors
* Operating system: Linux
* Developping: Open-source SDK


=== Sensors ===
== Sensors ==
* 3-axes magnetometer (AKM 8963)
* 3-axes magnetometer (AKM 8963)
* 3-axes gyroscope (MPU 6050)
* 3-axes gyroscope (MPU 6050)
Line 49: Line 112:
* Pressure sensor (MS 5607)
* Pressure sensor (MS 5607)


=== Geo-location ===
== Geo-location ==
* GNSS (GPS + GLONASS + Galileo, Furuno GN-87F)
* Bebop 1: GNSS (GPS + GLONASS + Galileo, [http://www.furuno.com/en/products/gnss-module/GN-87 Furuno GN-87F])
* Bebop 2: GNSS (GPS + GLONASS + Galileo, Baidu, [https://www.u-blox.com/en/product/neo-m8-series])


=== Dimensions ===
== Dimensions ==
* 28x32x3.6cm without the hull
* 28x32x3.6cm without the hull
* 33x38x3.6cm with the hull
* 33x38x3.6cm with the hull


=== Weight ===
== Weight ==
 
=== Bebop 1 ===
* 380g without the hull
* 380g without the hull
* 400g with the hull
* 400g with the hull


== Pinout ==
=== Bebop 2 ===
=== GPIO ===
 
* 85 Fan enable
{| class="wikitable"
* 90 Vsync horizontal camera
! component
! weight
! quantity
!
! notes
|-
| motor
| 16.5
| 4
| 66
| with screws mounting motors
|-
| landing gear
| 2.4
| 4
| 9.6
|
|-
| frame
| 49.5
| 1
| 49.5
| with legs
|-
| rotor
| 5.0
| 4
| 20
|
|-
| battery
| 196.0
| 1
| 196
|
|-
| camera magnesium frame
| 7.3
| 1
| 7.3
| with all screws on it
|-
| camera
| 14.7
| 1
| 14.7
|
|-
| camera protector
| 9.0
| 1
| 9
|
|-
| GPS sensor module
| 16.0
| 1
| 16
|
|-
| foam cover
| 7.2
| 1
| 7.2
|
|-
| main board
| 107.0
| 1
| 107
| measured with all wires on it
|-
| Dampers
| 2.1
| 4
| 8.4
| dampers plus screws
|-
|
|
|
|
|
|-
| Total
|
|
| 510.7
| (511,91 measured for another BB2)
|}
 
== OS/Software ==
* Operating system: Linux (kernel 3.4.11 #3 SMP PREEMPT)
* glibc: (Sourcery CodeBench Lite 2012.03-57) 2.15
* libstdc++: GLIBCXX_3.4 - GLIBCXX_3.4.16
 
= Pinout =
== GPIO ==
* 6 Fans Enable
* 9 WiFi Reset
* 73 P7MU IRQ
* 81 GPS Power Enable
* 85 Fan Enable
* 89 VCAM FSYNC gyro
* 90 HCAM FSYNC gyro
* 91 DRDY MPU6050
* 91 DRDY MPU6050
* 201 On/Off button (default monitor to files running: /bin/onoffbutton)
* 124 Magneto interrupt
* 202 HOST_MODE_3V3
* 128 (video) Slew rate??
* 129 Vertical camera enable
* 129 VCAM enable
* 132 Horizontal camera enable
* 130 (video) Slew rate??
* 132 HCAM enable
* 199 BLDC micro-controller reset (forces it into bootloader) ON/OFF
* 199 BLDC micro-controller reset (forces it into bootloader) ON/OFF
* 200 US Pulse level
* 200 US Pulse level
* 202 USB Host mode pin
* 201 On/Off button (default monitor to files running: /bin/onoffbutton)
* 202 USB Host mode pin 3V3 (HOST_MODE_3V3)
* 203 USB Host mode on
* 204 USB0 OC


=== PWM ===
== PWM ==
* 6 Heating resistor for warming IMU sensors (125000ns period, 0ns duty)
* 6 Heating resistor for warming IMU sensors (125000ns period, 0ns duty)
* 8 MPU6050 clock (31510ns period, 15258ns duty) Desired frequency is 32768kHz with 50% duty cycle (period=30517us). Period was set empirically to 31517 to get a 5ms data ready period. esired frequency is slightly modified to synchronize camera and IMU
* 8 MPU6050 clock (31510ns period, 15258ns duty) Desired frequency is 32768kHz with 50% duty cycle (period=30517us). Period was set empirically to 31517 to get a 5ms data ready period. Desired frequency is slightly modified to synchronize camera and IMU
* 9 Vertical camera clock (23ns period = 43MHz)
* 9 Vertical camera clock (23ns period = 43MHz)
* 11 Horizontal camera lock (77ns period = 13MHz)
* 11 Horizontal camera lock (77ns period = 13MHz)


=== I2C ===
== I2C ==
* I2C-0
* I2C-0
** FPGA
** FPGA
** P7MU
** P7MU        
** MT9f002      CMOS [https://www.aptina.com/products/dsc%1Cdvc/mt9f002/ MT9f002]
** EEPROM    Unknown EEPROM for Front camera calibration (addr 0x55)
** MT9v117    VGA System-On-A-Chip (SOC) CMOS Digital Image Sensor [http://www.aptina.com/assets/downloadDocument.do?id=553 MT9v117]
** MT9f002      CMOS Digital Image Sensor (1/2.3 inch 14Mp, front camera) [http://www.onsemi.com/PowerSolutions/product.do?id=MT9F002 MT9f002] (addr 0x10)
** MT9v117    CMOS Digital Image Sensor (1/6 inch VGA, bottom camera) [http://www.aptina.com/assets/downloadDocument.do?id=553 MT9v117] (addr 0x5d)
* I2C-1
* I2C-1
** Cypress      Motor Controller (Parrot BLDC)
** Cypress      Motor Controller (Parrot BLDC) [[Bebop/BLDC]] (addr 0x08)
** AKM8963    Magnetometer [http://www.akm.com/akm/en/file/datasheet/AK8963.pdf AK8963]
** AKM8963    Magnetometer [http://www.akm.com/akm/en/file/datasheet/AK8963.pdf AK8963]
** MS5607      Barometer [http://meas-spec.com/product/pressure/MS5607-02BA03.aspx MS5607]
** MS5607      Barometer [http://meas-spec.com/product/pressure/MS5607-02BA03.aspx MS5607]
* I2C-2
* I2C-2
** MPU6050    Gyro + Accel [http://invensense.com/mems/gyro/documents/RM-MPU-6000A.pdf MPU6050]
** MPU6050    Gyro + Accel [http://invensense.com/mems/gyro/documents/RM-MPU-6000A.pdf MPU6050] (rotation changed in version 2)


=== UART ===
== SPI ==
* ttyPA1          GPS (Furuno GN-87F)
* spidev1.0 Sonar (Only data pin connected for generating pulses)


== Actuators ==
== UART ==
The Bebop has 4 Brushless motors, which are controlled by the cypress chip on I2C-1. This Cypress chip contains costum made firmware(BLDC) from Parrot, which can be automatically updated using a bootloader.
* ttyPA1          GPS (Furuno GN-87F on v1 and Ublox Neo M8N on v2)
The firmware from Parrot contains a very nice closed loop RPM control, which is automatically tuned inside the factory.


For more information about how to communicate with the BLDC look at [[Bebop/bldc]].
== Other ==
* /dev/hx280 Hantro (On2) Video encoder. Hantro chip video encoder used for the HCAM.
* /sys/bus/iio/devices/iio:device0 (p7mu-adc_2) Sonar ADC
 
== Serial console ==
A physical serial port is accessible under the front cover. You can remove it properly by removing the 2 screws holding it and then cutting the glue between the foam and the main body with a thin blade.
See [https://ardupilot.org/dev/docs/building-for-bebop-on-linux.html] for pictures.
 
The serial port on Bebop side is <code>/dev/ttyPA0</code> at 115200 bauds.
If you can see the console output from an external terminal but don't get the prompt to type command, log with telnet and add the following line to the <code>/etc/init.d/rcS</code> file:
 
  sh --login < /dev/ttyPA0 > /dev/ttyPA0 &
 
=  Actuators =
The Bebop has 4 Brushless motors, which are controlled by the cypress chip on I2C-1. This Cypress chip contains custom made firmware(BLDC) by Parrot, which can be automatically updated using a bootloader in the ESC part of the mainboard.
The firmware from Parrot contains a nice closed loop RPM control, which is automatically tuned inside the factory.
Since version 2 Parrot changed the order and rotation direction of the motors.
 
For more information about how to communicate with the BLDC look at [[Bebop/BLDC]]. Or take a look at the "bebop" actuator inside the <code>airborne/boards/bebop/</code> folder.
 
= Onboard applications =
 
The original programs on the Bebop


== Programs ==
* /usr/bin/dragon-prog Main program that controls the drone
* /usr/bin/dragon-prog Main program that controls the drone
* /bin/watchdog.sh Checks if Dragon is still running and reboots dragon
* /bin/watchdog.sh Checks if Dragon is still running and reboots dragon-prog if it somehow would not be running anymore
 
* BLDC_Test_Bench Controls the Brushless Motor Controllers for testing and playing sounds etc.
* BLDC_Test_Bench Controls the Brushless Motor Controllers for testing and playing sounds etc.
* bcmwl Everything with wifi
* bcmwl Everything with wifi
* diagnostic Outputs sensor diagnostic
* diagnostic Outputs sensor diagnostic
* mk3_camera_eeprom                    Reads the front camera EEPROM
* config_mt9v117                              Configure the bottom camera
= Cross compiler =
For the Bebop you need to use a recent version GNU gcc-arm-linux-gnueabi (Ubuntu/Linaro 4.7.4-2ubuntu1) 4.7.4 provided with Ubuntu since 14.04 LTS.
[http://electronics.stackexchange.com/questions/21594/is-code-sourcery-g-lite-still-a-viable-projectIn the past you could also crosscompile with Sourcery CodeBench Lite 2012.03-57 for ARM GNU/Linux from <s>Greedy</s> Mentor Graphics, previously called codesourcery. However the open'ness there is nowhere to be found anymore, so we'll say "No thanks" to Codesourcery ,now <s>Greedy</s> Mentor"]
but if you [https://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2012.03-57-arm-none-linux-gnueabi.bin insist] , feel <s>free</s> restricted.
If you somehow need to compile kernel driver files to run on your Parrot Bebop, well, yes, you must use [https://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2012.03-57-arm-none-linux-gnueabi.bin that exact compiler...]
= Tips & Tricks =
== Video ==
Make sure the [http://docs.paparazziuav.org/latest/module__video_rtp_stream.html video_rtp_stream.xml] module enabled in the airframe.
Receive a video stream with e.g. avplay, vlc or a python app:
$ avplay -loglevel quiet -max_delay 50 -fflags nobuffer rtp://192.168.42.1:5000
or
$ vlc ~/paparazzi/var/sdp_tmp/192.168.42.1/stream.sdp
or
$ ~/paparazzi/sw/tools/rtp_viewer/rtp_viewer.py
== Factory Reset ==
You can reset the Parrot Bebop Drone to factory settings. You '''will''' loose all your photos and movies recorded on your Bebop.
To do this you need to press and hold the power button for 10 seconds. The LED will blink green and orange for a while, then green and the drone will shutdown. For Bebop2 the Red LED will blink. Bebop2 Power the Blue LED will blink.
== Getting rid of 4x buttonpress ==
Per default with latest frimware telnet access over Wifi is blocked. To reanable this there is a PPRZ configuration script work together with pprz.conf on your drone
== Firmware ==
Although Paparazzi volunteers test flew the Bebop with old Firmware v1.98.11 and v2.0.57, v3.0, v3.2, v3.3, v3.9 Use the latest firmware available for your Parrot. As a bonus With the latest firmware one gets better video imagery among all other improvements.
* v4.0.6 is the latest firmware for Bebop 1.
* v4.7.1 is the latest firmware for Bebop 2
Since Parrot stopped producing Bebop's, those firmware version will be the ultimate final firmwares to exist.
== Damper ==
The original Bebop2 damper are very soft and can cause oscillations around roll. You can print harder dampers from [http://www.thingiverse.com/thing:2135529 Thingiverse] yourself that will degrade the video quality but remove these oscillations. Use the _nodamp airframe files in that case.
Or just add a 3mm thick plastic washer inbetween top nut and the body, don't forget put some 243 locktite on the nut again, else it '''will''' vibrate off
== Serial bidirectional teminal access ==
This is handy if one e.g want to dump and set the build in GPS with software like uCenter on a PC. uCenter also run under Wine.
To do so you first have to set up a connection between U-center and the drone. This done by forwarding the GPS data from the drone to your laptop using a TCP connection. From your laptop this TCP connection is then forwarded to a wine COM port in order to make it readable for U-center.
First open a terminal and listen on your laptop for incoming TCP connections on port 12345.
    $ socat -d -dd pty,raw,echo=0 tcp-listen:12345
Then open a telnet session (while connected to the wifi of the drone) using:
    $ telnet 192.168.42.1
and forward the GPS data to the server you just created (in the telnet session):
    $ nc <your_ip_address> 12345 </dev/ttyPA1 >/dev/ttyPA1
Switch back to the terminal in which you started listening to the tcp port. You should see that an incoming connection has been accepted. The port to which the connection is transferred to is also shown (see Figure).
[[File:Socat accepted the connection.png|500px|Socat accepted the connection]]
The next step is to link this port to a wine COM port. In the following example port /dev/pts/4 is linked to ./com32.
    $ cd ~/.wine/dosdevices
    $ ln -sf /dev/pts/4 ./com32
You should now be able to read the GPS data from u-center under the specified com port.
= Using the MicroUSB for serial data =
The Parrot Bebop, as well as the Parrot Disco have a micro USB connector on the main control board. This USB connector can be used to connect 3rd party equipment. For example with help of a USB to Serial conversion board, bidirectional serial communication to another serial device.
To use the driver in current firmware OTG serving should be off. [[use_the_USB_port_on_Parrot_Drones|Take a look here for more information, photos, connection examples, sourecode and real life examples]] of how to use this port.


== Cross compiler ==
= Swarm of Bebops =
For the Bebop you can't use the GNU gcc-arm-linux-gnueabi, which was used for the ARDrone 2 in the past. So this means the cross compiler isn't included in the paparazzi-dev package.
The cross compiler you need for the Bebop is the Sourcery CodeBench Lite 2012.03-57 for ARM GNU/Linux from Mentor Graphics (previously codesourcery).


This cross compiler is available here: [https://sourcery.mentor.com/GNUToolchain/release2187 Sourcery CodeBench Lite 2012.03-57 for ARM GNU/Linux]. Please install this crosscompiler in the /usr/local/codesourcery/ directory of your computer, to make sure paparazzi is able to find the cross compiler.
[[Multiple_Parrot_Drones_as_Swarm_via_WiFi_Router| Multiple Parrot Drones as Swarm via WiFi Router]]


[[Category:Autopilots]]
[[Category:Autopilots]]

Latest revision as of 10:25, 28 September 2022

Parrot Bebop


Introduction

By default the Bebop from Parrot is a Wifi controlled flying quadrotor, designed to be controlled with an Android or iOS device.

No more restrictions as from now; with a few simple clicks you can run Paparazzi on the Bebop and have full autonomous flight and much more!

Getting started

What you need

  1. A Bebop or Bebop 2 updated to at least firmware v3.3.0
  2. A joystick, for example this one
  3. A laptop with Ubuntu installed

Steps to follow:

  1. Install Paparazzi via the one liner to be found here. Just Cut 'n Paste (CTRL+C from webbrowser then CTRL+SHIFT+V in your Linux terminal) and press ENTER
  2. Start Paparazzi Center with the default configuration
  3. Power up your Bebop
  4. Press the on/off button four times short fast half a second clicks after the bebop is fully powerd up, notice the solid green light on Bebop and solid Red on Bebop 2
  5. Make a Wifi connection with your PC and the Bebop
  6. In the Paparazzi center choose "Bebop" Or "Bebop2" in the airframe dropdown menu
  7. Press the "Upload" button in the Paparazzi Center, wait...
  8. Select Flight UDP/Wifi in the session menu
  9. Press execute

Voila, you will get telemetry from your Bebop. Now it is up to you how and where to fly.

Instruction Video

TIP: Good video series to watch. Although it is made for the ARDrone 2, the steps are very similar for the Bebop drone.

Features

Connectivity

  • Wi-Fi antennas: MIMO dual-band with 2 double-set of dipole antennas for 2.4 and 5 GHz
  • Sending power: Up to 26 dBm
  • Signal range: N/A

Structure

  • 4 Brushless Outrunner motors
  • Glass fiber reinforced (15%) ABS structure
  • High-resistance EPP outdoor hull: Clip and unclip easily to adapt to indoor and outdoor flight, protects the propellers against potential bumps, can be removed to reduce wind factor
  • Three-blade auto-block propellers in Polycarbonate with fast disassembly system
  • Anti-vibration bumpers

Full Motor details

Handy in case for a simulator motor model

Bebop

  • Magnets: 12
  • Stators: 9
  • Layers of stator metal: 15
  • Copper windings: 34
  • Copper diameter: 0.29mm
  • Copper resistance: over 50 cm wire ~0.3 ohm

Dimentions:

  • Flange height 7.67mm
  • Flange dia22.7mm
  • Axis length 19.4mm
  • Axis dia 1.9 mm
  • Statorheight 5.55mm
  • Stator diam 18.33mm

Weight:

  • Flange weight 3.05g
  • Flange and magnets 5.15g (Magnet ~ 1.5mm thick on a Flange dia22.7mm)
  • Magnet only (and the glue) 2.1g

Bebop 2

  • No dat (yet) It ould be nice if you could demolish on of your Bebop 2 motors or a spare one and add your data here.

Camera

  • Camera with "Fisheye" lens 180° 1/2,3": 6 optical elements and 14 Mega pixels sensor
  • Video stabilization: Digital on 3-axes
  • Video definition: 1920x1080p (30fps)
  • Photo definition: 3800x3188 pixels
  • Video encoding: H264
  • Photo file format: RAW, DNG
  • Internal memory: Flash 8 GB
  • Extended memory: Micro USB

Battery

Bebop 1

  • Lithium Polymer 1200 mAh
  • Flight time: Around 12 minutes

Bebop 2

  • Lithium Ion Polymer 2700 mAh
  • Flight time: Around 22 minutes
  • Max discharge rate 21.5A
  • Max charge rate 3.5A

Processor

  • Motherboard:
    • Parrot P7 dual-core CPU Cortex A9
    • Quad core GPU
    • 8Gb flash memory
  • All fixed on a magnesium shelf that acts as electromagnetic shielding and in the same run as a heat sink for heat dissipation and cooling of the all the onboard processors

Sensors

  • 3-axes magnetometer (AKM 8963)
  • 3-axes gyroscope (MPU 6050)
  • 3-axes accelerometer (MPU 6050)
  • Optical-flow sensor (Fig.8): Vertical stabilization camera (Every 16 milliseconds, an image of the ground is taken and compared to the previous one to determine the speed of the Bebop Drone)
  • Ultrasound sensor (Analyzes the flight altitude up to 8 meters)
  • Pressure sensor (MS 5607)

Geo-location

  • Bebop 1: GNSS (GPS + GLONASS + Galileo, Furuno GN-87F)
  • Bebop 2: GNSS (GPS + GLONASS + Galileo, Baidu, [1])

Dimensions

  • 28x32x3.6cm without the hull
  • 33x38x3.6cm with the hull

Weight

Bebop 1

  • 380g without the hull
  • 400g with the hull

Bebop 2

component weight quantity notes
motor 16.5 4 66 with screws mounting motors
landing gear 2.4 4 9.6
frame 49.5 1 49.5 with legs
rotor 5.0 4 20
battery 196.0 1 196
camera magnesium frame 7.3 1 7.3 with all screws on it
camera 14.7 1 14.7
camera protector 9.0 1 9
GPS sensor module 16.0 1 16
foam cover 7.2 1 7.2
main board 107.0 1 107 measured with all wires on it
Dampers 2.1 4 8.4 dampers plus screws
Total 510.7 (511,91 measured for another BB2)

OS/Software

  • Operating system: Linux (kernel 3.4.11 #3 SMP PREEMPT)
  • glibc: (Sourcery CodeBench Lite 2012.03-57) 2.15
  • libstdc++: GLIBCXX_3.4 - GLIBCXX_3.4.16

Pinout

GPIO

  • 6 Fans Enable
  • 9 WiFi Reset
  • 73 P7MU IRQ
  • 81 GPS Power Enable
  • 85 Fan Enable
  • 89 VCAM FSYNC gyro
  • 90 HCAM FSYNC gyro
  • 91 DRDY MPU6050
  • 124 Magneto interrupt
  • 128 (video) Slew rate??
  • 129 VCAM enable
  • 130 (video) Slew rate??
  • 132 HCAM enable
  • 199 BLDC micro-controller reset (forces it into bootloader) ON/OFF
  • 200 US Pulse level
  • 201 On/Off button (default monitor to files running: /bin/onoffbutton)
  • 202 USB Host mode pin 3V3 (HOST_MODE_3V3)
  • 203 USB Host mode on
  • 204 USB0 OC

PWM

  • 6 Heating resistor for warming IMU sensors (125000ns period, 0ns duty)
  • 8 MPU6050 clock (31510ns period, 15258ns duty) Desired frequency is 32768kHz with 50% duty cycle (period=30517us). Period was set empirically to 31517 to get a 5ms data ready period. Desired frequency is slightly modified to synchronize camera and IMU
  • 9 Vertical camera clock (23ns period = 43MHz)
  • 11 Horizontal camera lock (77ns period = 13MHz)

I2C

  • I2C-0
    • FPGA
    • P7MU
    • EEPROM Unknown EEPROM for Front camera calibration (addr 0x55)
    • MT9f002 CMOS Digital Image Sensor (1/2.3 inch 14Mp, front camera) MT9f002 (addr 0x10)
    • MT9v117 CMOS Digital Image Sensor (1/6 inch VGA, bottom camera) MT9v117 (addr 0x5d)
  • I2C-1
    • Cypress Motor Controller (Parrot BLDC) Bebop/BLDC (addr 0x08)
    • AKM8963 Magnetometer AK8963
    • MS5607 Barometer MS5607
  • I2C-2
    • MPU6050 Gyro + Accel MPU6050 (rotation changed in version 2)

SPI

  • spidev1.0 Sonar (Only data pin connected for generating pulses)

UART

  • ttyPA1 GPS (Furuno GN-87F on v1 and Ublox Neo M8N on v2)

Other

  • /dev/hx280 Hantro (On2) Video encoder. Hantro chip video encoder used for the HCAM.
  • /sys/bus/iio/devices/iio:device0 (p7mu-adc_2) Sonar ADC

Serial console

A physical serial port is accessible under the front cover. You can remove it properly by removing the 2 screws holding it and then cutting the glue between the foam and the main body with a thin blade. See [2] for pictures.

The serial port on Bebop side is /dev/ttyPA0 at 115200 bauds. If you can see the console output from an external terminal but don't get the prompt to type command, log with telnet and add the following line to the /etc/init.d/rcS file:

 sh --login < /dev/ttyPA0 > /dev/ttyPA0 &

Actuators

The Bebop has 4 Brushless motors, which are controlled by the cypress chip on I2C-1. This Cypress chip contains custom made firmware(BLDC) by Parrot, which can be automatically updated using a bootloader in the ESC part of the mainboard. The firmware from Parrot contains a nice closed loop RPM control, which is automatically tuned inside the factory. Since version 2 Parrot changed the order and rotation direction of the motors.

For more information about how to communicate with the BLDC look at Bebop/BLDC. Or take a look at the "bebop" actuator inside the airborne/boards/bebop/ folder.

Onboard applications

The original programs on the Bebop

  • /usr/bin/dragon-prog Main program that controls the drone
  • /bin/watchdog.sh Checks if Dragon is still running and reboots dragon-prog if it somehow would not be running anymore
  • BLDC_Test_Bench Controls the Brushless Motor Controllers for testing and playing sounds etc.
  • bcmwl Everything with wifi
  • diagnostic Outputs sensor diagnostic
  • mk3_camera_eeprom Reads the front camera EEPROM
  • config_mt9v117 Configure the bottom camera

Cross compiler

For the Bebop you need to use a recent version GNU gcc-arm-linux-gnueabi (Ubuntu/Linaro 4.7.4-2ubuntu1) 4.7.4 provided with Ubuntu since 14.04 LTS.

the past you could also crosscompile with Sourcery CodeBench Lite 2012.03-57 for ARM GNU/Linux from Greedy Mentor Graphics, previously called codesourcery. However the open'ness there is nowhere to be found anymore, so we'll say "No thanks" to Codesourcery ,now Greedy Mentor" but if you insist , feel free restricted.

If you somehow need to compile kernel driver files to run on your Parrot Bebop, well, yes, you must use that exact compiler...

Tips & Tricks

Video

Make sure the video_rtp_stream.xml module enabled in the airframe. Receive a video stream with e.g. avplay, vlc or a python app:

$ avplay -loglevel quiet -max_delay 50 -fflags nobuffer rtp://192.168.42.1:5000

or

$ vlc ~/paparazzi/var/sdp_tmp/192.168.42.1/stream.sdp

or

$ ~/paparazzi/sw/tools/rtp_viewer/rtp_viewer.py

Factory Reset

You can reset the Parrot Bebop Drone to factory settings. You will loose all your photos and movies recorded on your Bebop. To do this you need to press and hold the power button for 10 seconds. The LED will blink green and orange for a while, then green and the drone will shutdown. For Bebop2 the Red LED will blink. Bebop2 Power the Blue LED will blink.

Getting rid of 4x buttonpress

Per default with latest frimware telnet access over Wifi is blocked. To reanable this there is a PPRZ configuration script work together with pprz.conf on your drone

Firmware

Although Paparazzi volunteers test flew the Bebop with old Firmware v1.98.11 and v2.0.57, v3.0, v3.2, v3.3, v3.9 Use the latest firmware available for your Parrot. As a bonus With the latest firmware one gets better video imagery among all other improvements.

  • v4.0.6 is the latest firmware for Bebop 1.
  • v4.7.1 is the latest firmware for Bebop 2

Since Parrot stopped producing Bebop's, those firmware version will be the ultimate final firmwares to exist.

Damper

The original Bebop2 damper are very soft and can cause oscillations around roll. You can print harder dampers from Thingiverse yourself that will degrade the video quality but remove these oscillations. Use the _nodamp airframe files in that case.

Or just add a 3mm thick plastic washer inbetween top nut and the body, don't forget put some 243 locktite on the nut again, else it will vibrate off

Serial bidirectional teminal access

This is handy if one e.g want to dump and set the build in GPS with software like uCenter on a PC. uCenter also run under Wine.

To do so you first have to set up a connection between U-center and the drone. This done by forwarding the GPS data from the drone to your laptop using a TCP connection. From your laptop this TCP connection is then forwarded to a wine COM port in order to make it readable for U-center.

First open a terminal and listen on your laptop for incoming TCP connections on port 12345.

   $ socat -d -dd pty,raw,echo=0 tcp-listen:12345

Then open a telnet session (while connected to the wifi of the drone) using:

   $ telnet 192.168.42.1

and forward the GPS data to the server you just created (in the telnet session):

   $ nc <your_ip_address> 12345 </dev/ttyPA1 >/dev/ttyPA1

Switch back to the terminal in which you started listening to the tcp port. You should see that an incoming connection has been accepted. The port to which the connection is transferred to is also shown (see Figure).

Socat accepted the connection

The next step is to link this port to a wine COM port. In the following example port /dev/pts/4 is linked to ./com32.

   $ cd ~/.wine/dosdevices
   $ ln -sf /dev/pts/4 ./com32

You should now be able to read the GPS data from u-center under the specified com port.

Using the MicroUSB for serial data

The Parrot Bebop, as well as the Parrot Disco have a micro USB connector on the main control board. This USB connector can be used to connect 3rd party equipment. For example with help of a USB to Serial conversion board, bidirectional serial communication to another serial device. To use the driver in current firmware OTG serving should be off. Take a look here for more information, photos, connection examples, sourecode and real life examples of how to use this port.

Swarm of Bebops

Multiple Parrot Drones as Swarm via WiFi Router