19 #include <geometry_msgs/TransformStamped.h> 20 #include <geometry_msgs/PoseStamped.h> 21 #include <geometry_msgs/PoseWithCovarianceStamped.h> 22 #include <std_srvs/Trigger.h> 56 static geometry_msgs::PoseStamped zero;
59 zero.pose.orientation.w = 1;
67 inline Pose getPose(
const PoseWithCovarianceStampedConstPtr&
pose) {
return pose->pose.pose; }
89 if (
reset_flag || msg->header.stamp -
vpe.header.stamp > offset_timeout) {
104 vpe.header.stamp = msg->header.stamp;
112 bool reset(std_srvs::Trigger::Request& req, std_srvs::Trigger::Response& res)
119 int main(
int argc,
char **argv) {
128 nh_priv.
param<
string>(
"mavros/local_position/tf/child_frame_id",
child_frame_id,
"base_link");
131 if (!frame_id.empty()) {
138 auto pose_cov_sub = nh_priv.
subscribe<PoseWithCovarianceStamped>(
"pose_cov", 1, &
callback);
141 vpe_pub = nh_priv.
advertise<PoseStamped>(
"vpe", 1);
144 if (nh_priv.
param(
"publish_zero",
false)) {
ros::Duration publish_zero_timout
message_filters::Subscriber< geometry_msgs::PoseStamped > pose_sub
void localPositionCallback(const PoseStamped &msg)
Timer createTimer(Rate r, Handler h, Obj o, bool oneshot=false, bool autostart=true) const
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
int main(int argc, char **argv)
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
ros::Time got_local_pos(0)
ServiceServer advertiseService(const std::string &service, bool(T::*srv_func)(MReq &, MRes &), T *obj)
void doTransform(const T &data_in, T &data_out, const geometry_msgs::TransformStamped &transform)
ros::Duration offset_timeout
bool param(const std::string ¶m_name, T ¶m_val, const T &default_val) const
virtual geometry_msgs::TransformStamped lookupTransform(const std::string &target_frame, const std::string &source_frame, const ros::Time &time, const ros::Duration timeout) const
void publish(const boost::shared_ptr< M > &message) const
#define ROS_INFO_THROTTLE(period,...)
tf2_ros::Buffer tf_buffer
#define ROS_WARN_THROTTLE(period,...)
void callback(const T &msg)
Pose getPose(const PoseStampedConstPtr &pose)
ros::Subscriber local_position_sub
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
ros::Duration publish_zero_duration
void publishZero(const ros::TimerEvent &e)
bool reset(std_srvs::Trigger::Request &req, std_srvs::Trigger::Response &res)