odometry_helper.cpp
Go to the documentation of this file.
1 
4 /*****************************************************************************
5 ** Includes
6 *****************************************************************************/
7 
9 #include "../../include/yocs_navi_toolkit/odometry_helper.hpp"
10 
11 /*****************************************************************************
12 ** Namespaces
13 *****************************************************************************/
14 
15 namespace yocs_navi_toolkit {
16 
17 /*****************************************************************************
18 ** Implementation
19 *****************************************************************************/
20 
21 OdometryHelper::OdometryHelper(const std::string& odometry_topic_name)
22 {
23  ros::NodeHandle nodehandle;
24  odometry_subscriber_ = nodehandle.subscribe<nav_msgs::Odometry>(odometry_topic_name, 1, boost::bind(&OdometryHelper::odometryCallback, this, _1));
25 }
26 
28 
29 void OdometryHelper::odometryCallback(const nav_msgs::Odometry::ConstPtr& msg)
30 {
31  std::lock_guard<std::mutex> lock(data_mutex_);
32  odometry_ = *msg;
33 }
34 
35 nav_msgs::Odometry OdometryHelper::odometry()
36 {
37  std::lock_guard<std::mutex> lock(data_mutex_);
38  nav_msgs::Odometry msg = odometry_;
39  return msg;
40 }
41 
42 void OdometryHelper::position(Eigen::Vector3f& position) {
43  std::lock_guard<std::mutex> lock(data_mutex_);
44  position << odometry_.pose.pose.position.x, odometry_.pose.pose.position.y, odometry_.pose.pose.position.z;
45 }
46 
47 void OdometryHelper::yaw(float& angle) {
48  std::lock_guard<std::mutex> lock(data_mutex_);
49  angle = tf::getYaw(odometry_.pose.pose.orientation);
50 }
51 
52 void OdometryHelper::velocities(std::pair<float, float>& mobile_twist_velocities)
53 {
54  std::lock_guard<std::mutex> lock(data_mutex_);
55  mobile_twist_velocities.first = odometry_.twist.twist.linear.x;
56  mobile_twist_velocities.second = odometry_.twist.twist.angular.z;
57 }
58 
59 /*****************************************************************************
60  ** Trailers
61  *****************************************************************************/
62 
63 } // namespace yocs_navi_toolkit
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
static double getYaw(const Quaternion &bt_q)
void odometryCallback(const nav_msgs::Odometry::ConstPtr &msg)
OdometryHelper(const std::string &odometry_topic_name)
void velocities(std::pair< float, float > &mobile_robot_velocities)
Mobile robot velocities in a 2d use case.
void yaw(float &angle)
Heading angle for mobile robot 2d use cases.
void position(Eigen::Vector3f &position)
3d position of the robot in eigen format.


yocs_navi_toolkit
Author(s): Daniel Stonier
autogenerated on Mon Jun 10 2019 15:53:55