00001 00013 #ifndef CALIBRATION_HPP_ 00014 #define CALIBRATION_HPP_ 00015 00016 #include <ros/ros.h> 00017 #include <ar_track_alvar_msgs/AlvarMarkers.h> 00018 #include <geometry_msgs/Pose.h> 00019 #include <vector> 00020 #include <string> 00021 #include <tf/transform_broadcaster.h> 00022 00027 #define URDF "ceiling.urdf.xacro" 00028 00033 #define FIXED_LINK_NAME "fixed_calibration_marker_" 00034 00039 #define CAMERA_LINK_NAME "calibration_ceiling_camera_" 00040 00047 class calibration 00048 { 00049 public: 00056 calibration(); 00057 00064 void publish_tf(); 00065 00071 void attempt_calibration(); 00072 00073 private: 00082 void marker_cback(const ar_track_alvar_msgs::AlvarMarkers::ConstPtr& msg, int camera); 00083 00089 void write_calibration(); 00090 00091 bool calibrated_; 00093 tf::TransformBroadcaster br; 00095 ros::NodeHandle nh_, pnh_; 00097 int num_cameras_, num_samples_; 00098 std::string fixed_frame_, camera_frame_id_prefix_; 00100 std::vector<ros::Subscriber> marker_subs_; 00101 std::vector<geometry_msgs::Pose> fixed_poses_, average_poses_; 00102 std::vector<std::vector<geometry_msgs::Pose> > samples_; 00103 }; 00104 00112 int main(int argc, char **argv); 00113 00114 #endif