mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-09 14:18:00 +08:00
[parrot] improve/fix tools to grab video on parrot UAVs
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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!")
|
||||
|
||||
|
||||
Executable
+20
@@ -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
|
||||
|
||||
Executable
+21
@@ -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
|
||||
|
||||
Executable
+50
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user