Pushing a Parrot Disco to the limit

Nice found about pimp-ctl ! It’s documented on this doc :

Video on Disco
pimp-ctl
pimp-ctl stream-start 192.168.42.2 9999

gst-launch on remote side
gst-launch-1.0 udpsrc port=9999 ! ”application/x-rtp,
payload=96” ! rtph264depay ! avdec_h264 ! autovideosink

pimpctl command detail :

pimpctl -h
usage: pimpctl []
Send a command to pimp daemon.

Global options:
-h, --help this help

General commands:
list-cameras print the list of available cameras

Stream commands:
stream-start send a start streaming order
stream-stop send a stop streaming order

Picture commands:
take-picture send a take picture order

Recording commands:
recording-start send a start recording order
recording-stop send a stop recording order

Follow-me commands
set-target x++ set a new target area
unset-target unset current target area

Debug commands
dump-pipeline dump pipelines

Camera orientation commands
set-controller <controller_id> set a new camera controller
0 → USER FLAT (yaw axis is free)
1 → USER ABSOLUTE (fully stabilized)
2 → USER FPV (fixed relatively to the drone))
3 → AUTOPILOT
cam-orientation

set camera orientation (in degree CCW)
y → yaw pitch rotatio (psi euler angle)
p → pitch rotation (theta euler angle)
r → roll rotation (phi euler angle)

Magic carpet:
add-magic-carpet add magic carpet elements in pipeline

Very nice to found this @Radial.Blue and @kikislater. About camera orientation, it’s cool ! If I understand correctly, 1 → USER ABSOLUTE (fully stabilized) is used actually on Dragon in RTH mode, isn’t it ?

Yes it seems that’s what it’s use in Dargon autopilot by default

Hi all,

Newcomer here. Wondering whether the video while using ardupilot/disco issue has been resolved?

I’m technically capable, but out of my area here. I see the pimp-ctl messages above, but am unclear where this code should be included.

Thanks for your help!

1 Like

Hi will the tbs crossfire v2 work with the parrot disco.thanks.

Hello All,
2 things.

  1. @tridge is probably doing final tuning on his Outback Challenge (OBC) aircraft - so he’ll be busy until Oct. Let’s not bother him until after then.

  2. I have 2 disco’s and have worked with the scripts a little bit. I am happy to test the setup that we think was last successful (with Video working). Once I have this tested, I will post the how to for all to use. Could you (anyone) please give me a few version numbers to start with?
    A. Arduplane version - 3.x?
    B. Disco version - 1.0.5 or 1.4.1 or ?

I will download and setup the appropriate versions on my Chucks and let you know what I run into.

I have already flown these aircraft on 200+ flights and used them extensively for survey and mapping missions (using the FreeFlight pro software) - they are great. If you are interested in my setup, I’m happy to share.

Regards,
Sean.

Recording can be started and stopped with these commands:

pimpctl recording-start front
pimpctl recording-stop front

But first connect to the Disco wifi then with adb or telnet:

sudo apt-get install android-tools-adb

adb connect 192.168.42.1:9050

telnet 192.168.42.1

Recordings will be in
ftp://192.168.42.1/internal_000/Disco/media

  • Sonar Optical flow sensor does not work with 3.9.1 release. Enable but no output !
  • Voltage sensor is pretty inacurrate : Set a failsafe near 11.0 or 10.9V is like having 10.5V. Battery tuning does not make anything

With upgraded Parrot 1.7.1 firmware, telnet is not available. Press 2 times button while running enable it.

1 Like

Here is a description how to add streaming video from your Parrot DISCO to your ground station.

Assuming that you are using Wifi to connect to the drone, and your phone, tablet will have IP address 192.168.42.99. The Parrot DISCO IP address by default is 192.168.42.1.

The DISCO will be streaming wideo by UDP to port 9999 on your computer, phone or tablet.

Here is how.

After connecting to DISCO wifi:

telnet 192.168.42.1

(here you may need to press the on/off button on your disco twice to activate the telnet service first, depending on your firmware version)

After connecting to the DISCO with telnet,

checking the contents of the 3 button press:

(it should have the ardupilot activation script and deactivation of the original pilot called dragon-prog or similar)

cat /bin/onoffbutton/shortpress_3.sh

Making the filesystem writable:
Caution, from here on every mistake counts. can brick your drone :slight_smile:

mount / -o remount,rw

Adding a video streaming command to the end of the ardupilot activation script:

echo "pimpctl stream-start front 192.168.42.99 9999" >> /bin/onoffbutton/shortpress_3.sh

Going back to read-only mode:

mount / -o remount,ro

Checking again the result:

cat /bin/onoffbutton/shortpress_3.sh

From now on, when pressed the on/off button 3 times, beside activating the ardupilot, it will also start streaming the front camera video to your phone or tablet.

Make sure that your connection is manual (not dhcp address) and you set the IP address of your phone or tablet to the same as above: 192.168.42.[99 - can be anything between 2 and 254, but must be the same as given to DISCO previously by telnet]

QgroundControl settings to receive video:

Settings/General: Video source: UDP stream

UDP port: 9999 [the same as in the DISCO example above]

Aspect ratio: 1.5

Hi
Are you good on Parrot Disco Chuck and how to config to use external ESC?

Regards Anders

Sorry this is beyond my capability but has anyone seen these ?

its an I2c converter to PWM which in theory would control and external esc thus being able to put this CHUCK directly into an x8 possibly.

