Go to the documentation of this file.00001 #include <ros/ros.h>
00002
00003 #include <hrl_phri_2011/pcl_basic.h>
00004 #include <hrl_phri_2011/utils.h>
00005 #include <hrl_phri_2011/ForceProcessed.h>
00006 #include <hrl_phri_2011/hsl_rgb_conversions.h>
00007
00008 int main(int argc, char **argv)
00009 {
00010 ros::init(argc, argv, "save_contact_cloud");
00011 ros::NodeHandle nh;
00012
00013 if(argc < 2 || argc > 4) {
00014 printf("Usage: save_contact_cloud forces_bag output_bag [frame]\n");
00015 return 1;
00016 }
00017
00018
00019 vector<hrl_phri_2011::ForceProcessed::Ptr> forces;
00020 readBagTopic<hrl_phri_2011::ForceProcessed>(argv[1], forces, "/force_processed");
00021
00022 PCRGB fpc;
00023 for(uint32_t i=0;i<forces.size();i++) {
00024 PRGB pt;
00025 pt.x = forces[i]->tool_frame.transform.translation.x;
00026 pt.y = forces[i]->tool_frame.transform.translation.y;
00027 pt.z = forces[i]->tool_frame.transform.translation.z;
00028 pt.rgb = forces[i]->force_magnitude;
00029 fpc.points.push_back(pt);
00030 }
00031 if(argc > 3)
00032 fpc.header.frame_id = argv[3];
00033 else
00034 fpc.header.frame_id = "/base_link";
00035
00036 rosbag::Bag bag;
00037 bag.open(argv[2], rosbag::bagmode::Write);
00038 bag.write("/contact_cloud", ros::Time::now(), fpc);
00039 bag.close();
00040
00041 return 0;
00042 }