Pushing a Parrot Disco to the limit

Thanks, that is a great link as well, but didnā€™t help me solve my problems using ArduPilot and setting up Mission Planner. So I can plug in my UHF RangeLink Receiver into the CHUCK and everything works perfectly on my controller without having to do anything, as far as flying the Parrot Disco with an RC Remote Controller, everything is mapped perfect out of the box with the Default Parrot ā€˜Dragonā€™ AutoPilot program running. But if I kill the Dragon program, and then startup Arduplane like the articles suggest, I get a lot of errors in Mission Planner when writing the know good params to the Disco, and I canā€™t calibrate my radio at all, itā€™s like itā€™s not there, even though I know it works with the Disco. Itā€™s like manual RC Control is not baked into the latest Disco builds, or maybe it canā€™t handle PPM input like Dragon can, or the latest Parrot Disco firmware is causing issues with ArduPlane and folks that had it working were using older Parrot firmware, or I donā€™t know what Iā€™m doingā€¦

I know heā€™s busy, but this might need a knowing word from @tridge

Hi Brian,
I suspect the startup scripts on the disco have changed, and thats why the existing instructions donā€™t work. We probably need to change just a couple of lines in the startup script to make it work.
If you could pull the contents of at least the /etc directory from yours and put it in a zip file or tarball then put it somewhere I can get to it then I can see if I can spot what needs doing.
There used to be 2 methods:

  1. triple-press the airspeed sensor to make it look for and load ardupilot. You had to do that on every boot
  2. edit the startup script to run ardupilot instead of dragon every time
    the scripts should make it clear what options are available now.
    Cheers, Tridge

Hi,

When updating Dragon autopilot (chuck fw) to latest version, procedure is not the same. I had been updated wiki but forgot to make to make a pull request. It was before tridge made guide to update wiki and I am not able to find changes at this time.

To resume :

APM folder is not the right folder to put the file
There is an existing ardupilot folder
The correct name of the file has to be arduplane and not apm-plane-disco like parrot share.

Check issue I made here :

  1. /data/ftp/internal_000/APM is a wrong folder now. You should put fw in /data/ftp/internal_000/ardupilot/

  2. upload in binary mode and verify checksum. They say we have to upload in ascii mode which is wrong. Itā€™s binary mode
    Inspired from Parrot I made a script to upload in binary :

    #!/bin/sh

    /usr/bin/ftp -vdin << EOF
    open 192.168.42.1
    binary
    mkdir internal_000/ardupilot/
    put arduplane_fw/arduplane
    EOF

  3. Make it executable :
    Through telnet, change directory to ardupilot and run
    chmod +x arduplane

Then you could press 3 times to make it working

What is not working on 3.8 :

  • Reverse thrust (I have it working on other custom frame with blheli flashed esc)
  • sonar
  • Video

Disco with magnets is really bad IMO. Hard to calibrate MAG !

There is 2 FTP on Disco : port 21 and port 61

2 Likes

thanks for the info!

it should be a lot better with plane 3.8.x. I raised the COMPASS_OFFS_MAX to 2200 by default on the Disco. You can raise it even more if need be.
Cheers, Tridge

Thanks Tridge.

Yes I found your parameters on your FTP :smiley:
But even with this, not really good ā€¦ In flight itā€™s different but when you are the ground even with proper calibration, disco show wrong direction (around couple of degrees : 15Ā°). I move from 3.7.1 to 3.8.x and donā€™t find any improvement on mag with disco. I will try in 2 months, Iā€™m far away to disco at this time.

Do you know why sonar is not working on Disco ? Is this related to this : Optical flow is not available in the new version firmware ArduPlane 3.8.1-dev
Main advantage on Disco is lightweight frame and standard reverse thrust support but could not be enable. I tried with joystick support, not RC so could not adjust some parameters, I will try with Sbus ā€¦ Or do you have recommandation on reverse thrust with disco ? Does esc support reverse thrust on arduplane ?

Thanks for the info on where to transfer the arduplane file in binary mode, to allow the triple press of the airspeed sensor.

Where can I obtain the best parameters file to use with the Disco?
How do I load this parameters file? Do I just copy it into the same directory as the arduplane file?

Any ideas on why my RC RX/TX works perfect with Dragon but is not detected when Arduplane loads? Iā€™ll try QGroundControl but donā€™t think it mattersā€¦

