|  | Paparazzi UAS v7.0_unstable
    Paparazzi is a free software Unmanned Aircraft System. | 
#include "modules/orange_avoider/orange_avoider_guided.h"#include "firmwares/rotorcraft/guidance/guidance_h.h"#include "generated/airframe.h"#include "state.h"#include "modules/core/abi.h"#include <stdio.h>#include <time.h> Include dependency graph for orange_avoider_guided.c:
 Include dependency graph for orange_avoider_guided.c:Go to the source code of this file.
| Macros | |
| #define | ORANGE_AVOIDER_VERBOSE TRUE | 
| #define | PRINT(string, ...) fprintf(stderr, "[orange_avoider_guided->%s()] " string,__FUNCTION__ , ##__VA_ARGS__) | 
| #define | VERBOSE_PRINT(...) | 
| Enumerations | |
| enum | navigation_state_t { SAFE , OBSTACLE_FOUND , SEARCH_FOR_SAFE_HEADING , OUT_OF_BOUNDS , REENTER_ARENA } | 
| Functions | |
| uint8_t | chooseRandomIncrementAvoidance (void) | 
| static void | color_detection_cb (uint8_t sender_id, int16_t pixel_x, int16_t pixel_y, int16_t pixel_width, int16_t pixel_height, int32_t quality, int16_t extra) | 
| static void | floor_detection_cb (uint8_t sender_id, int16_t pixel_x, int16_t pixel_y, int16_t pixel_width, int16_t pixel_height, int32_t quality, int16_t extra) | 
| void | orange_avoider_guided_init (void) | 
| void | orange_avoider_guided_periodic (void) | 
The color filter settings are set using the cv_detect_color_object. This module can run multiple filters simultaneously so you have to define which filter to use with the ORANGE_AVOIDER_VISUAL_DETECTION_ID setting. This module differs from the simpler orange_avoider.xml in that this is flown in guided mode. This flight mode is less dependent on a global positioning estimate as witht the navigation mode. This module can be used with a simple speed estimate rather than a global position.
Here we also need to use our onboard sensors to stay inside of the cyberzoo and not collide with the nets. For this we employ a simple color detector, similar to the orange poles but for green to detect the floor. When the total amount of green drops below a given threshold (given by floor_count_frac) we assume we are near the edge of the zoo and turn around. The color detection is done by the cv_detect_color_object module, use the FLOOR_VISUAL_DETECTION_ID setting to define which filter to use.
Definition in file orange_avoider_guided.c.
Definition at line 36 of file orange_avoider_guided.c.
| #define PRINT | ( | string, | |
| ... | |||
| ) | fprintf(stderr, "[orange_avoider_guided->%s()] " string,__FUNCTION__ , ##__VA_ARGS__) | 
Definition at line 38 of file orange_avoider_guided.c.
| #define VERBOSE_PRINT | ( | ... | ) | 
Definition at line 42 of file orange_avoider_guided.c.
| Enumerator | |
|---|---|
| SAFE | |
| OBSTACLE_FOUND | |
| SEARCH_FOR_SAFE_HEADING | |
| OUT_OF_BOUNDS | |
| REENTER_ARENA | |
Definition at line 47 of file orange_avoider_guided.c.
Definition at line 208 of file orange_avoider_guided.c.
References avoidance_heading_direction, foo, oag_heading_rate, and VERBOSE_PRINT.
Referenced by orange_avoider_guided_init(), and orange_avoider_guided_periodic().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
Definition at line 77 of file orange_avoider_guided.c.
References color_count.
Referenced by orange_avoider_guided_init().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
Definition at line 90 of file orange_avoider_guided.c.
References floor_centroid, floor_count, and foo.
Referenced by orange_avoider_guided_init().
 Here is the caller graph for this function:
 Here is the caller graph for this function:Definition at line 102 of file orange_avoider_guided.c.
References chooseRandomIncrementAvoidance(), color_detection_cb(), color_detection_ev, floor_detection_cb(), floor_detection_ev, foo, ORANGE_AVOIDER_VISUAL_DETECTION_ID, and time.
 Here is the call graph for this function:
 Here is the call graph for this function:Definition at line 116 of file orange_avoider_guided.c.
References avoidance_heading_direction, chooseRandomIncrementAvoidance(), color_count, floor_centroid, floor_count, foo, front_camera, guidance_h, GUIDANCE_H_MODE_GUIDED, guidance_h_set_body_vel(), guidance_h_set_heading(), guidance_h_set_heading_rate(), max_trajectory_confidence, HorizontalGuidance::mode, oag_color_count_frac, oag_floor_count_frac, oag_heading_rate, oag_max_speed, OBSTACLE_FOUND, obstacle_free_confidence, OUT_OF_BOUNDS, REENTER_ARENA, SAFE, SEARCH_FOR_SAFE_HEADING, speed_sp, stateGetNedToBodyEulers_f(), and VERBOSE_PRINT.
 Here is the call graph for this function:
 Here is the call graph for this function:| float avoidance_heading_direction = 0 | 
Definition at line 66 of file orange_avoider_guided.c.
Referenced by chooseRandomIncrementAvoidance(), and orange_avoider_guided_periodic().
| int32_t color_count = 0 | 
Definition at line 63 of file orange_avoider_guided.c.
Referenced by color_detection_cb(), and orange_avoider_guided_periodic().
| 
 | static | 
Definition at line 76 of file orange_avoider_guided.c.
Referenced by orange_avoider_guided_init().
| int32_t floor_centroid = 0 | 
Definition at line 65 of file orange_avoider_guided.c.
Referenced by floor_detection_cb(), and orange_avoider_guided_periodic().
| int32_t floor_count = 0 | 
Definition at line 64 of file orange_avoider_guided.c.
Referenced by floor_detection_cb(), and orange_avoider_guided_periodic().
| 
 | static | 
Definition at line 89 of file orange_avoider_guided.c.
Referenced by orange_avoider_guided_init().
Definition at line 69 of file orange_avoider_guided.c.
Referenced by orange_avoider_guided_periodic().
Definition at line 62 of file orange_avoider_guided.c.
Definition at line 56 of file orange_avoider_guided.c.
Referenced by orange_avoider_guided_periodic().
Definition at line 57 of file orange_avoider_guided.c.
Referenced by orange_avoider_guided_periodic().
Definition at line 59 of file orange_avoider_guided.c.
Referenced by chooseRandomIncrementAvoidance(), and orange_avoider_guided_periodic().
Definition at line 58 of file orange_avoider_guided.c.
Referenced by orange_avoider_guided_periodic().
| int16_t obstacle_free_confidence = 0 | 
Definition at line 67 of file orange_avoider_guided.c.
Referenced by orange_avoider_guided_periodic().