Skip to content

Commit 46949d4

Browse files
committed
✨ runner for bt extended
1 parent 4e445cb commit 46949d4

File tree

3 files changed

+165
-11
lines changed

3 files changed

+165
-11
lines changed

runner/headless_runner.sh

+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
#!/bin/bash
2+
3+
if [ $# -lt 1 ]; then
4+
echo "usage: $0 gui adaptation_manager mission_type runs"
5+
echo example:
6+
echo " "$0 "[true | false] [metacontrol | random | none] [time | distance] runs(integer)"
7+
exit 1
8+
fi
9+
10+
trap ctrl_c INT
11+
12+
function ctrl_c() {
13+
echo "Cleaning up.."
14+
kill_running_nodes
15+
echo "Shutting down"
16+
exit 0
17+
}
18+
19+
GUI=""
20+
MANAGER=""
21+
MTYPE=""
22+
FILENAME=""
23+
NOW=""
24+
25+
if [ "$1" == "true" ] || [ "$1" == "false" ];
26+
then
27+
GUI=$1
28+
else
29+
echo "gui argument invalid"
30+
exit 1
31+
fi
32+
33+
if [ "$2" == "metacontrol" ] || [ "$2" == "random" ] || [[ "$2" == "none" ]];
34+
then
35+
MANAGER=$2
36+
else
37+
echo "adaptation_manager invalid or missing"
38+
exit 1
39+
fi
40+
41+
if [ "$3" == "time" ] || [ "$3" == "distance" ];
42+
then
43+
MTYPE=$3
44+
else
45+
echo "mission_type invalid or missing"
46+
exit 1
47+
fi
48+
49+
if [ "$4" != "" ];
50+
then
51+
RUNS=$4
52+
else
53+
echo "number of runs invalid or missing"
54+
exit 1
55+
fi
56+
57+
CURDIR=`pwd`
58+
DIR=`dirname $0`
59+
60+
kill_running_nodes(){
61+
# Kill all ros nodes that may be running
62+
for i in $(ps ax | grep -w 'ros' | grep -v 'ros2cli' | grep -v 'vscode' | grep -v 'grep' | awk '{print $1}')
63+
do
64+
echo "kill -2 $i"
65+
kill -2 $i;
66+
done
67+
sleep 1
68+
for i in $(ps -aux | grep suave_reasoner | grep -v /ros/ | grep -v grep | awk '{print $2}')
69+
do
70+
echo "kill -2 $i"
71+
kill -2 $i;
72+
done
73+
sleep 1
74+
for i in $(ps -aux | grep 'gz sim' | grep -v grep | awk '{print $2}')
75+
do
76+
echo "kill -2 $i"
77+
kill -2 $i;
78+
done
79+
sleep 1
80+
for i in $(ps -aux | grep mav | grep -v grep | awk '{print $2}')
81+
do
82+
echo "kill -2 $i"
83+
kill -2 $i;
84+
done
85+
sleep 1
86+
for i in $(ps -aux | grep ardu | grep -v grep | awk '{print $2}')
87+
do
88+
echo "kill -2 $i"
89+
kill -2 $i;
90+
done
91+
sleep 15 #let it finish the killing spree
92+
}
93+
94+
run_missions(){
95+
source $SUAVE_WS/install/setup.bash
96+
for ((j=0; j < $RUNS; j++));
97+
do
98+
echo "starting run"
99+
kill_running_nodes
100+
ros2 daemon stop
101+
ros2 daemon start
102+
FILENAME="${MANAGER}_${MTYPE}_${NOW}"
103+
echo $FILENAME
104+
#should add some geometry to this so they don't stack on top of each other
105+
screen -S vehicle -d -m bash -c "./scripts/start_ardusub.sh $GUI"
106+
sleep 10 #let it boot up
107+
./scripts/launch_sim.sh $GUI &
108+
sleep 30 #let it boot up
109+
110+
rm -f /tmp/mission.done
111+
./scripts/launch_mission.sh $MANAGER $MTYPE $FILENAME &
112+
sleep 30 #let it boot up
113+
114+
echo "start waiting for mission to finish"
115+
start_time=$SECONDS
116+
while [ ! -f /tmp/mission.done ]
117+
do
118+
if [ -f /tmp/mission.done ]
119+
then
120+
echo "mission done"
121+
rm /tmp/mission.done
122+
break;
123+
fi
124+
current_time=$SECONDS
125+
elapsed="$(($current_time-$start_time))"
126+
if (($elapsed>600))
127+
then
128+
echo "mission aborted"
129+
break;
130+
fi
131+
sleep 5 #sustainability!
132+
done
133+
134+
echo "killing nodes"
135+
kill_running_nodes
136+
done
137+
}
138+
139+
cd ~/ardupilot
140+
./waf configure && make sub
141+
cd $CURDIR
142+
143+
NOW=$(date +"%d_%m_%y_%H_%M_%S")
144+
MISSIONCONFIG=${NOW}"_mission_config.yaml"
145+
mkdir -p ~/suave/results
146+
cp $SUAVE_WS/install/suave_missions/share/suave_missions/config/mission_config.yaml ~/suave/results/${MISSIONCONFIG}
147+
148+
run_missions

runner/runner.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
if [ $# -lt 1 ]; then
44
echo "usage: $0 gui adaptation_manager mission_type runs"
55
echo example:
6-
echo " "$0 "[true | false] [metacontrol | random | none | bt] [time | distance] runs(integer)"
6+
echo " "$0 "[true | false] [metacontrol | random | none | bt] [time | distance | extended] runs(integer)"
77
exit 1
88
fi
99

@@ -38,7 +38,7 @@ else
3838
exit 1
3939
fi
4040

41-
if [ "$3" == "time" ] || [ "$3" == "distance" ];
41+
if [ "$3" == "time" ] || [ "$3" == "distance" ] || [ "$3" == "extended" ];
4242
then
4343
MTYPE=$3
4444
else

runner/scripts/launch_mission.sh

+15-9
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ source ~/suave_ws/install/setup.bash
55
if [ $# -lt 1 ]; then
66
echo "usage: $0 adaptation_manager mission_type"
77
echo example:
8-
echo " "$0 "[metacontrol | random | none | bt] [time | distance]"
8+
echo " "$0 "[metacontrol | random | none | bt] [time | distance | extended]"
99
exit 1
1010
fi
1111

@@ -23,14 +23,15 @@ fi
2323
if [ "$2" == "time" ];
2424
then
2525
MTYPE="time_constrained_mission"
26+
elif [ "$2" == "distance" ];
27+
then
28+
MTYPE="const_dist_mission"
29+
elif [ "$2" == "extended" ];
30+
then
31+
MTYPE="extended"
2632
else
27-
if [ "$2" == "distance" ];
28-
then
29-
MTYPE="const_dist_mission"
30-
else
31-
echo "mission_type invalid or missing"
32-
exit 1
33-
fi
33+
echo "mission_type invalid or missing"
34+
exit 1
3435
fi
3536

3637
FILE=$3
@@ -41,5 +42,10 @@ then
4142
ros2 launch suave_missions mission.launch.py adaptation_manager:=$MANAGER mission_type:=$MTYPE result_filename:=$FILE mc_reasoning_time_filename:=$MCFILE
4243
elif [ "$MANAGER" == "bt" ];
4344
then
44-
ros2 launch suave_bt suave_bt.launch.py result_filename:=$3
45+
if [ "$MTYPE" == "extended" ];
46+
then
47+
ros2 launch suave_bt suave_bt_extended.launch.py result_filename:=$3
48+
else
49+
ros2 launch suave_bt suave_bt.launch.py result_filename:=$3
50+
fi
4551
fi

0 commit comments

Comments
 (0)