YARP
Yet Another Robot Platform
MagneticFieldRosPublisher.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
7 
8 YARP_LOG_COMPONENT(GENERICSENSORROSPUBLISHER, "yarp.device.MagneticFieldRosPublisher")
9 
10 bool MagneticFieldRosPublisher::viewInterfaces()
11 {
12  // View all the interfaces
13  bool ok = true;
14  ok &= m_poly->view(m_iThreeAxisMagnetometers);
15  m_iThreeAxisMagnetometers->getThreeAxisMagnetometerFrameName(0, m_framename);
16  return ok;
17 }
18 
20 {
21  if (m_publisher.asPort().isOpen())
22  {
23  yarp::sig::Vector vecmagn(3);
24  yarp::rosmsg::sensor_msgs::MagneticField& magfield_ros_data = m_publisher.prepare();
26  magfield_ros_data.clear();
27  magfield_ros_data.header.frame_id = m_framename;;
28  magfield_ros_data.header.seq = m_msg_counter++;
29  magfield_ros_data.header.stamp = m_timestamp;
30  magfield_ros_data.magnetic_field.x = vecmagn[0];
31  magfield_ros_data.magnetic_field.y = vecmagn[1];
32  magfield_ros_data.magnetic_field.z = vecmagn[2];
33  //magfield_ros_data.magnetic_field_covariance = 0;
34  m_publisher.write();
35  }
36  }
const yarp::os::LogComponent & GENERICSENSORROSPUBLISHER()
yarp::os::Publisher< yarp::rosmsg::sensor_msgs::MagneticField > m_publisher
MagneticFieldRosPublisher: This wrapper connects to a device and publishes a ROS topic of type sensor...
yarp::dev::IThreeAxisMagnetometers * m_iThreeAxisMagnetometers
void run() override
Loop function.
bool view(T *&x)
Get an interface to the device driver.
Definition: DeviceDriver.h:74
virtual bool getThreeAxisMagnetometerMeasure(size_t sens_index, yarp::sig::Vector &out, double &timestamp) const =0
Get the last reading of the specified sensor.
yarp::conf::float64_t y
Definition: Vector3.h:38
yarp::conf::float64_t z
Definition: Vector3.h:39
yarp::conf::float64_t x
Definition: Vector3.h:37
yarp::rosmsg::std_msgs::Header header
Definition: MagneticField.h:51
yarp::rosmsg::geometry_msgs::Vector3 magnetic_field
Definition: MagneticField.h:52
yarp::rosmsg::TickTime stamp
Definition: Header.h:45
#define YARP_LOG_COMPONENT(name,...)
Definition: LogComponent.h:77