2017-12-22 17:48:39 -04:00
|
|
|
include "update.bzz"
|
|
|
|
# don't use a stigmergy id=11 with this header, for barrier
|
|
|
|
# it requires an 'action' function to be defined here.
|
|
|
|
include "act/states.bzz"
|
2018-02-26 14:26:33 -04:00
|
|
|
include "plan/rrtstar.bzz"
|
2017-12-22 17:48:39 -04:00
|
|
|
include "vstigenv.bzz"
|
|
|
|
|
2018-02-26 14:26:33 -04:00
|
|
|
#State launched after takeoff
|
|
|
|
AUTO_LAUNCH_STATE = "IDLE"
|
|
|
|
|
2017-12-22 17:48:39 -04:00
|
|
|
#####
|
|
|
|
# Vehicule type:
|
|
|
|
# 0 -> outdoor flying vehicle
|
|
|
|
# 1 -> indoor flying vehicle
|
|
|
|
# 2 -> outdoor wheeled vehicle
|
|
|
|
# 3 -> indoor wheeled vehicle
|
|
|
|
V_TYPE = 0
|
|
|
|
|
|
|
|
goal_list = {
|
|
|
|
.0={.x = 45.5088103899, .y = -73.1540826153, .z = 2.5}
|
|
|
|
}
|
|
|
|
|
|
|
|
# Executed once at init time.
|
|
|
|
function init() {
|
|
|
|
init_stig()
|
|
|
|
init_swarm()
|
|
|
|
|
|
|
|
TARGET_ALTITUDE = 25.0 # m
|
|
|
|
|
|
|
|
# start the swarm command listener
|
|
|
|
# nei_cmd_listen()
|
|
|
|
|
2018-02-26 14:26:33 -04:00
|
|
|
# Starting state: TURNEDOFF to wait for user input, LAUNCHED to auto-takeoff at startup.
|
2017-12-22 17:48:39 -04:00
|
|
|
# BVMSTATE = "TURNEDOFF"
|
|
|
|
BVMSTATE = "LAUNCHED"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Executed at each time step.
|
|
|
|
function step() {
|
|
|
|
# listen to Remote Controller
|
|
|
|
rc_cmd_listen()
|
|
|
|
|
|
|
|
# update the vstig (status/net/batt/...)
|
|
|
|
# uav_updatestig()
|
|
|
|
|
|
|
|
#
|
|
|
|
# graph state machine
|
|
|
|
#
|
|
|
|
if(BVMSTATE=="TURNEDOFF")
|
|
|
|
statef=turnedoff
|
|
|
|
else if(BVMSTATE=="STOP") # ends on turnedoff
|
|
|
|
statef=stop
|
2018-02-26 14:26:33 -04:00
|
|
|
else if(BVMSTATE=="LAUNCHED") # ends on AUTO_LAUNCH_STATE
|
2017-12-22 17:48:39 -04:00
|
|
|
statef=launch
|
|
|
|
else if(BVMSTATE=="IDLE")
|
|
|
|
statef=idle
|
|
|
|
else if(BVMSTATE=="TASK_ALLOCATE") #TODO: not tested in new structure
|
|
|
|
statef=makegraph # or bidding
|
2018-02-26 14:26:33 -04:00
|
|
|
else if(BVMSTATE=="PATHPLAN") # ends on navigate, defined in rrtstar
|
2017-12-22 17:48:39 -04:00
|
|
|
statef=rrtstar
|
2018-02-26 14:26:33 -04:00
|
|
|
else if(BVMSTATE=="NAVIGATE") # ends on idle, defined in rrtstar
|
2017-12-22 17:48:39 -04:00
|
|
|
statef=navigate
|
|
|
|
else if(BVMSTATE == "FOLLOW") #TODO: not tested in new structure
|
|
|
|
statef=follow
|
|
|
|
else if(BVMSTATE == "PICTURE") #TODO: not tested in new structure
|
|
|
|
statef=take_picture
|
|
|
|
|
|
|
|
statef()
|
|
|
|
|
|
|
|
log("Current state: ", BVMSTATE)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
# Executed once when the robot (or the simulator) is reset.
|
|
|
|
function reset() {
|
|
|
|
}
|
|
|
|
|
|
|
|
# Executed once at the end of experiment.
|
|
|
|
function destroy() {
|
|
|
|
}
|