00001 00024 #ifndef CCNY_RGBD_TYPES_H 00025 #define CCNY_RGBD_TYPES_H 00026 00027 #include <Eigen/Core> 00028 #include <pcl/point_types.h> 00029 #include <pcl/kdtree/kdtree_flann.h> 00030 #include <pcl/registration/transformation_estimation_svd.h> 00031 #include <sensor_msgs/image_encodings.h> 00032 #include <nav_msgs/Odometry.h> 00033 #include <nav_msgs/Path.h> 00034 #include <image_transport/image_transport.h> 00035 #include <image_transport/subscriber_filter.h> 00036 #include <image_geometry/pinhole_camera_model.h> 00037 #include <message_filters/subscriber.h> 00038 #include <message_filters/synchronizer.h> 00039 #include <message_filters/sync_policies/approximate_time.h> 00040 #include <dynamic_reconfigure/server.h> 00041 00042 #include "ccny_rgbd/FeatureDetectorConfig.h" 00043 #include "ccny_rgbd/GftDetectorConfig.h" 00044 #include "ccny_rgbd/StarDetectorConfig.h" 00045 #include "ccny_rgbd/SurfDetectorConfig.h" 00046 #include "ccny_rgbd/OrbDetectorConfig.h" 00047 00048 namespace ccny_rgbd { 00049 00050 // Eigen matrix types 00051 00052 typedef Eigen::Matrix3f Matrix3f; 00053 typedef Eigen::Vector3f Vector3f; 00054 typedef Eigen::Affine3f Pose; 00055 typedef Eigen::Affine3f AffineTransform; 00056 00057 // Vector types 00058 00059 typedef std::vector<int> IntVector; 00060 typedef std::vector<float> FloatVector; 00061 typedef std::vector<bool> BoolVector; 00062 typedef std::vector<cv::Point2f> Point2fVector; 00063 typedef std::vector<cv::Point3f> Point3fVector; 00064 typedef std::vector<Eigen::Matrix3f> Matrix3fVector; 00065 typedef std::vector<Eigen::Vector3f> Vector3fVector; 00066 typedef std::vector<cv::KeyPoint> KeypointVector; 00067 00068 typedef Eigen::aligned_allocator<AffineTransform> AffineTransformAllocator; 00069 typedef std::vector<AffineTransform, AffineTransformAllocator> AffineTransformVector; 00070 00071 // PCL types 00072 00073 typedef pcl::PointXYZRGB PointT; 00074 typedef pcl::PointCloud<PointT> PointCloudT; 00075 00076 typedef pcl::PointXYZ PointFeature; 00077 typedef pcl::PointCloud<PointFeature> PointCloudFeature; 00078 00079 typedef pcl::KdTreeFLANN<PointFeature> KdTree; 00080 typedef pcl::registration::TransformationEstimationSVD<PointFeature, PointFeature> TransformationEstimationSVD; 00081 00082 // ROS message types 00083 00084 typedef sensor_msgs::Image ImageMsg; 00085 typedef sensor_msgs::CameraInfo CameraInfoMsg; 00086 typedef nav_msgs::Odometry OdomMsg; 00087 typedef nav_msgs::Path PathMsg; 00088 00089 // ROS publishers, subscribers, services, etc 00090 00091 typedef image_geometry::PinholeCameraModel PinholeCameraModel; 00092 typedef image_transport::ImageTransport ImageTransport; 00093 typedef image_transport::Publisher ImagePublisher; 00094 typedef image_transport::SubscriberFilter ImageSubFilter; 00095 typedef message_filters::Subscriber<CameraInfoMsg> CameraInfoSubFilter; 00096 00097 typedef message_filters::sync_policies::ApproximateTime<ImageMsg, CameraInfoMsg> RGBSyncPolicy; 00098 typedef message_filters::sync_policies::ApproximateTime<ImageMsg, ImageMsg, CameraInfoMsg> RGBDSyncPolicy3; 00099 typedef message_filters::sync_policies::ApproximateTime<ImageMsg, ImageMsg, CameraInfoMsg, CameraInfoMsg> RGBDSyncPolicy4; 00100 00101 typedef message_filters::Synchronizer<RGBSyncPolicy> RGBSynchronizer; 00102 typedef message_filters::Synchronizer<RGBDSyncPolicy3> RGBDSynchronizer3; 00103 typedef message_filters::Synchronizer<RGBDSyncPolicy4> RGBDSynchronizer4; 00104 00105 // ROS dynamic reconfigure 00106 00107 typedef dynamic_reconfigure::Server<FeatureDetectorConfig> FeatureDetectorConfigServer; 00108 00109 typedef dynamic_reconfigure::Server<GftDetectorConfig> GftDetectorConfigServer; 00110 typedef boost::shared_ptr<GftDetectorConfigServer> GftDetectorConfigServerPtr; 00111 00112 typedef dynamic_reconfigure::Server<StarDetectorConfig> StarDetectorConfigServer; 00113 typedef boost::shared_ptr<StarDetectorConfigServer> StarDetectorConfigServerPtr; 00114 00115 typedef dynamic_reconfigure::Server<SurfDetectorConfig> SurfDetectorConfigServer; 00116 typedef boost::shared_ptr<SurfDetectorConfigServer> SurfDetectorConfigServerPtr; 00117 00118 typedef dynamic_reconfigure::Server<OrbDetectorConfig> OrbDetectorConfigServer; 00119 typedef boost::shared_ptr<OrbDetectorConfigServer> OrbDetectorConfigServerPtr; 00120 00121 } // namespace ccny_rgbd 00122 00123 #endif // CCNY_RGBD_TYPES_H