-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmulti_extract.sh
executable file
·149 lines (132 loc) · 7.27 KB
/
multi_extract.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/bin/sh
# ---------------------------------------------------------------------------- #
# DEFAULT VARIABLES #
# ---------------------------------------------------------------------------- #
DATA_DIR_DEFAULT="/media/Public/ROSBAG_BACKUPS/rosbag2_2022_09_21-12_58_49"
VERBOSE_DEFAULT=1
UNDISTORT_DEFAULT=1
CALIB_DIR_DEFAULT="/home/roar/ART/perception/Camera/Calibration_new/"
OUTPUT_BASE_DIR_DEFAULT="/media/Public/Lucas_Oil/"
MAKE_VID_DEFAULT=1
# ---------------------------------------------------------------------------- #
# PARSE ENVIRONMENT VARIABLES #
# ---------------------------------------------------------------------------- #
# --------------------------- ROSBAG DATA DIRECTORY -------------------------- #
if [ -z ${DATA_DIR+x} ]; then
echo "----------------------------------------------------------------------------"
echo " DATA_DIR not defined. "
DATA_DIR=$DATA_DIR_DEFAULT
echo "Defaulting DATA_DIR=$DATA_DIR"
echo "----------------------------------------------------------------------------"
else
echo "----------------------------------------------------------------------------"
echo "DATA_DIR has been defined as $DATA_DIR"
echo "----------------------------------------------------------------------------"
fi
# --------------------- EXTRACTION OUTPUT BASE DIRECTORY --------------------- #
if [ -z ${OUTPUT_BASE_DIR+x} ]; then
echo "----------------------------------------------------------------------------"
echo " OUTPUT_BASE_DIR not defined. "
OUTPUT_BASE_DIR=$OUTPUT_BASE_DIR_DEFAULT
echo "Defaulting OUTPUT_BASE_DIR=$OUTPUT_BASE_DIR"
echo "----------------------------------------------------------------------------"
else
echo "----------------------------------------------------------------------------"
echo "OUTPUT_BASE_DIR has been defined as $OUTPUT_BASE_DIR"
echo "----------------------------------------------------------------------------"
fi
# ---------------------------- VERBOSITY SETTINGS ---------------------------- #
if [ -z ${VERBOSE+x} ]; then
echo "----------------------------------------------------------------------------"
VERBOSE=$VERBOSE_DEFAULT
echo " VERBOSE not defined. Setting VERBOSE to $VERBOSE. "
echo "----------------------------------------------------------------------------"
else
echo "----------------------------------------------------------------------------"
echo " VERBOSE has been defined as $VERBOSE "
echo "----------------------------------------------------------------------------"
fi
# --------------------------- UNDISTORTION SETTINGS -------------------------- #
if [ -z ${UNDISTORT:+x} ]; then
echo "----------------------------------------------------------------------------"
UNDISTORT=$UNDISTORT_DEFAULT
echo " UNDISTORT not defined. Setting UNDISTORT to $UNDISTORT. "
echo "----------------------------------------------------------------------------"
else
echo "----------------------------------------------------------------------------"
echo " UNDISTORT has been defined as $UNDISTORT "
echo "----------------------------------------------------------------------------"
fi
if [ $UNDISTORT -eq 1 ]; then
if [ -z ${CALIB_DIR+x} ]; then
echo "----------------------------------------------------------------------------"
echo " CALIB_DIR not defined. "
CALIB_DIR=$CALIB_DIR_DEFAULT
echo "Defaulting CALIB_DIR=$CALIB_DIR"
echo "----------------------------------------------------------------------------"
else
echo "----------------------------------------------------------------------------"
echo "CALIB_DIR has been defined as $CALIB_DIR"
echo "----------------------------------------------------------------------------"
fi
fi
# ---------------------------- MAKE_VID SETTINGS ---------------------------- #
if [ -z ${MAKE_VID+x} ]; then
echo "----------------------------------------------------------------------------"
MAKE_VID=$MAKE_VID_DEFAULT
echo " MAKE_VID not defined. Setting MAKE_VID to $MAKE_VID_DEFAULT. "
echo "----------------------------------------------------------------------------"
else
echo "----------------------------------------------------------------------------"
echo " MAKE_VID has been defined as $MAKE_VID "
echo "----------------------------------------------------------------------------"
fi
# --------------------- ENVIRONMENT VARIABLE PARSING END --------------------- #
echo "\nPausing for 10 seconds. Press Ctrl+C to quit if the above settings are not correct.\n"
for i in 1 2 3 4 5 6 7 8 9 10
do
echo "$i seconds passed"
sleep 1s
done
# ---------------------------------------------------------------------------- #
# Find all rosbags at datadir and extract data #
# ---------------------------------------------------------------------------- #
echo "\n\nSearching DATA_DIR for ROSBAGS now...\n"
sleep 5s
find "$DATA_DIR" -iname "*.db3" -print0 | xargs -0 -I file dirname file | sort | uniq | while read d; do
ROSBAG_NAME=$(basename "$d")
# ---------------------------------------------------------------------------- #
# NOTE: SPECIFY OUTPUT DIR #
# ---------------------------------------------------------------------------- #
OUTPUT_DIR="$OUTPUT_BASE_DIR$ROSBAG_NAME"
# ------------------- NO CHANGES REQUIRED BEYOND THIS LINE ------------------- #
# ------------------------------ Debug Verbosity ----------------------------- #
echo "----------------------------------------------------------------------------"
echo "Found ROSBAG: $d"
echo "Extracting images to: $OUTPUT_DIR"
echo "----------------------------------------------------------------------------"
# -------------------------- Create output Directory ------------------------- #
mkdir -p $OUTPUT_DIR
# ------------------ Begin Extraction Based on User Setting ------------------ #
if [ $VERBOSE -eq 1 ]; then
if [ $UNDISTORT -eq 1 ]; then
python3 ros2bag_image_extractor.py "$d" $OUTPUT_DIR -vup $CALIB_DIR
else
python3 ros2bag_image_extractor.py "$d" $OUTPUT_DIR -v
fi
else
if [ $UNDISTORT -eq 1 ]; then
python3 ros2bag_image_extractor.py "$d" $OUTPUT_DIR -up $CALIB_DIR
else
python3 ros2bag_image_extractor.py "$d" $OUTPUT_DIR
fi
fi
# --------------------- Convert Extracted Images to Video -------------------- #
if [ $MAKE_VID -eq 1 ]; then
for camera_output_dir in $OUTPUT_DIR/*/; do
cd $camera_output_dir
base_name=$(basename "$camera_output_dir")
ffmpeg -framerate 50 -pattern_type glob -i '*.jpg' -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p ../$base_name.mp4
done
fi
done