[parrot] improve/fix tools to grab video on parrot UAVs

This commit is contained in:
Gautier Hattenberger
2015-03-25 14:29:09 +01:00
parent a7c5ecaeb2
commit 5565f8c457
6 changed files with 107 additions and 10 deletions
@@ -81,6 +81,12 @@ PRINT_CONFIG_VAR(VIEWVIDEO_DOWNSIZE_FACTOR);
#endif
PRINT_CONFIG_VAR(VIEWVIDEO_QUALITY_FACTOR);
// RTP time increment at 90kHz (default: 0 for automatic)
#ifndef VIEWVIDEO_RTP_TIME_INC
#define VIEWVIDEO_RTP_TIME_INC 0
#endif
PRINT_CONFIG_VAR(VIEWVIDEO_RTP_TIME_INC);
// Frames Per Seconds
#ifndef VIEWVIDEO_FPS
#define VIEWVIDEO_FPS 4
@@ -251,7 +257,7 @@ static void *viewvideo_thread(void *data __attribute__((unused)))
0, // Format 422
VIEWVIDEO_QUALITY_FACTOR, // Jpeg-Quality
0, // DRI Header
0 // 90kHz time increment
VIEWVIDEO_RTP_TIME_INC // 90kHz time increment
);
// Extra note: when the time increment is set to 0,
// it is automaticaly calculated by the send_rtp_frame function
+4 -4
View File
@@ -18,7 +18,7 @@ pid=0
function quit {
echo "Stop video"
if [ $pid > 0 ]
if [ "$pid" -gt 0 ]
then
kill -9 $pid
fi
@@ -30,9 +30,9 @@ trap quit SIGINT
# fetch sdp file on the ARDrone
mkdir -p $SDP_DIR/$ADDR
../ardrone2.py --host=$ADDR download_file $SDP_DIR/$ADDR/x86_config-mjpeg.sdp sdp
../ardrone2.py --host=$ADDR download_file $SDP_DIR/$ADDR/stream.sdp images
if [ ! -f $SDP_DIR/$ADDR/x86_config-mjpeg.sdp ];
if [ ! -f $SDP_DIR/$ADDR/stream.sdp ];
then
echo "Unable to download sdp file from $ADDR"
exit 0
@@ -42,7 +42,7 @@ fi
echo "Start video"
while [ 1 ]
do
/usr/bin/mplayer -really-quiet $SDP_DIR/$ADDR/x86_config-mjpeg.sdp&
/usr/bin/mplayer -really-quiet $SDP_DIR/$ADDR/stream.sdp&
pid=$!
wait $pid
echo "Restart video"
+5 -5
View File
@@ -75,15 +75,15 @@ subparser_upload_and_run.add_argument('file', help='Filename of an executable')
subparser_upload_and_run.add_argument('folder', help='Destination subfolder (raw or sdk for Paparazzi autopilot)')
subparser_upload = subparsers.add_parser('upload_file', help='Upload a file to the Bebop')
subparser_upload.add_argument('file', help='Filename')
subparser_upload.add_argument('folder', help='Destination subfolder (base destination folder is /data/video)')
subparser_upload.add_argument('folder', help='Destination subfolder (base destination folder is /data/ftp)')
subparser_download = subparsers.add_parser('download_file', help='Download a file from the Bebop')
subparser_download.add_argument('file', help='Filename (with the path on the local machine)')
subparser_download.add_argument('folder', help='Remote subfolder (base folder is /data/video)')
subparser_download.add_argument('folder', help='Remote subfolder (base folder is /data/ftp)')
subparser_download_dir = subparsers.add_parser('download_dir', help='Download all files from a folder from the Bebop')
subparser_download_dir.add_argument('dest', help='destination folder (on the local machine)')
subparser_download_dir.add_argument('folder', help='Remote subfolder (base folder is /data/video)')
subparser_download_dir.add_argument('folder', help='Remote subfolder (base folder is /data/ftp)')
subparser_rm_dir = subparsers.add_parser('rm_dir', help='Remove a directory and all its files from the Bebop')
subparser_rm_dir.add_argument('folder', help='Remote subfolder (base folder is /data/video)')
subparser_rm_dir.add_argument('folder', help='Remote subfolder (base folder is /data/ftp)')
subparser_insmod = subparsers.add_parser('insmod', help='Upload and insert kernel module')
subparser_insmod.add_argument('file', help='Filename of *.ko kernel module')
subparser_start = subparsers.add_parser('start', help='Start a program on the Bebop')
@@ -143,7 +143,7 @@ elif args.command == 'upload_file':
f = parrot_utils.split_into_path_and_file(args.file)
parrot_utils.execute_command(tn, "mkdir -p /data/ftp/" + args.folder)
print('Uploading \'' + f[1] + "\' from " + f[0] + " to /data/video/" + args.folder)
print('Uploading \'' + f[1] + "\' from " + f[0] + " to /data/ftp/" + args.folder)
parrot_utils.uploadfile(ftp, args.folder + "/" + f[1], file(args.file, "rb"))
print("#pragma message: Upload of " + f[1] + " to Bebop Succes!")
+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
# base address for Bebop
ADDR_BASE=192.168.42.1
# tmp folder for images files (relative path by default)
IMAGES_DIR=${PAPARAZZI_HOME=../../../..}/var/images_tmp
# test if a complete IP address is passed as first argument
if [ `grep -c '\.' <<< $1` == 1 ]
then
ADDR=$1
else
ADDR=$ADDR_BASE
fi
# download images folder from ARDrone
mkdir -p $IMAGES_DIR/$ADDR
../ardrone2.py --host=$ADDR download_dir $IMAGES_DIR/$ADDR images
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
# base address for Bebop
ADDR_BASE=192.168.42.1
PORT_BASE=5000
# test if a complete IP address is passed as first argument
if [ `grep -c '\.' <<< $1` == 1 ]
then
ADDR=$1
PORT=$2
else
ADDR=$ADDR_BASE
PORT=$PORT_BASE
fi
pid=0
echo "Start video for $ADDR on port $PORT"
/usr/bin/avplay -loglevel quiet -max_delay 50 -fflags nobuffer rtp://$ADDR:$PORT
+50
View File
@@ -0,0 +1,50 @@
#!/bin/bash
# base address for Bebop
ADDR_BASE=192.168.42.1
# tmp folder for sdp files (relative path by default)
SDP_DIR=${PAPARAZZI_HOME=../../../..}/var/sdp_tmp
# test if a complete IP address is passed as first argument
if [ `grep -c '\.' <<< $1` == 1 ]
then
ADDR=$1
else
ADDR=$ADDR_BASE
fi
pid=0
function quit {
echo "Stop video"
if [ "$pid" -gt 0 ]
then
kill -9 $pid
fi
exit 0
}
# trap control+c to stop mplayer
trap quit SIGINT
# fetch sdp file on the ARDrone
mkdir -p $SDP_DIR/$ADDR
../bebop.py --host=$ADDR download_file $SDP_DIR/$ADDR/stream.sdp internal_000/images
if [ ! -f $SDP_DIR/$ADDR/stream.sdp ];
then
echo "Unable to download sdp file from $ADDR"
exit 0
fi
# start mplayer and respawn if needed
echo "Start video"
while [ 1 ]
do
/usr/bin/mplayer -really-quiet $SDP_DIR/$ADDR/stream.sdp&
pid=$!
wait $pid
echo "Restart video"
done