I use this parameter file:

you load it with a GCS such as MissionPlanner, QGC or MAVProxy

what type of receiver is it? What pins did you connect it to?
Cheers, Tridge

Iā€™ve read Disco ESC is on I2C. Donā€™t know if true but will be a great improvement if reverse thrust could be use on my Disco. Congrats to the team that port Arduplane to Disco !

yes, it is I2C, and we do have the information needed to support reverse throttle, it just isnā€™t implemented yet.

2 Likes

thanks for answer Tridge. Nice WE.

Could we hope a support for it one day ?

I am using an Aurora 9 with a 12 channel UHF RangeLink system. I plug a standard servo cable into the PPM out port on the RangeLink Receiver, and the other end into the horizontal 3pin plug left of the power input on the CHUCK. I can fly the Parrot Disco with this setup using the stock Dragon autopilot, and even configure the various RC channels within the FreeFlight app, but as soon as I startup Ardupilot and connect with Mission Planner, it does not see the RX, or allow me to configure it. Iā€™ll try to post the exact error message. Do I need to use a different type of TX/RX? or use a PPM to SBUS adapter for it to work with Ardupilot??

Thanks again for all the help so far.

-Brian

yes, unfortunately we donā€™t support PPM input yet for Disco.
What we support are:

  • SBUS
  • DSM (spektrum satellite)
  • ST24
  • SUMD
  • SRXL
    The hardware can support PPM input but we havenā€™t yet implemented that in ArduPilot. Sorry!

Thank you! Nobody could answer this for me, thanks for the clarification, I have ordered a PPM to SBus converter for my RangeLink receiver. As soon as it arrives, I will try again to get Ardupilot working on my Parrot Disco with all the new info shared in this thread. I plan to create a detailed step-by-step to share as well.

Please let me know if anyone has ideas on starting Video Recording manual before launching, even if itā€™s a hack. Seems like there must be a Linux process on the CHUCK for that, without needing to have the entire Parrot Dragon AP running.

Hi, I just want to make few comments about Disco on last version and Parrot / Arduplane script and ask for help to improve the whole workflow of dual FC Arduplane/Dragon.

1/ internal folder that already exist in my disco is internal_000/ardupilot/

2/ when pressing the 3 short on power button, it call this script : shortpress_3.sh in /bin/onoffblink. (or something like that on name - donā€™t remember exactly his filepath)

this script is :

ulog_tag="APM:Plane Disco"
source /usr/share/ulog/ulog_api.sh
/usr/bin/apm-plane-disco.sh prepare
if [ $? -eq 0 ] ; then
	ulogi "Stopping stock autopilot"
	kk
else
	ulogi "Keep Dragon alive"
	exit 0
fi
ulogi "Starting APM:Plane"
media-ctl -l '"mt9f002 0-0010":0->"avicam.0":0[1]'
media-ctl -l '"avicam_dummy_dev.0":0->"avicam.0":0[0]'
pstop ledd
prestart apm-plane-disco
prestart dxowrapperd
prestart pimp

Question: here what is prestart apm-plane-disco ? the .sh script in /usr/bin OR the launchable apm-plane-disco ā€˜firmwareā€™ in the theorically /internal_000/APM/apm-plane-disco ???

3/ the /usr/bin/apm-plane-disco.sh is :

rw_apm=/data/ftp/internal_000/ardupilot/arduplane
    if [ -f "${rw_apm}" ]; then
        chmod +x ${rw_apm}
        ret=0
    else
        ret=1
    fi

if [ "$1" = "prepare" ]; then
    exit $ret
else
    exec ${rw_apm} $@
fi

nb: I donā€™t remember if I change this script on his filepathā€¦perhaps it was this instead
rw_apm=/data/ftp/internal_000/APM/apm-plane-discoā€¦Above what I had now

4/ about rcS_mode_default in /etc/init.d :
Orginal script on my disco was :

ulog_tag="rcS Mode default"
source /usr/share/ulog/ulog_api.sh

# default rcS running mode script

ulogi "rcS_mode_default"
echo $((1024*1024)) > /proc/sys/net/core/wmem_max	# inscrease the max socket size
DragonStarter.sh &

sleep 1

