00001 00024 #ifndef CCNY_RGBD_RGBD_KEYFRAME_H 00025 #define CCNY_RGBD_RGBD_KEYFRAME_H 00026 00027 #include <boost/filesystem.hpp> 00028 #include <pcl/point_cloud.h> 00029 #include <pcl_ros/point_cloud.h> 00030 #include <pcl_ros/transforms.h> 00031 00032 #include "ccny_rgbd/structures/rgbd_frame.h" 00033 00034 namespace ccny_rgbd { 00035 00042 class RGBDKeyframe: public RGBDFrame 00043 { 00044 public: 00045 00046 EIGEN_MAKE_ALIGNED_OPERATOR_NEW 00047 00050 RGBDKeyframe(); 00051 00055 RGBDKeyframe(const RGBDFrame& frame); 00056 00057 tf::Transform pose; 00058 00059 bool manually_added; 00060 00064 double path_length_linear; 00065 00069 double path_length_angular; 00070 00071 00072 00083 static bool save(const RGBDKeyframe& keyframe, 00084 const std::string& path); 00085 00096 static bool load(RGBDKeyframe& keyframe, 00097 const std::string& path); 00098 }; 00099 00100 typedef Eigen::aligned_allocator<RGBDKeyframe> KeyframeAllocator; 00101 typedef std::vector<RGBDKeyframe, KeyframeAllocator> KeyframeVector; 00102 00111 bool saveKeyframes(const KeyframeVector& keyframes, 00112 const std::string& path); 00113 00122 bool loadKeyframes(KeyframeVector& keyframes, 00123 const std::string& path); 00124 00125 } //namespace ccny_rgbd 00126 00127 #endif // CCNY_RGBD_RGBD_KEYFRAME_H