Go to the documentation of this file.00001 #ifndef SPATIAL_WORLD_MODEL_TRACKER_H_
00002 #define SPATIAL_WORLD_MODEL_TRACKER_H_
00003
00004 #include <mysql/mysql.h>
00005 #include <ros/ros.h>
00006 #include <interactive_world_msgs/StoreObservation.h>
00007 #include <interactive_world_msgs/FindObservations.h>
00008 #include <interactive_world_msgs/SetObservationsRemoved.h>
00009
00010 #define SWM_DEFAULT_SERVER "localhost"
00011
00012 #define SWM_DEFAULT_PORT 3306
00013
00014 #define SWM_DEFAULT_USER "ros"
00015
00016 #define SWM_DEFAULT_PASSWORD ""
00017
00018 #define SWM_DEFAULT_DATABASE "rms"
00019
00020 #define SWM_TABLE "swms"
00021
00022 #define SWM_CREATE_TABLE "CREATE TABLE IF NOT EXISTS `swms` \
00023 (`id` int(10) unsigned NOT NULL AUTO_INCREMENT, \
00024 `surface` varchar(255) NOT NULL, \
00025 `surface_frame_id` varchar(255) NOT NULL, \
00026 `placement_surface_frame_id` varchar(255) NOT NULL, \
00027 `item` varchar(255) NOT NULL, \
00028 `item_conf` double NOT NULL, \
00029 `x` double NOT NULL, \
00030 `y` double NOT NULL, \
00031 `z` double NOT NULL, \
00032 `theta` float NOT NULL, \
00033 `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, \
00034 `removed` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', \
00035 PRIMARY KEY (`id`) \
00036 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;"
00037
00038 class spatial_world_model_server
00039 {
00040 public:
00041 spatial_world_model_server();
00042
00043 ~spatial_world_model_server();
00044
00045 bool connected();
00046
00047 private:
00048 bool store_observation_cb(interactive_world_msgs::StoreObservation::Request &req, interactive_world_msgs::StoreObservation::Response &resp);
00049 bool find_observations_cb(interactive_world_msgs::FindObservations::Request &req,
00050 interactive_world_msgs::FindObservations::Response &resp);
00051 bool set_observations_removed_cb(interactive_world_msgs::SetObservationsRemoved::Request &req,
00052 interactive_world_msgs::SetObservationsRemoved::Response &resp);
00053
00054 time_t extract_time(const std::string &str) const;
00055
00056 MYSQL_RES *query(std::string query);
00057
00059 MYSQL *conn_;
00060
00061 ros::NodeHandle private_;
00062 std::string host_, user_, password_, database_;
00063 int port_;
00064 bool connected_;
00065
00066 ros::ServiceServer store_observation_, find_observations_, set_observations_removed_;
00067 };
00068
00069 int main(int argc, char **argv);
00070
00071 #endif