If I use script provide here https://github.com/ArduPilot/ardupilot/blob/master/Tools/Frame_params/Parrot_Disco/rcS_mode_default on the tuto, itā€™s not booting (still have wifi but Dragon not launching), even after change the filepath

Here this script :

# default rcS running mode script

echo $((1024*1024)) > /proc/sys/net/core/wmem_max	# inscrease the max socket size
if test -x /data/ftp/internal_000/APM/start_ardupilot.sh; then
  ulogger -t "rcS_mode_default" -p I "Launching ArduPilot"
  /data/ftp/internal_000/APM/start_ardupilot.sh
else
  ulogger -t "rcS_mode_default" -p I "Launching Dragon"
  DragonStarter.sh -out2null &
fi
sleep 1

I changed it with ulogi because logging api seem to have change in main image disk but didnā€™t find the argument for ulogi. Moreover, with ulogger, itā€™s not starting Dragon or Arduplane.

# default rcS running mode script

echo $((1024*1024)) > /proc/sys/net/core/wmem_max	# inscrease the max socket size

# default rcS running mode script Arduplane
if test -x /data/ftp/internal_000/ardupilot/start_ardupilot.sh; then
  ulog_tag "rcS_mode_default" -p I "Launching ArduPilot"
  /data/ftp/internal_000/ardupilot/start_ardupilot.sh
else
# default rcS running mode script Dragon
  ulog_tag="rcS Mode default" -p I "Launching Dragon"
  source /usr/share/ulog/ulog_api.sh
  ulogi "rcS_mode_default"
  DragonStarter.sh &
fi

sleep 1

5/ Finally, I put the start_ardupilot.sh script and arduplane firmware(download here http://firmware.ardupilot.org/Plane/stable/disco/) in my /ftp/internal_000/ardupilot
Notice that grants are modified by the prepare script to make it executable (cf above chmod +x ${rw_apm})

cd /data/ftp/internal_000/ardupilot
(
 date

 # stop stock led daemon
 pstop ledd

 # startup fan
 echo 1 > /sys/devices/platform/user_gpio/FAN/value
 
 while :; do
    echo "$(date) Starting arduplane"
   ./arduplane -A udp:192.168.42.255:14550:bcast -B /dev/ttyPA1 -C udp:192.168.53.255:14550:bcast --module-directory modules
 done
) >> start_ardupilot.log 2>&1 &

I change the usb IP from 192.168.43.255:14550 to 192.168.53.255:14550 because I read that IP have evolve in Parrot system and 192.168.43* are now specifig to their debug system. My skycontroller is 1.0.6 so greater to 1.0.4 so output ā€œRTPā€ like stream on 192.168.53 and not 192.168.43. I have test with Trendnet TU2-ET100 like ā€˜Nicolasā€™ from Parrot write here http://forum.developer.parrot.com/t/skycontroller-2-wifi-and-hdmi-out/4530.

Tridge, If only you could have a look quickly on my modified script (especially rcS_mode_default and shortpress_3.sh) to see if it s correct or not. It will be very kind. Iā€™m not fan of bash and not developperā€¦ Later when everything will be ok and TESTED, I will make a pull request to update github doc. Thanks !

nb2: I removed all the comment at the beginning of scipt because had some issue with this kind ok mardown here #!/bin/sh

Nobody seem to be passionate by the subject of bash scriptingā€¦like me !

But at least, I try to have on but essential answer : ā€œIs video stream works/or have worked with parrot Disco and Arduplaneā€

Thanks !

It was working last year: https://youtu.be/SIiiXLs1qSU

Thanks James. Donā€™t understand why video feed not starting actually with skc2. Tridge (as I remember) didnā€™t say if video feed was started with skc2 or smartphone.
As I understand, itā€™s freeflight pro that ask disco start video stream.

Simply want to add as information that price of disco have terribly drop in France for all the version. The more expensive pack Adventurer could be buy at 499ā‚¬. So, with this vey acceptable low price, disco and chuck is a very good dev platform.

Video is not working since 1.4.1 fw. I think they change bash script like you say !
But something could be test : I donā€™t have my disco near me at this time but you could start with dragon autopilot, start recording, boot on ardupilot which will probably not kill video recording.
I think itā€™s like wifi, when you boot on ardupilot, itā€™s keeping alive and not killed ā€¦

I added an issue to reverse thrust support on disco : https://github.com/ArduPilot/ardupilot/issues/7173