diff --git a/launch/rosbuzz_2_parallel.launch b/launch/rosbuzz_2_parallel.launch
index 9f9aaa0..d3e1c0e 100644
--- a/launch/rosbuzz_2_parallel.launch
+++ b/launch/rosbuzz_2_parallel.launch
@@ -2,22 +2,23 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/roscontroller.cpp b/src/roscontroller.cpp
index 97fb3ee..0ed7bc0 100644
--- a/src/roscontroller.cpp
+++ b/src/roscontroller.cpp
@@ -86,10 +86,10 @@ namespace rosbzz_node{
void roscontroller::Initialize_pub_sub(ros::NodeHandle n_c){
/*subscribers*/
- current_position_sub = n_c.subscribe("/mav/global_position", 1000, &roscontroller::current_pos,this);
- battery_sub = n_c.subscribe("/mav/power_status", 1000, &roscontroller::battery,this);
+ current_position_sub = n_c.subscribe("/global_position", 1000, &roscontroller::current_pos,this);
+ battery_sub = n_c.subscribe("/power_status", 1000, &roscontroller::battery,this);
payload_sub = n_c.subscribe(in_payload, 1000, &roscontroller::payload_obt,this);
- flight_status_sub =n_c.subscribe("/mav/flight_status",100, &roscontroller::flight_status_update,this);
+ flight_status_sub =n_c.subscribe("/flight_status",100, &roscontroller::flight_status_update,this);
/*publishers*/
payload_pub = n_c.advertise(out_payload, 1000);
cout<= threshold) {
+ barrier = nil
+ transf()
+ }
+}
+
+# flight status
+
+function idle() {
+}
+
+function takeoff() {
+ if( flight.status == 2) {
+ barrier_set(ROBOTS,transition_to_land)
+ barrier_ready()
+ }
+ else
+ uav_takeoff()
+}
+function land() {
+ if( flight.status == 1) {
+ barrier_set(ROBOTS,idle)
+ barrier_ready()
+ }
+ else
+ uav_land()
+}
+
+
+function transition_to_land() {
+ if(tim>=100){
+ statef=land
+ tim=0
+ }else{
+ tim=tim+1
+ }
+}
+
# Executed once at init time.
function init() {
i = 0
a = 0
val = 0
oldcmd = 0
+tim=0
+statef=idle
}
# Executed at each time step.
@@ -13,25 +90,28 @@ neighbors.listen("cmd",
function(vid, value, rid) {
print("Got (", vid, ",", value, ") from robot #", rid)
if(value==22) {
- uav_takeoff()
+ statef=takeoff
} else if(value==21) {
- uav_land()
+ statef=land
}
}
)
+
+print("Flight status: ",flight.status)
if(flight.rc_cmd!=oldcmd) {
- print(flight.rc_cmd)
+
if(flight.rc_cmd==22) {
- uav_takeoff()
+ statef=takeoff
neighbors.broadcast("cmd", 22)
} else if(flight.rc_cmd==21) {
- uav_land()
+ statef=land
neighbors.broadcast("cmd", 21)
}
oldcmd=flight.rc_cmd
}
+statef()
}
# Executed once when the robot (or the simulator) is reset.