From f43ee3a0f513e1a510cd3dfca2345f22ace9c4da Mon Sep 17 00:00:00 2001 From: Kabir Mohammed Date: Fri, 16 Dec 2016 21:50:35 +0530 Subject: [PATCH] mavlink : use new vision estimate topic and fix stream name --- src/modules/mavlink/mavlink_messages.cpp | 34 +++++++++++++----------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp index 6efa300213..1f6da8e12f 100644 --- a/src/modules/mavlink/mavlink_messages.cpp +++ b/src/modules/mavlink/mavlink_messages.cpp @@ -86,7 +86,6 @@ #include #include #include -#include #include #include #include @@ -1520,17 +1519,17 @@ protected: } }; -class MavlinkStreamVisionPositionNED : public MavlinkStream +class MavlinkStreamVisionPositionEstimate : public MavlinkStream { public: const char *get_name() const { - return MavlinkStreamVisionPositionNED::get_name_static(); + return MavlinkStreamVisionPositionEstimate::get_name_static(); } static const char *get_name_static() { - return "VISION_POSITION_NED"; + return "VISION_POSITION_ESTIMATE"; } static uint16_t get_id_static() @@ -1545,7 +1544,7 @@ public: static MavlinkStream *new_instance(Mavlink *mavlink) { - return new MavlinkStreamVisionPositionNED(mavlink); + return new MavlinkStreamVisionPositionEstimate(mavlink); } unsigned get_size() @@ -1557,28 +1556,33 @@ private: MavlinkOrbSubscription *_pos_sub; uint64_t _pos_time; + MavlinkOrbSubscription *_att_sub; + uint64_t _att_time; + /* do not allow top copying this class */ - MavlinkStreamVisionPositionNED(MavlinkStreamVisionPositionNED &); - MavlinkStreamVisionPositionNED &operator = (const MavlinkStreamVisionPositionNED &); + MavlinkStreamVisionPositionEstimate(MavlinkStreamVisionPositionEstimate &); + MavlinkStreamVisionPositionEstimate &operator = (const MavlinkStreamVisionPositionEstimate &); protected: - explicit MavlinkStreamVisionPositionNED(Mavlink *mavlink) : MavlinkStream(mavlink), - _pos_sub(_mavlink->add_orb_subscription(ORB_ID(vision_position_estimate))), - _pos_time(0) + explicit MavlinkStreamVisionPositionEstimate(Mavlink *mavlink) : MavlinkStream(mavlink), + _pos_sub(_mavlink->add_orb_subscription(ORB_ID(vehicle_vision_position))), + _pos_time(0), + _att_sub(_mavlink->add_orb_subscription(ORB_ID(vehicle_vision_attitude))), + _att_time(0) {} void send(const hrt_abstime t) { - struct vision_position_estimate_s vpos; - memset(&vpos, 0, sizeof(vpos)); + struct vehicle_local_position_s vpos = {}; + struct vehicle_attitude_s vatt = {}; - if (_pos_sub->update(&_pos_time, &vpos)) { + if (_pos_sub->update(&_pos_time, &vpos) || _att_sub->update(&_att_time, &vatt)) { mavlink_vision_position_estimate_t vmsg; vmsg.usec = vpos.timestamp; vmsg.x = vpos.x; vmsg.y = vpos.y; vmsg.z = vpos.z; - math::Quaternion q(vpos.q); + math::Quaternion q(vatt.q); math::Vector<3> rpy = q.to_euler(); vmsg.roll = rpy(0); vmsg.pitch = rpy(1); @@ -3934,7 +3938,7 @@ const StreamListItem *streams_list[] = { new StreamListItem(&MavlinkStreamTimesync::new_instance, &MavlinkStreamTimesync::get_name_static, &MavlinkStreamTimesync::get_id_static), new StreamListItem(&MavlinkStreamGlobalPositionInt::new_instance, &MavlinkStreamGlobalPositionInt::get_name_static, &MavlinkStreamGlobalPositionInt::get_id_static), new StreamListItem(&MavlinkStreamLocalPositionNED::new_instance, &MavlinkStreamLocalPositionNED::get_name_static, &MavlinkStreamLocalPositionNED::get_id_static), - new StreamListItem(&MavlinkStreamVisionPositionNED::new_instance, &MavlinkStreamVisionPositionNED::get_name_static, &MavlinkStreamVisionPositionNED::get_id_static), + new StreamListItem(&MavlinkStreamVisionPositionEstimate::new_instance, &MavlinkStreamVisionPositionEstimate::get_name_static, &MavlinkStreamVisionPositionEstimate::get_id_static), new StreamListItem(&MavlinkStreamLocalPositionNEDCOV::new_instance, &MavlinkStreamLocalPositionNEDCOV::get_name_static, &MavlinkStreamLocalPositionNEDCOV::get_id_static), new StreamListItem(&MavlinkStreamEstimatorStatus::new_instance, &MavlinkStreamEstimatorStatus::get_name_static, &MavlinkStreamEstimatorStatus::get_id_static), new StreamListItem(&MavlinkStreamAttPosMocap::new_instance, &MavlinkStreamAttPosMocap::get_name_static, &MavlinkStreamAttPosMocap::get_id_static),