The Parrot Disco is a Wifi controlled fixed-wing aircraft, originally designed for FPV flights. The hardware electronic components are very close the the Bebop quadrotor and the same principle can be applied to fly in full autonomous mode with Paparazzi.
Here are some differences or addition compared to the Bebop hardware:
The Disco has 6 PWM outputs available with the following mapping:
- Internal mapping of the PWM with output index
- servo rail 1 <-> linux pwm_4
- servo rail 2 <-> linux pwm_5
- servo rail 3 <-> linux pwm_6
- servo rail 4 <-> linux pwm_1
- servo rail 5 <-> linux pwm_2
- servo rail 6 <-> linux pwm_3
Radio Control Input
A radio control input is available for RC based on serial protocols such as Spektrum serial or SBUS out. Since the SBUS protocol is using an inverted logic (serial idle low), the signal input pin is tight to two UARTs internally and can be accessed with the the following symbolic links:
- /dev/uart-sbus: the signal is inverted
- /dev/uart-sumd: the signal is not inverted
The RC input is recommended for the safety link instead of using the Wifi link to control the plane in manual or assisted mode.
The GPS used is a uBlox M8N.
A long range telemetry can be connected to the USB bus via e.g. a USBtoSerial board. One needs to install drivers for this on the disco. A complete page is on the Bebop part of the wiki.
A 4G to the USB can be used for telemetry over cellular network
A small iridium sat transeiver can be used.
The GPS module can be desoldered and replaced with a M8P in case one wants to use RTK.
Real-time kinematic positioning is a GPS system which uses to GPS modules in order to improve GPS accuracy. The 'base station' is located at a precisely known location. The coordinates of the base station are used in order to derive the propagation errors at the current location. The errors are then send to the 'rover station' in order to improve accuracy up to centimeter-level.
In order to use a RTK positioning system both rover- and base station have to be set up. Both base and rover board are identical, they only differ by their configuration. This tutorial explains how to set up the Parrot Disco for RTK usage in case a u-blox C94-M8P module is used.
In order configure both base and rover station, first you have to download u-center from their website. Wine will be needed as well to run u-center on Ubuntu. Start u-center using Wine and connect the base station via USB.
Note: In case you can not change the settings in the U-center, probably the receiver is polling the current setting to often. Turn off auto-poll with the buttons on the bottom left corner of the configuration window.
Note2: Each time you change the settings in the U-center you have to send the data to the board using the send button in the bottom left corner of the configuration view. Then go to UBX-CFG-CFG and chose all 4 devices to save the configuration too.
Setup of Ground station
First you find out the port that your GPS module is connected to using dmesg after the device has been connected. The figure gives an example where the modem has been connected to /dev/ttyACM0.
Link the corresponding port to a wine com port using:
$ cd ~/.wine/dosdevices $ ln -sf /dev/ttyACM0 ./com32
If you open U-center now you should be able to connect to COM port 32 (as seen in the Figure).
To setup the ground station for RTK usage, then go the 'Message View' from the 'View' hotbar. Scroll down until you find the MSG (UBX-CFG-MSG) menu. Check the USB output on the RTCM 1005 (Station coordinates) message and click the send button on the lower left corner. This step must be repeated for the RTCM 1077 (GPS Observations), RTCM 1087 (GLONASS observations) and the RTCM 1230 (GLONASS code-phase biases) message (don`t forget to hit the send button each time or your changes won`t be saved).
Next you have chose how the base station calculated it`s position. This can be done in TMODE3 (UBX-CFG-TMODE3). You will have 2 choices: Survey-in (if you don`t know the exact position) and Fixed (if you know the exact position). Don`t forget to click the send button after chosing your configuration. In case you selected the Survey-In mode, you can go to UBX-NAV-SVIN to see the status of the survey.
Finally, the rate has to be set to the same measurement period and navigation rate as in the rover station. It is recommended to just start paparazzi with all the required modules and then see the configured rates on the Disco itself. The reason for this is that several paparazzi modules might change the ublox configuration at startup. (In the case of the Dezember 2019 master version, the navigational rate is set to 1 cyc and the measurement period to 250 ms in case the ubx_ucenter module is used for configuration).
After having configured both the rates and the ports, you just have to specify which messages will be send. Go to the MSG (Messages) menu again and disable all NMEA messages. Then enable NAV-POS-LLH, NAV-STATUS NAV-SOL and NAV-VELNED. These are required to obtain positional information, however not in case only RTK is used. Hit send after each change.
The last step is to save the whole configuration. Go to the Configuration menu (UBX-CFG-CFG), select all 4 devices and click send. You have now successfully configured your base.
Setup of Rover station
The rover is the module that receives RTCM messages. It will automatically go into RTK operational mode as soon as a RCTM message is received and thus only the radio link has to be configured correctly.
In order to setup the rover stations first a serial bidirectional terminal access has to be obtained.
After coupling the GPS module of the drone to the wine com port, U-center should be able to connect to the rover module.
Go to the Message View from the View hotbar again and scroll down until you find the PRT (Port) section (UBX-CFG-PRT). Enter your autopilot`s GPS port`s baudrate to allow it to communicate correctly. This is necessary as the GPS connection is serial and thus the baudrate is not controlled by any other protocol. Click the send button in the lower left corner.
Then you have to modify the frequency of the chip. Go to the RATE (Rates) menu (UDX-CFG-RATE) and change the Measurement period to the same period you have set on the base station. Press the send button again. Note, it might be possible that either paparazzi or your own board autopilot (Parrot for example) overwrite this change at each startup. In order to overcome this problem simply change the Rate on your ground station instead of on the Drone.
Finally, save the configuration from the CFG (Configuration) menu (UDX-CFG-CFG). Select all four devices and click send. You have successfully set up your rover station.
Moving baseline rtk
In case the ground station is not staying at a fixed position and moving (on a boat/car for example), the base station has to be set up for moving baseline.
For this, nearly the same step as in the rover station setup has to be performed. In addition to this, message 4072 has to be enabled for the USB output. This will automatically disable message 1005. Furthermore, TMODE3 has to be set to Disabled instead of Survey-In or Fixed.
The setup of the rover station is equivalent.
Direkt Ground Station to Rover Debugging
In case you are trying to debug messages and see whether the actual RTK setup is set correctly, it is also possible to send the data from the ground station to the Disco directly. A couple of steps are required in order to do so:
First, connect to the Disco and upload the paparazzi autopilot to it. Telnet into the Disco and kill the autopilot process using
$ killall ap.elf
After this, you are required to set up a serial bidirectional terminal access for the Disco and simply connect your ground station to a serial device as well. You should now have a serial device connected to the ground station and one to the rover. The last step is to combine these to serial devices using:
$ socat /dev/ttyACM0,raw,echo=0,crnl /dev/pts/6,raw,echo=0,crnl
where /dev/tty/ACM0 is your ground station device and /dev/pts/6 is your serial bidirectional terminal access. All the RTCM messages from the ground station are now send to the Disco and vice versa. In U-center you can connect to both the Disco and ground station and debug using Packet Console etc.
If your servo is broken one an use a Hitec Digital 5055MG as a direct fit replacement