When I asked for information on it they guy said

I have no idea what protocol parrot uses for their I2C ESC but I can guarantee you it’s not the same one Mikrokopter uses.
Therefore without actually knowing what the protocol is (i.e. analying it with a logic probe/data logger of some kind) and writing appropriate firmware for the I2CPWM converter, none of this is going to work.
Honestly your best bet (once you do figure out the protocol) is using some arduino shit like nano or etc and writing custom code to convert from whatever i2c/what else could it be throttle format into PWM for the ESC.

I doubt there’s an off the shelf solution unless the protocol has been published somewhere and/or someone had enough time to reverse/implement it in some other hardware.

Anyone know how to do any of the above haha !

@AlexP Thanks for the instructions, I can’t make it work, mostly because pimpctl does not seem to be able to connect with pimp:
/ # pimpctl list-cameras
failed to connect to pimp: timeout

(Disco 1.7.1 firmware)

@Andre-K, maybe dragon-prog was still running?

to get the list try:
ps | grep dragon
to stop the original dragon-prog autopilot try:
kk

@AlexP My pimpctl is also not working

pimpctl

failed to connect to pimp: timeout

when i start pimp manually i get a segfault :frowning:

libpimp-Message: pimp_apm_p7.c:89:pimp_apm_p7_make_pipelines: front camera found, making pipeline

(pimp:1213): libpimp-CRITICAL **: isp_p7.c:86:dxo_new: failed to open dxo shared memory

Segmentation fault

I am on fw 1.7.1

Can I message you about how you put this CHUCK in this plane? How did that work for you? Im thinking about putting a CHUCK in a 2m opterra

I will put out short subjective overview about the arduplane state on Parrot Disco CHUCK as of 09/2019 - learned from hands-on experience:

  1. arduplane 3.9.8 build is the latest that will load on CHUCK (fw 1.7.1). Newer builds will fail to load (with glibc version related error - probably newer versions are required than available from Parrot firmware).

  2. Loaded default params from: https://raw.githubusercontent.com/ArduPilot/ardupilot/master/Tools/Frame_params/Parrot_Disco/Parrot_Disco.param

  3. No sonar readings seen (with Bebop rangefinder type). Probably does not work. Perhaps libiio version mismatch with the build?

  4. Live stream has to be started manually through pimpctl. You have to know receiver (ie your laptop) ipaddr. Stream resolution is 360p.
    pimpctl stream-start front 192.168.42.41 5600

  5. Setting up RC controller buttons/switches for proper flightmode switching is not so trivial for beginners. Here is an example for OpenTX (Taranis x9d Plus SE):

Overall flightmode switching logic:
2-position SF: RTL (takes always precedence)
3-position SE: none | LOITER | CIRCLE (takes precedence over other flightmodes)
3-position SG: AUTO | CRUISE | FBWA

Create 5 logical switches (RTL on SF takes precedence and LOITER/CIRCLE takes priority over other flight modes):
L01: AND SE- — !SF↓ # LOITER
L02: AND SE↑ SG↑ !SF↓ # AUTO
L03: AND SE↑ SG- !SF↓ # CRUISE
L04: AND SE↑ SG↓ !SF↓ # FBWA
L05: AND SE↓ — !SF↓ # CIRCLE

Create 5 inputs:
I5: RTL SF
I6: LTR L01
I7: AUTO L02
I8: CRUI L03
I9: FBWA L04
I10: CIRC L05

Create flightmode switches on channel 5:
CH5:
I5 RTL WEIGHT -100
I6 LTR WEIGHT -45
I7 AUTO WEIGHT -20
I8 CRUI WEIGHT +20
I9 FBWA WEIGHT +45
I10 CIRC WEIGHT +100

Set flightmode params on ardupilot (via GCS on RC channel 5):

FLTMODE1 11 # RTL 910-1230 on RC5
FLTMODE2 12 # LOITER 1231-1360 on RC5
FLTMODE3 10 # AUTO 1261-1490 on RC5
FLTMODE4 7 # CRUISE 1491-1620 on RC5
FLTMODE5 5 # FBWA 1621-1749 on RC5
FLTMODE6 6 # CIRCLE 1750-2049 on RC5

P.S. If anyone has any ideas how to make rangefinder to work - please share :slight_smile:

  • 1/ Why not putting an issue in github ardupilot : https://github.com/ArduPilot/ardupilot/issues
    Still doubt IMO to switch to 1.7.1, 1.4.1 works well. I have one running 1.7.1 with different ring tones than the other in 1.4.1

  • 3/ Good catch, I will try to use fw 1.3 or 1.4 to test if sonar is working !

  • Battery voltage are more accurate than % or Amps or W (you removed it from your post …)

Submitted https://github.com/ArduPilot/ardupilot/issues/12260 - arduplane versions >3.9.8 not loading on CHUCK.

Battery metering is somehow off - voltage reading seems “correctish” - yet accumulated usage and battery % are somehow way off. Cannot make any sense of it right now - it seems there are no parameters to influence battery % calculation in case of Bebop battery monitor type.

Battery percent are mostly computed in Volts rather than Amps in devices (eg: smartphone, computer …). In Ardupilot it uses W so Volt * Amps, it doesn’t make sense since we don’t have a reliable current sensor and can compute this.
So what is better is to monitor your battery with Volts instead of percent. If you are asking about failsafe : put failsafe in volts only and not percent