template class mrpt::poses::FrameTransformerInterface

Overview

Virtual base class for interfaces to a ROS tf2 -like service capable of “publishing” and “looking-up” relative poses between two “coordinate frames”.

Use derived classes for:

Frame IDs are strings. MRPT modules use the standard ROS REP 105 document regarding common names for frames:

  • base_link : “the robot”

  • odom : Origin for odometry

  • map : Origin for “the map”

Parameters:

DIM

Can be 2 for SE(2), 2D transformations; or 3 for SE(3), 3D transformations.

See also:

FrameTransformer, CPose3D

#include <mrpt/poses/FrameTransformer.h>

template <size_t DIM>
class FrameTransformerInterface
{
public:
    // typedefs

    typedef typename Lie::SE<DIM>::type pose_t;
    typedef typename Lie::SE<DIM>::light_type light_type;

    // construction

    FrameTransformerInterface();
    FrameTransformerInterface(const FrameTransformerInterface&);
    FrameTransformerInterface(FrameTransformerInterface&&);

    // methods

    FrameTransformerInterface& operator = (const FrameTransformerInterface&);
    FrameTransformerInterface& operator = (FrameTransformerInterface&&);

    virtual void sendTransform(
        const std::string& parent_frame,
        const std::string& child_frame,
        const pose_t& child_wrt_parent,
        const mrpt::system::TTimeStamp& timestamp = mrpt::Clock::now()
        ) = 0;

    virtual FrameLookUpStatus lookupTransform(
        const std::string& target_frame,
        const std::string& source_frame,
        light_type& child_wrt_parent,
        const mrpt::system::TTimeStamp query_time = INVALID_TIMESTAMP,
        const double timeout_secs = .0
        ) = 0;
};

// direct descendants

template <size_t DIM>
class FrameTransformer;

Typedefs

typedef typename Lie::SE<DIM>::type pose_t

This will be mapped to CPose2D (DIM=2) or CPose3D (DIM=3)

typedef typename Lie::SE<DIM>::light_type light_type

This will be mapped to mrpt::math::TPose2D (DIM=2) or mrpt::math::TPose3D (DIM=3)

Methods

virtual void sendTransform(
    const std::string& parent_frame,
    const std::string& child_frame,
    const pose_t& child_wrt_parent,
    const mrpt::system::TTimeStamp& timestamp = mrpt::Clock::now()
    ) = 0

Publish a time-stampped transform between two frames.

virtual FrameLookUpStatus lookupTransform(
    const std::string& target_frame,
    const std::string& source_frame,
    light_type& child_wrt_parent,
    const mrpt::system::TTimeStamp query_time = INVALID_TIMESTAMP,
    const double timeout_secs = .0
    ) = 0

Queries the current pose of target_frame wrt (“as seen from”) source_frame.

It tries to return the pose at the given timepoint, unless it is INVALID_TIMESTAMP (default), which means returning the latest know transformation.