planner_interface.h

Go to the documentation of this file.
00001 /*********************************************************
00002  *
00003  * This source code is part of the Carnegie Mellon Robot
00004  * Navigation Toolkit (CARMEN)
00005  *
00006  * CARMEN Copyright (c) 2002 Michael Montemerlo, Nicholas
00007  * Roy, and Sebastian Thrun
00008  *
00009  * CARMEN is free software; you can redistribute it and/or 
00010  * modify it under the terms of the GNU General Public 
00011  * License as published by the Free Software Foundation; 
00012  * either version 2 of the License, or (at your option)
00013  * any later version.
00014  *
00015  * CARMEN is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied 
00017  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00018  * PURPOSE.  See the GNU General Public License for more 
00019  * details.
00020  *
00021  * You should have received a copy of the GNU General 
00022  * Public License along with CARMEN; if not, write to the
00023  * Free Software Foundation, Inc., 59 Temple Place, 
00024  * Suite 330, Boston, MA  02111-1307 USA
00025  *
00026  ********************************************************/
00027 
00028 
00030 // @{
00031 
00041 #ifndef PLANNER_INTERFACE_H
00042 #define PLANNER_INTERFACE_H
00043 
00044 #include <carmen/robot_messages.h>
00045 
00046 #include "navigator.h"
00047 #include "navigator_messages.h"
00048 
00049 #ifdef __cplusplus
00050 extern "C" {
00051 #endif
00052 
00056   typedef struct {
00057     carmen_traj_point_p points;
00058     int length;
00059     int capacity;
00060   } carmen_planner_path_t, *carmen_planner_path_p;
00061   
00065   typedef struct {
00066     carmen_traj_point_t robot;
00067     carmen_point_t goal;        
00068     carmen_planner_path_t path;
00069     int goal_set;
00070   } carmen_planner_status_t, *carmen_planner_status_p;
00071   
00072   
00077   int carmen_planner_update_robot(carmen_traj_point_p new_position, 
00078                                   carmen_navigator_config_t *nav_conf);
00079   
00083   int carmen_planner_update_goal(carmen_point_p new_goal, int any_orientation,
00084                                  carmen_navigator_config_t *nav_conf);
00085   
00096   int carmen_planner_next_waypoint(carmen_traj_point_p waypoint, 
00097                                    int *is_goal,
00098                                    carmen_navigator_config_t *nav_conf);
00099 
00102   void carmen_planner_set_map(carmen_map_p map, 
00103                               carmen_robot_config_t *robot_conf);
00104   
00108   void carmen_planner_reset_map(carmen_robot_config_t *robot_conf);
00109   
00114   void carmen_planner_update_map(carmen_robot_laser_message *laser_msg, 
00115                                  carmen_navigator_config_t *nav_config,
00116                                  carmen_robot_config_t *robot_conf);
00117   
00122   void carmen_planner_update_grid(carmen_map_p new_map, 
00123                                   carmen_traj_point_p new_position, 
00124                                   carmen_robot_config_t *robot_conf,
00125                                   carmen_navigator_config_t *nav_conf);
00126 
00131   carmen_navigator_map_message* carmen_planner_get_map_message
00132   (carmen_navigator_map_t map_type);
00133   
00137   void carmen_planner_get_status(carmen_planner_status_p status);
00138 
00145   double *carmen_planner_get_utility(void);  
00146 
00152   int carmen_planner_goal_reachable(void);
00153 
00154 #ifdef __cplusplus
00155 }
00156 #endif
00157 
00158 #endif
00159 // @}

Generated on Wed Apr 5 18:34:18 2006 for CARMEN by  doxygen 1.4.4