MultiJointTrackerNode.h
Go to the documentation of this file.
00001 /*
00002  * MultiJointTrackerNode.h
00003  *
00004  *      Author: roberto
00005  *
00006  * This is a modified implementation of the method for online estimation of kinematic structures described in our paper
00007  * "Online Interactive Perception of Articulated Objects with Multi-Level Recursive Estimation Based on Task-Specific Priors"
00008  * (Martín-Martín and Brock, 2014).
00009  * This implementation can be used to reproduce the results of the paper and to be applied to new research.
00010  * The implementation allows also to be extended to perceive different information/models or to use additional sources of information.
00011  * A detail explanation of the method and the system can be found in our paper.
00012  *
00013  * If you are using this implementation in your research, please consider citing our work:
00014  *
00015 @inproceedings{martinmartin_ip_iros_2014,
00016 Title = {Online Interactive Perception of Articulated Objects with Multi-Level Recursive Estimation Based on Task-Specific Priors},
00017 Author = {Roberto {Mart\'in-Mart\'in} and Oliver Brock},
00018 Booktitle = {Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems},
00019 Pages = {2494-2501},
00020 Year = {2014},
00021 Location = {Chicago, Illinois, USA},
00022 Note = {http://www.robotics.tu-berlin.de/fileadmin/fg170/Publikationen_pdf/martinmartin_ip_iros_2014.pdf},
00023 Url = {http://www.robotics.tu-berlin.de/fileadmin/fg170/Publikationen_pdf/martinmartin_ip_iros_2014.pdf},
00024 Projectname = {Interactive Perception}
00025 }
00026  * If you have questions or suggestions, contact us:
00027  * roberto.martinmartin@tu-berlin.de
00028  *
00029  * Enjoy!
00030  */
00031 
00032 #ifndef JOINT_TRACKER_NODE_H
00033 #define JOINT_TRACKER_NODE_H
00034 
00035 #include <ros/ros.h>
00036 #include <tf/transform_broadcaster.h>
00037 
00038 #include <std_srvs/Empty.h>
00039 #include "joint_tracker/publish_urdf.h"
00040 
00041 #include <sensor_msgs/PointCloud2.h>
00042 #include <geometry_msgs/Pose.h>
00043 
00044 #include <sensor_msgs/JointState.h>
00045 #include <std_msgs/String.h>
00046 
00047 #include <message_filters/subscriber.h>
00048 #include <message_filters/time_synchronizer.h>
00049 
00050 #include <pcl_ros/publisher.h>
00051 #include <pcl/io/io.h>
00052 #include <pcl/point_types.h>
00053 
00054 #include <Eigen/StdVector>
00055 #include <Eigen/Geometry>
00056 
00057 #include "joint_tracker/JointCombinedFilter.h"
00058 #include "joint_tracker/MultiJointTracker.h"
00059 
00060 #include "omip_msgs/RigidBodyPosesAndVelsMsg.h"
00061 #include "omip_msgs/RigidBodyPoseAndVelMsg.h"
00062 
00063 #include "omip_common/RecursiveEstimatorNodeInterface.h"
00064 #include "omip_common/OMIPTypeDefs.h"
00065 
00066 #include <std_msgs/Float64.h>
00067 
00068 namespace omip{
00069 
00070 class MultiJointTrackerNode  : public RecursiveEstimatorNodeInterface<ks_measurement_ros_t, ks_state_ros_t, MultiJointTracker>
00071 {
00072 
00073 public:
00074 
00078     MultiJointTrackerNode();
00079 
00083     virtual ~MultiJointTrackerNode();
00084 
00088     void ReadParameters();
00089 
00095     virtual void measurementCallback(const boost::shared_ptr<ks_measurement_ros_t const> &poses_and_vels);
00096 
00102     virtual void statePredictionCallback(const boost::shared_ptr<ks_state_ros_t const> & predicted_next_state){}
00103 
00107     void ReadBag(){}
00108 
00109     virtual bool publishURDF(joint_tracker::publish_urdf::Request& request, joint_tracker::publish_urdf::Response& response);
00110 
00111 protected:
00112 
00117     virtual void _publishState() const;
00118 
00123     virtual void _publishPredictedMeasurement() const;
00124 
00129     virtual void _PrintResults() const;
00130 
00131     virtual void _generateURDF(std_msgs::String &urdf_string_msg, sensor_msgs::JointState &joint_state_msg) const;
00132 
00133     ros::ServiceServer _urdf_pub_service;
00134 
00135     double _sensor_fps;
00136     int _processing_factor;
00137     double _loop_period_ns;
00138 
00139 
00140     ros::Publisher _state_publisher_urdf;
00141 
00142     ros::Publisher _state_publisher_joint_states;
00143 
00144     ros::Publisher _state_publisher_rviz_markers;
00145 
00146     int _min_joint_age_for_ee;
00147 
00148     std::string _sr_path;
00149 };
00150 }
00151 
00152 #endif /* JOINT_TRACKER_NODE_H */


joint_tracker
Author(s): Roberto Martín-Martín
autogenerated on Sat Jun 8 2019 18:26:46