camera.cpp
Go to the documentation of this file.
1 
9 /*
10  * Copyright 2021 Jaeyoung Lim.
11  *
12  * This file is part of the mavros package and subject to the license terms
13  * in the top-level LICENSE file of the mavros repository.
14  * https://github.com/mavlink/mavros/tree/master/LICENSE.md
15  */
16 
17 #include <mavros/mavros_plugin.h>
18 
19 #include <mavros_msgs/CameraImageCaptured.h>
20 
21 namespace mavros {
22 namespace extra_plugins {
23 
25 using mavlink::common::MAV_CMD;
26 using utils::enum_value;
27 
35 public:
37  nh("~"),
38  camera_nh("~camera")
39  { }
40 
41  void initialize(UAS &uas_) override
42  {
44 
45  camera_image_captured_pub = camera_nh.advertise<mavros_msgs::CameraImageCaptured>("image_captured", 10);
46 
47  }
48 
50  {
51  return {
53  };
54  }
55 
56 private:
60 
68  void handle_camera_image_captured(const mavlink::mavlink_message_t *msg, mavlink::common::msg::CAMERA_IMAGE_CAPTURED &mo)
69  {
70  auto ic = boost::make_shared<mavros_msgs::CameraImageCaptured>();
71 
72  ic->header.stamp = m_uas->synchronise_stamp(mo.time_boot_ms);
73  ic->geo.latitude = mo.lat/ 1E7;
74  ic->geo.longitude = mo.lon / 1E7; // deg
75  ic->geo.altitude = mo.alt / 1E3 + m_uas->geoid_to_ellipsoid_height(&ic->geo); // in meters
76  ic->relative_alt = mo.relative_alt / 1E3;
77  auto q = ftf::mavlink_to_quaternion(mo.q);
78  tf::quaternionEigenToMsg(q, ic->orientation);
79  ic->image_index = mo.image_index;
80  ic->capture_result = mo.capture_result;
81  ic->file_url = mavlink::to_string(mo.file_url);
82 
84  }
85 
86 };
87 } // namespace extra_plugins
88 } // namespace mavros
89 
mavros::plugin::PluginBase::m_uas
UAS * m_uas
mavros::plugin::PluginBase::Subscriptions
std::vector< HandlerInfo > Subscriptions
ros::Publisher
mavros::extra_plugins::CameraPlugin::camera_nh
ros::NodeHandle camera_nh
Definition: camera.cpp:58
mavros::extra_plugins::CameraPlugin::get_subscriptions
Subscriptions get_subscriptions() override
Definition: camera.cpp:49
mavros::plugin::PluginBase::PluginBase
PluginBase()
mavros::UAS
mavros::extra_plugins::CameraPlugin::handle_camera_image_captured
void handle_camera_image_captured(const mavlink::mavlink_message_t *msg, mavlink::common::msg::CAMERA_IMAGE_CAPTURED &mo)
Publish camera image capture information.
Definition: camera.cpp:68
mavros::UAS::geoid_to_ellipsoid_height
double geoid_to_ellipsoid_height(T lla)
ros::Publisher::publish
void publish(const boost::shared_ptr< M > &message) const
ros::NodeHandle::advertise
Publisher advertise(AdvertiseOptions &ops)
mavros::extra_plugins::CameraPlugin::initialize
void initialize(UAS &uas_) override
Definition: camera.cpp:41
mavros::ftf::mavlink_to_quaternion
Eigen::Quaterniond mavlink_to_quaternion(const std::array< float, 4 > &q)
PLUGINLIB_EXPORT_CLASS
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
mavros::extra_plugins::CameraPlugin::camera_image_captured_pub
ros::Publisher camera_image_captured_pub
Definition: camera.cpp:59
mavros_plugin.h
to_string
std::string to_string(ADSB_ALTITUDE_TYPE e)
mavros::extra_plugins::CameraPlugin::CameraPlugin
CameraPlugin()
Definition: camera.cpp:36
mavros::extra_plugins::CameraPlugin::nh
ros::NodeHandle nh
Definition: camera.cpp:57
mavros
tf::quaternionEigenToMsg
void quaternionEigenToMsg(const Eigen::Quaterniond &e, geometry_msgs::Quaternion &m)
initialize
virtual void initialize(UAS &uas)
mavros::plugin::PluginBase
mavros::UAS::synchronise_stamp
ros::Time synchronise_stamp(uint32_t time_boot_ms)
class_list_macros.hpp
mavros::plugin::PluginBase::make_handler
HandlerInfo make_handler(const mavlink::msgid_t id, void(_C::*fn)(const mavlink::mavlink_message_t *msg, const mavconn::Framing framing))
mavros::utils::enum_value
constexpr std::underlying_type< _T >::type enum_value(_T e)
mavros::extra_plugins::CameraPlugin
Camera plugin plugin.
Definition: camera.cpp:34
ros::NodeHandle


mavros_extras
Author(s): Vladimir Ermakov , Amilcar Lucas
autogenerated on Tue May 6 2025 02:34:08