Showing
2 changed files
with
21 additions
and
54 deletions
| ... | @@ -47,7 +47,7 @@ | ... | @@ -47,7 +47,7 @@ |
| 47 | 47 | ||
| 48 | #include "mission.h" | 48 | #include "mission.h" |
| 49 | #include "navigator.h" | 49 | #include "navigator.h" |
| 50 | -#include "iostream" | 50 | +#include <iostream> |
| 51 | #include <string.h> | 51 | #include <string.h> |
| 52 | #include <drivers/drv_hrt.h> | 52 | #include <drivers/drv_hrt.h> |
| 53 | #include <dataman/dataman.h> | 53 | #include <dataman/dataman.h> |
| ... | @@ -381,7 +381,6 @@ Mission::set_execution_mode(const uint8_t mode) | ... | @@ -381,7 +381,6 @@ Mission::set_execution_mode(const uint8_t mode) |
| 381 | _mission_execution_mode = mode; | 381 | _mission_execution_mode = mode; |
| 382 | } | 382 | } |
| 383 | } | 383 | } |
| 384 | - | ||
| 385 | bool | 384 | bool |
| 386 | Mission::find_mission_land_start() | 385 | Mission::find_mission_land_start() |
| 387 | { | 386 | { |
| ... | @@ -621,11 +620,12 @@ Mission::set_mission_items() | ... | @@ -621,11 +620,12 @@ Mission::set_mission_items() |
| 621 | struct mission_item_s mission_item_after_next_position; | 620 | struct mission_item_s mission_item_after_next_position; |
| 622 | bool has_next_position_item = false; | 621 | bool has_next_position_item = false; |
| 623 | bool has_after_next_position_item = false; | 622 | bool has_after_next_position_item = false; |
| 624 | - | ||
| 625 | work_item_type new_work_item_type = WORK_ITEM_TYPE_DEFAULT; | 623 | work_item_type new_work_item_type = WORK_ITEM_TYPE_DEFAULT; |
| 626 | 624 | ||
| 627 | if (prepare_mission_items(&_mission_item, &mission_item_next_position, &has_next_position_item, | 625 | if (prepare_mission_items(&_mission_item, &mission_item_next_position, &has_next_position_item, |
| 628 | &mission_item_after_next_position, &has_after_next_position_item)) { | 626 | &mission_item_after_next_position, &has_after_next_position_item)) { |
| 627 | + print_next_mission(&mission_item_next_position); | ||
| 628 | + | ||
| 629 | /* if mission type changed, notify */ | 629 | /* if mission type changed, notify */ |
| 630 | if (_mission_type != MISSION_TYPE_MISSION) { | 630 | if (_mission_type != MISSION_TYPE_MISSION) { |
| 631 | mavlink_log_info(_navigator->get_mavlink_log_pub(), | 631 | mavlink_log_info(_navigator->get_mavlink_log_pub(), |
| ... | @@ -633,7 +633,6 @@ Mission::set_mission_items() | ... | @@ -633,7 +633,6 @@ Mission::set_mission_items() |
| 633 | "Executing Mission"); | 633 | "Executing Mission"); |
| 634 | user_feedback_done = true; | 634 | user_feedback_done = true; |
| 635 | } | 635 | } |
| 636 | - | ||
| 637 | _mission_type = MISSION_TYPE_MISSION; | 636 | _mission_type = MISSION_TYPE_MISSION; |
| 638 | 637 | ||
| 639 | } else { | 638 | } else { |
| ... | @@ -1031,30 +1030,6 @@ Mission::set_mission_items() | ... | @@ -1031,30 +1030,6 @@ Mission::set_mission_items() |
| 1031 | generate_waypoint_from_heading(&pos_sp_triplet->current, pos_sp_triplet->current.yaw); | 1030 | generate_waypoint_from_heading(&pos_sp_triplet->current, pos_sp_triplet->current.yaw); |
| 1032 | } | 1031 | } |
| 1033 | 1032 | ||
| 1034 | - /* don't advance mission after FW to MC command */ | ||
| 1035 | - if (_mission_item.nav_cmd == NAV_CMD_DO_VTOL_TRANSITION | ||
| 1036 | - && _work_item_type == WORK_ITEM_TYPE_DEFAULT | ||
| 1037 | - && new_work_item_type == WORK_ITEM_TYPE_DEFAULT | ||
| 1038 | - && _navigator->get_vstatus()->vehicle_type == vehicle_status_s::VEHICLE_TYPE_FIXED_WING | ||
| 1039 | - && !_navigator->get_land_detected()->landed | ||
| 1040 | - && pos_sp_triplet->current.valid) { | ||
| 1041 | - | ||
| 1042 | - new_work_item_type = WORK_ITEM_TYPE_CMD_BEFORE_MOVE; | ||
| 1043 | - } | ||
| 1044 | - | ||
| 1045 | - /* after FW to MC transition finish moving to the waypoint */ | ||
| 1046 | - if (_work_item_type == WORK_ITEM_TYPE_CMD_BEFORE_MOVE && | ||
| 1047 | - new_work_item_type == WORK_ITEM_TYPE_DEFAULT | ||
| 1048 | - && pos_sp_triplet->current.valid) { | ||
| 1049 | - | ||
| 1050 | - new_work_item_type = WORK_ITEM_TYPE_DEFAULT; | ||
| 1051 | - | ||
| 1052 | - _mission_item.nav_cmd = NAV_CMD_WAYPOINT; | ||
| 1053 | - copy_position_if_valid(&_mission_item, &pos_sp_triplet->current); | ||
| 1054 | - _mission_item.autocontinue = true; | ||
| 1055 | - _mission_item.time_inside = 0.0f; | ||
| 1056 | - } | ||
| 1057 | - | ||
| 1058 | // ignore certain commands in mission fast forward | 1033 | // ignore certain commands in mission fast forward |
| 1059 | if ((_mission_execution_mode == mission_result_s::MISSION_EXECUTION_MODE_FAST_FORWARD) && | 1034 | if ((_mission_execution_mode == mission_result_s::MISSION_EXECUTION_MODE_FAST_FORWARD) && |
| 1060 | (_mission_item.nav_cmd == NAV_CMD_DELAY)) { | 1035 | (_mission_item.nav_cmd == NAV_CMD_DELAY)) { |
| ... | @@ -1461,17 +1436,14 @@ Mission::prepare_mission_items(struct mission_item_s *mission_item, | ... | @@ -1461,17 +1436,14 @@ Mission::prepare_mission_items(struct mission_item_s *mission_item, |
| 1461 | if (_mission_execution_mode == mission_result_s::MISSION_EXECUTION_MODE_REVERSE) { | 1436 | if (_mission_execution_mode == mission_result_s::MISSION_EXECUTION_MODE_REVERSE) { |
| 1462 | offset = -1; | 1437 | offset = -1; |
| 1463 | } | 1438 | } |
| 1464 | - | ||
| 1465 | if (read_mission_item(0, mission_item)) { | 1439 | if (read_mission_item(0, mission_item)) { |
| 1466 | - | ||
| 1467 | first_res = true; | 1440 | first_res = true; |
| 1468 | - | ||
| 1469 | /* trying to find next position mission item */ | 1441 | /* trying to find next position mission item */ |
| 1470 | while (read_mission_item(offset, next_position_mission_item)) { | 1442 | while (read_mission_item(offset, next_position_mission_item)) { |
| 1471 | - if (_mission_execution_mode == mission_result_s::MISSION_EXECUTION_MODE_REVERSE) { | 1443 | + if (_mission_execution_mode == mission_result_s::MISSION_EXECUTION_MODE_REVERSE) {\ |
| 1472 | - offset--; | 1444 | + offset--; |
| 1473 | - | 1445 | + } |
| 1474 | - } else { | 1446 | + else { |
| 1475 | offset++; | 1447 | offset++; |
| 1476 | } | 1448 | } |
| 1477 | 1449 | ||
| ... | @@ -1480,13 +1452,11 @@ Mission::prepare_mission_items(struct mission_item_s *mission_item, | ... | @@ -1480,13 +1452,11 @@ Mission::prepare_mission_items(struct mission_item_s *mission_item, |
| 1480 | break; | 1452 | break; |
| 1481 | } | 1453 | } |
| 1482 | } | 1454 | } |
| 1483 | - | ||
| 1484 | if (_mission_execution_mode != mission_result_s::MISSION_EXECUTION_MODE_REVERSE && | 1455 | if (_mission_execution_mode != mission_result_s::MISSION_EXECUTION_MODE_REVERSE && |
| 1485 | after_next_position_mission_item && has_after_next_position_item) { | 1456 | after_next_position_mission_item && has_after_next_position_item) { |
| 1486 | /* trying to find next next position mission item */ | 1457 | /* trying to find next next position mission item */ |
| 1487 | while (read_mission_item(offset, after_next_position_mission_item)) { | 1458 | while (read_mission_item(offset, after_next_position_mission_item)) { |
| 1488 | offset++; | 1459 | offset++; |
| 1489 | - | ||
| 1490 | if (item_contains_position(*after_next_position_mission_item)) { | 1460 | if (item_contains_position(*after_next_position_mission_item)) { |
| 1491 | *has_after_next_position_item = true; | 1461 | *has_after_next_position_item = true; |
| 1492 | break; | 1462 | break; |
| ... | @@ -1497,14 +1467,24 @@ Mission::prepare_mission_items(struct mission_item_s *mission_item, | ... | @@ -1497,14 +1467,24 @@ Mission::prepare_mission_items(struct mission_item_s *mission_item, |
| 1497 | 1467 | ||
| 1498 | return first_res; | 1468 | return first_res; |
| 1499 | } | 1469 | } |
| 1470 | +bool | ||
| 1471 | +Mission::print_next_mission(struct mission_item_s *mis) | ||
| 1472 | +{ | ||
| 1500 | 1473 | ||
| 1474 | + std::cout <<"----------------------target--------------------------"<<std::endl; | ||
| 1475 | + std::cout << "lat : "<<mis->lat <<std:: endl; | ||
| 1476 | + std::cout << "lon : "<<mis->lon <<std:: endl; | ||
| 1477 | + std::cout << "alt : "<<mis->altitude <<std:: endl; | ||
| 1478 | + //std::cout << "[whatever] "<<mis->timestamp <<std:: endl; | ||
| 1479 | + mission_index++; | ||
| 1480 | + return 0; | ||
| 1481 | +} | ||
| 1501 | bool | 1482 | bool |
| 1502 | Mission::read_mission_item(int offset, struct mission_item_s *mission_item) | 1483 | Mission::read_mission_item(int offset, struct mission_item_s *mission_item) |
| 1503 | { | 1484 | { |
| 1504 | /* select mission */ | 1485 | /* select mission */ |
| 1505 | const int current_index = _current_mission_index; | 1486 | const int current_index = _current_mission_index; |
| 1506 | int index_to_read = current_index + offset; | 1487 | int index_to_read = current_index + offset; |
| 1507 | - | ||
| 1508 | int *mission_index_ptr = (offset == 0) ? &_current_mission_index : &index_to_read; | 1488 | int *mission_index_ptr = (offset == 0) ? &_current_mission_index : &index_to_read; |
| 1509 | const dm_item_t dm_item = (dm_item_t)_mission.dataman_id; | 1489 | const dm_item_t dm_item = (dm_item_t)_mission.dataman_id; |
| 1510 | 1490 | ||
| ... | @@ -1584,7 +1564,6 @@ Mission::read_mission_item(int offset, struct mission_item_s *mission_item) | ... | @@ -1584,7 +1564,6 @@ Mission::read_mission_item(int offset, struct mission_item_s *mission_item) |
| 1584 | return true; | 1564 | return true; |
| 1585 | } | 1565 | } |
| 1586 | } | 1566 | } |
| 1587 | - | ||
| 1588 | /* we have given up, we don't want to cycle forever */ | 1567 | /* we have given up, we don't want to cycle forever */ |
| 1589 | mavlink_log_critical(_navigator->get_mavlink_log_pub(), "DO JUMP is cycling, giving up."); | 1568 | mavlink_log_critical(_navigator->get_mavlink_log_pub(), "DO JUMP is cycling, giving up."); |
| 1590 | return false; | 1569 | return false; |
| ... | @@ -1862,9 +1841,6 @@ bool Mission::position_setpoint_equal(const position_setpoint_s *p1, const posit | ... | @@ -1862,9 +1841,6 @@ bool Mission::position_setpoint_equal(const position_setpoint_s *p1, const posit |
| 1862 | 1841 | ||
| 1863 | void Mission::publish_navigator_mission_item() | 1842 | void Mission::publish_navigator_mission_item() |
| 1864 | { | 1843 | { |
| 1865 | - | ||
| 1866 | - for(int i=0;i<8;i++) | ||
| 1867 | -{ | ||
| 1868 | navigator_mission_item_s navigator_mission_item{}; | 1844 | navigator_mission_item_s navigator_mission_item{}; |
| 1869 | 1845 | ||
| 1870 | navigator_mission_item.instance_count = _navigator->mission_instance_count(); | 1846 | navigator_mission_item.instance_count = _navigator->mission_instance_count(); |
| ... | @@ -1889,13 +1865,5 @@ void Mission::publish_navigator_mission_item() | ... | @@ -1889,13 +1865,5 @@ void Mission::publish_navigator_mission_item() |
| 1889 | navigator_mission_item.vtol_back_transition = _mission_item.vtol_back_transition; | 1865 | navigator_mission_item.vtol_back_transition = _mission_item.vtol_back_transition; |
| 1890 | 1866 | ||
| 1891 | navigator_mission_item.timestamp = hrt_absolute_time(); | 1867 | navigator_mission_item.timestamp = hrt_absolute_time(); |
| 1892 | - | ||
| 1893 | _navigator_mission_item_pub.publish(navigator_mission_item); | 1868 | _navigator_mission_item_pub.publish(navigator_mission_item); |
| 1894 | - | ||
| 1895 | - | ||
| 1896 | - std::cout<<navigator_mission_item.latitude<<std::endl; | ||
| 1897 | - navigator_mission_item.sequence_current++; | ||
| 1898 | - std::cout<<"************************"<<std::endl; | ||
| 1899 | -} | ||
| 1900 | - | ||
| 1901 | } | 1869 | } | ... | ... |
| ... | @@ -49,7 +49,7 @@ | ... | @@ -49,7 +49,7 @@ |
| 49 | #include "navigator_mode.h" | 49 | #include "navigator_mode.h" |
| 50 | 50 | ||
| 51 | #include <float.h> | 51 | #include <float.h> |
| 52 | - | 52 | +#include <iostream> |
| 53 | #include <dataman/dataman.h> | 53 | #include <dataman/dataman.h> |
| 54 | #include <drivers/drv_hrt.h> | 54 | #include <drivers/drv_hrt.h> |
| 55 | #include <px4_platform_common/module_params.h> | 55 | #include <px4_platform_common/module_params.h> |
| ... | @@ -227,7 +227,7 @@ private: | ... | @@ -227,7 +227,7 @@ private: |
| 227 | * Find and store the index of the landing sequence (DO_LAND_START) | 227 | * Find and store the index of the landing sequence (DO_LAND_START) |
| 228 | */ | 228 | */ |
| 229 | bool find_mission_land_start(); | 229 | bool find_mission_land_start(); |
| 230 | - | 230 | + bool print_next_mission(struct mission_item_s *mis); |
| 231 | /** | 231 | /** |
| 232 | * Return the index of the closest mission item to the current global position. | 232 | * Return the index of the closest mission item to the current global position. |
| 233 | */ | 233 | */ |
| ... | @@ -269,7 +269,7 @@ private: | ... | @@ -269,7 +269,7 @@ private: |
| 269 | MISSION_TYPE_NONE, | 269 | MISSION_TYPE_NONE, |
| 270 | MISSION_TYPE_MISSION | 270 | MISSION_TYPE_MISSION |
| 271 | } _mission_type{MISSION_TYPE_NONE}; | 271 | } _mission_type{MISSION_TYPE_NONE}; |
| 272 | - | 272 | + int mission_index=-1; |
| 273 | bool _inited{false}; | 273 | bool _inited{false}; |
| 274 | bool _home_inited{false}; | 274 | bool _home_inited{false}; |
| 275 | bool _need_mission_reset{false}; | 275 | bool _need_mission_reset{false}; |
| ... | @@ -281,7 +281,6 @@ private: | ... | @@ -281,7 +281,6 @@ private: |
| 281 | WORK_ITEM_TYPE_TAKEOFF, /**< takeoff before moving to waypoint */ | 281 | WORK_ITEM_TYPE_TAKEOFF, /**< takeoff before moving to waypoint */ |
| 282 | WORK_ITEM_TYPE_MOVE_TO_LAND, /**< move to land waypoint before descent */ | 282 | WORK_ITEM_TYPE_MOVE_TO_LAND, /**< move to land waypoint before descent */ |
| 283 | WORK_ITEM_TYPE_ALIGN, /**< align for next waypoint */ | 283 | WORK_ITEM_TYPE_ALIGN, /**< align for next waypoint */ |
| 284 | - WORK_ITEM_TYPE_CMD_BEFORE_MOVE, | ||
| 285 | WORK_ITEM_TYPE_TRANSITON_AFTER_TAKEOFF, | 284 | WORK_ITEM_TYPE_TRANSITON_AFTER_TAKEOFF, |
| 286 | WORK_ITEM_TYPE_MOVE_TO_LAND_AFTER_TRANSITION, | 285 | WORK_ITEM_TYPE_MOVE_TO_LAND_AFTER_TRANSITION, |
| 287 | WORK_ITEM_TYPE_PRECISION_LAND | 286 | WORK_ITEM_TYPE_PRECISION_LAND | ... | ... |
-
Please register or login to post a comment