00001 /* -*- mode: C++ -*- 00002 * 00003 * Navigator zone controller 00004 * 00005 * Copyright (C) 2007, Mickey Ristroph 00006 * 00007 * License: Modified BSD Software License Agreement 00008 * 00009 * $Id: voronoi_zone.h 479 2010-08-27 01:16:11Z jack.oquin $ 00010 */ 00011 00012 #ifndef __VORONOI_ZONE_HH__ 00013 #define __VORONOI_ZONE_HH__ 00014 #include "parking.h" 00015 #include "follow_lane.h" 00016 00017 class Safety; 00018 class Halt; 00019 class ZoneManager; 00020 00021 class VoronoiZone: public Controller 00022 { 00023 public: 00024 00025 VoronoiZone(Navigator *navptr, int _verbose); 00026 ~VoronoiZone(); 00027 void configure(); 00028 result_t control(pilot_command_t &pcmd); 00029 void reset(void); 00030 00031 private: 00032 // state 00033 bool in_fake_zone; 00034 00035 // .cfg variables 00036 float zone_speed_limit; 00037 float zone_safety_radius; 00038 float zone_perimeter_sample; 00039 float fake_zone_border; 00040 float fake_zone_included_obstacle_radius; 00041 float zone_evg_thin_scale; 00042 int zone_grid_max_cells; 00043 bool zone_use_voronoi; 00044 bool zone_avoid_obstacles; 00045 bool zone_write_graph_to_tmp; 00046 bool zone_write_poly_to_tmp; 00047 bool zone_write_obstacles_to_tmp; 00048 float zone_aim_point; 00049 00050 Safety *safety; 00051 Halt *halt; 00052 00053 Controller::result_t set_heading(pilot_command_t &pcmd); 00054 00055 rotate_translate_transform trans; 00056 00057 PolyOps pops; 00058 ZoneManager *zmanager; 00059 00060 PARK_control *park; 00061 00062 00063 FollowLane* follow_lane; 00064 float lastYaw; 00065 mapxy_list_t spot_points; 00066 }; 00067 00068 #endif // __VORONOI_ZONE_HH__