00001
00002
00003
00004 #include "drawing.H"
00005 #include "simview.H"
00006 #include "draw_path_wp.H"
00007 #include "draw_path_exploration.H"
00008 #include "draw_grid_tile.H"
00009 #include "draw_iteris.H"
00010 #include "draw_iteris_gp.H"
00011 #include "draw_scan_gp.H"
00012 #include "draw_scan_lane_gp.H"
00013 #include "draw_survey_gp.H"
00014 #include "draw_static_scangp.H"
00015 #include "draw_camera_splines.H"
00016 #include "draw_static_las.H"
00017 #include "draw_lane_data.H"
00018 #include "draw_mesh_cell.H"
00019 #include "draw_rndf_lane.H"
00020 #include "draw_rndf_file.H"
00021 #include "draw_static_triangles.H"
00022 #include "draw_blocked_lanes.H"
00023 #include "draw_triangles.H"
00024 #include "draw_rndf.H"
00025 #include "draw_obstacles.H"
00026 #include "draw_obstacle_points.H"
00027 #include "draw_robot.H"
00028 #include "frequency_counter.H"
00029 #include "control_panel_window.H"
00030 #include "bitmap_window.H"
00031 #include "component_interface.H"
00032 #include "draw_map.H"
00033
00034 #ifndef CAJUN_SIMULATION_DRAW_H
00035 #define CAJUN_SIMULATION_DRAW_H
00036
00037 namespace cajun
00038 {
00039 class simulation_draw_t : public drawing_t
00040 {
00041 public:
00042 simulation_draw_t (double cbviz_origin_pos[3],
00043 char const *robot_model_file,
00044 char const *conf_filename,
00045 char const *rndf_filename,
00046 char const *vision_file_,
00047 char const *lane_markings_file,
00048 char const *indices_file_,
00049 char const *vertices_file_,
00050 char const *static_file_,
00051 char const *static_las_file_,
00052 char const *geotiff_dir_,
00053 char const *camera_script_file,
00054 int viz_mode,
00055 int utm_zone, world_state_t *ws_,
00056 graphic_interface_t *interface_);
00057 virtual ~simulation_draw_t ();
00058 draw_robot_t *m_robot_viz;
00059 void load_terrain_textures (char const *terrain_texture_file,
00060 char const *sky_terrain_file);
00061 void load_context_data ();
00062 private:
00063 void draw_fog ();
00064 void write_control_data ();
00065 void write_playback_data ();
00066
00067 double m_projection_dist, m_projection_height;
00068 double m_prev_time;
00069 double m_elapsed_time;
00070 #ifdef VR_JUGGLER
00071 double m_button_press_time;
00072 #endif
00073 unsigned m_frame_count;
00074
00075 proj_t m_proj;
00076 rndf_t const *m_rndf;
00077 char const *m_rndf_filename;
00078
00079 int m_utm_zone;
00080 int m_viz_mode;
00081 bool m_static_mode;
00082
00083 graphic_interface_t *m_interface_;
00084
00085 std::vector <component_interface_t *> m_components;
00086 control_panel_window_t *m_control_panel_window;
00087 bitmap_window_t *m_bitmap_window;
00088
00089 world_state_t *m_world_state;
00090 access_data_t *m_access_data;
00091
00092 guide_data_t m_guide_data;
00093 playback_control_data_t m_playback_control_data;
00094 control_data_t m_control_data;
00095
00096 cb_time_t m_timer;
00097 double m_cbviz_origin[3];
00098
00099 draw_path_wp_t *m_draw_path_0_wp;
00100 draw_path_wp_t *m_draw_path_1_wp;
00101 draw_path_wp_t *m_draw_path_2_wp;
00102
00103 draw_path_exploration_t *m_draw_path_exploration;
00104
00105 draw_grid_tile_t *m_draw_search_grid;
00106 draw_grid_tile_t *m_draw_map_grid;
00107 draw_mesh_cell_t *m_draw_mesh_cell;
00108 draw_rndf_t *m_draw_rndf;
00109 monovision_visualization_t *m_draw_lane_data;
00110 draw_map_t *m_draw_map;
00111 draw_iteris_t *m_draw_iteris;
00112 draw_iteris_gp_t *m_draw_iteris_gp;
00113 draw_rndf_lane_t *m_draw_rndf_lane;
00114 draw_rndf_file_t *m_draw_rndf_file;
00115 draw_blocked_lanes_t *m_draw_blocked_lanes;
00116 draw_scan_lane_gp_t *m_draw_scan_lane_gp;
00117 draw_survey_gp_t *m_draw_survey_gp;
00118 draw_static_scangp_t *m_draw_static_scangp;
00119 draw_static_las_t *m_draw_static_las;
00120 draw_static_triangles_t *m_draw_static_triangles;
00121 draw_camera_splines_t *m_draw_camera_splines;
00122
00123 std::vector <draw_obstacles_t *> m_obstacle_visualization;
00124 std::vector <laser_visualization_t *> m_laser_visualization;
00125 std::vector <draw_scan_gp_t *> m_scan_gp_visualization;
00126 std::vector <draw_triangles_t *> m_triangle_visualization;
00127 std::vector <draw_obstacle_points_t *> m_obstacle_points_visualization;
00128
00129 simview_t::simview_interface_t *m_simview_interface;
00130 Model *m_pTerrain;
00131 Model *m_pSky;
00132 bool m_ground_texture;
00133 bool m_sky_texture;
00134 bool m_show_fps;
00135 bool m_display_guide;
00136 bool m_display_coordinate_axes;
00137 bool m_display_compass;
00138
00139 double m_ref_pos[3];
00140 double m_ground_ref_height;
00141 double m_ref_orientation[3];
00142
00143 void dynamic_data ();
00144 void intra_update_data ();
00145 void update_data ();
00146 void update_data2 ();
00147 void update_data3 ();
00148 void draw ();
00149 void draw2 ();
00150 void draw3 ();
00151 void reshape (int w, int h);
00152 void reshape2 (int w, int h);
00153 void reshape3 (int w, int h);
00154 void normalKey_callback (int key, int x, int y, int mod);
00155 void controlKey_callback (int key, int x, int y, int mod);
00156 void mousemotion_callback (int x, int y);
00157 void mousebutton_callback (int button, int state, int x, int y,
00158 int mod);
00159 bool check_video_display ();
00160 bool check_ctrl_panel_display ();
00161 void BuildTerrain ();
00162 void display_guide ();
00163 void draw_compass ();
00164 };
00165 };
00166 #endif