Mavros: ๊ฐ„๋‹จํ•œ mavlink ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ์ž ๋ฌธ์ œ

์— ๋งŒ๋“  2017๋…„ 05์›” 16์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mavlink/mavros

MAVROS ๋ฒ„์ „ ๋ฐ ํ”Œ๋žซํผ

๋งˆ ๋ธŒ๋กœ์Šค : 0.19.0
ROS : ํ‚ค๋„คํ‹ฑ
Ubuntu : 16.04

๋ฌธ์ œ ์„ธ๋ถ€ ์ •๋ณด

์•ˆ๋…•ํ•˜์„ธ์š”,

ํ˜„์žฌ libmavconn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ mavlink ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ๊ธฐ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ ํ•˜์ง€๋งŒ ์•ˆํƒ€๊น๊ฒŒ๋„ ์–ด๋–ค ์ด์œ ๋กœ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

mavlink_receiver_test.h :

#ifndef PROJECT_MAVLINK_RECEIVER_TEST_H
#define PROJECT_MAVLINK_RECEIVER_TEST_H

#include <ros/ros.h>
#include <mavconn/interface.h>
#include <mavlink/v2.0/common/mavlink_msg_set_attitude_target.h>

using mavlink::mavlink_message_t;

class MavlinkReceiverTest {
public:
    MavlinkReceiverTest(const std::string& fcu_url);

protected:
    void handle_message(const mavlink_message_t* message, const mavconn::Framing framing);

    void handle_msg_set_attitude_target(const mavlink_message_t* message);

    mavconn::MAVConnInterface::Ptr link_;
};


#endif //PROJECT_MAVLINK_RECEIVER_TEST_H

mavlink_receiver_test.cpp :

#include "aft_controller/mavlink_receiver_test.h"

MavlinkReceiverTest::MavlinkReceiverTest(const std::string& fcu_url) {
    link_ = mavconn::MAVConnInterface::open_url(fcu_url);

    link_->message_received_cb = std::bind(&MavlinkReceiverTest::handle_message, this, std::placeholders::_1,
                                           std::placeholders::_2);
}

void MavlinkReceiverTest::handle_message(const mavlink_message_t* message, const mavconn::Framing framing) {
    switch (message->msgid) {
        case MAVLINK_MSG_ID_SET_ATTITUDE_TARGET:
            ROS_INFO_STREAM("it's working");
            handle_msg_set_attitude_target(message);
            break;
        default:
            break;
    }
}

void MavlinkReceiverTest::handle_msg_set_attitude_target(const mavlink_message_t* message) {
    (void) message;
}

int main(int argc, char** argv) {
    ros::init(argc, argv, "mavlink_receiver_test");
    ros::NodeHandle nh;

    MavlinkReceiverTest mavlink("udp://localhost:14557<strong i="19">@localhost</strong>:14565");
    ros::spin();

    return 0;
}

๋‹ค์Œ์€ catkin_make ๋ช…๋ น์˜ ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค.

[  2%] Built target aft_math_tools
[  3%] Built target aft_draw_tools
[  4%] Built target aft_mavros_tools
[  5%] Built target aft_plane
[  5%] Built target std_msgs_generate_messages_eus
[  5%] Built target geometry_msgs_generate_messages_eus
[  6%] Built target aft_bond_tools
[  6%] Built target actionlib_msgs_generate_messages_eus
[  6%] Built target _aft_image_processing_generate_messages_check_deps_PatternRecognitionFeedback
[  6%] Built target _aft_image_processing_generate_messages_check_deps_PatternRecognitionResult
[  6%] Built target _aft_image_processing_generate_messages_check_deps_PatternRecognitionActionResult
[  6%] Built target _aft_image_processing_generate_messages_check_deps_PatternRecognitionGoal
[  6%] Built target _aft_image_processing_generate_messages_check_deps_PatternRecognitionAction
[  6%] Built target _aft_image_processing_generate_messages_check_deps_PatternRecognition
[  6%] Built target std_msgs_generate_messages_lisp
[  6%] Built target _aft_image_processing_generate_messages_check_deps_PatternRecognitionActionFeedback
[  6%] Built target _aft_image_processing_generate_messages_check_deps_PatternRecognitionActionGoal
[  6%] Built target geometry_msgs_generate_messages_lisp
[  6%] Built target actionlib_msgs_generate_messages_lisp
[  6%] Built target geometry_msgs_generate_messages_cpp
[  6%] Built target actionlib_msgs_generate_messages_cpp
[  6%] Built target std_msgs_generate_messages_cpp
[  6%] Built target geometry_msgs_generate_messages_nodejs
[  6%] Built target std_msgs_generate_messages_nodejs
[  6%] Built target actionlib_msgs_generate_messages_nodejs
[  6%] Built target actionlib_msgs_generate_messages_py
[  6%] Built target geometry_msgs_generate_messages_py
[  6%] Built target std_msgs_generate_messages_py
[  7%] Built target pattern_draw
[  8%] Built target pattern_recognition_test
[ 12%] Built target color_object_tracking
[ 12%] Built target pattern_recognition_real_time
[ 13%] Built target bounding_box
[ 15%] Built target camera_calibration
[ 17%] Built target harris_corner_detection
[ 18%] Built target camera_test
[ 19%] Built target contour
[ 21%] Built target face_recognition
[ 22%] Built target optical_flow
[ 24%] Built target sequential_motion_tracking
[ 25%] Built target image_read
[ 26%] Built target shape_detection
[ 27%] Built target geofencing
[ 28%] Built target system_watchdog_test
[ 29%] Built target mavlink_attitude_publisher
[ 31%] Built target offb_example
[ 33%] Built target attitude_controller_example
[ 34%] Building CXX object aft_copter/aft_controller/CMakeFiles/mavlink_receiver_test.dir/src/mavlink_receiver_test.cpp.o
[ 44%] Built target rc_reader_test
[ 45%] Built target dji_control_test
[ 56%] Built target attitude_controller_test
[ 57%] Built target nofly_vertex_plugin
[ 58%] Built target model_push_plugin
[ 59%] Built target hello_world
[ 65%] Built target aft_image_processing_generate_messages_eus
[ 67%] Built target transform_broadcaster_plugin
[ 72%] Built target aft_image_processing_generate_messages_lisp
[ 77%] Built target aft_image_processing_generate_messages_cpp
[ 80%] Built target grid_size_plugin
[ 86%] Built target aft_image_processing_generate_messages_nodejs
[ 86%] Built target aft_image_processing_gencpp
[ 92%] Built target aft_image_processing_generate_messages_py
[ 96%] Built target pattern_recognition_client
[ 96%] Built target pattern_recognition_action_server
[ 98%] Built target pattern_recognition_server
[ 98%] Built target aft_image_processing_generate_messages
In file included from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:43:0,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:79:102: error: โ€˜mavlink_message_tโ€™ has not been declared
 static inline uint16_t mavlink_msg_set_attitude_target_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg,
                                                                                                      ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜uint16_t mavlink_msg_set_attitude_target_pack(uint8_t, uint8_t, int*, uint32_t, uint8_t, uint8_t, uint8_t, const float*, float, float, float, float)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:84:43: error: โ€˜_mav_put_uint32_tโ€™ was not declared in this scope
     _mav_put_uint32_t(buf, 0, time_boot_ms);
                                           ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:85:43: error: โ€˜_mav_put_floatโ€™ was not declared in this scope
     _mav_put_float(buf, 20, body_roll_rate);
                                           ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:89:44: error: โ€˜_mav_put_uint8_tโ€™ was not declared in this scope
     _mav_put_uint8_t(buf, 36, target_system);
                                            ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:92:38: error: โ€˜_mav_put_float_arrayโ€™ was not declared in this scope
     _mav_put_float_array(buf, 4, q, 4);
                                      ^
In file included from /home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/../message.hpp:15:0,
                 from /home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/common.hpp:16,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:23,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/../mavlink_types.h:158:56: error: request for member โ€˜payload64โ€™ in โ€˜* msgโ€™, which is of non-class type โ€˜intโ€™
 #define _MAV_PAYLOAD_NON_CONST(msg) ((char *)(&((msg)->payload64[0])))
                                                        ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:93:16: note: in expansion of macro โ€˜_MAV_PAYLOAD_NON_CONSTโ€™
         memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ATTITUDE_TARGET_LEN);
                ^
In file included from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:43:0,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:108:10: error: request for member โ€˜msgidโ€™ in โ€˜* msgโ€™, which is of non-class type โ€˜intโ€™
     msg->msgid = MAVLINK_MSG_ID_SET_ATTITUDE_TARGET;
          ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:109:189: error: โ€˜mavlink_finalize_messageโ€™ was not declared in this scope
     return mavlink_finalize_message(msg, system_id, component_id, MAVLINK_MSG_ID_SET_ATTITUDE_TARGET_MIN_LEN, MAVLINK_MSG_ID_SET_ATTITUDE_TARGET_LEN, MAVLINK_MSG_ID_SET_ATTITUDE_TARGET_CRC);
                                                                                                                                                                                             ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:109:189: note: suggested alternative:
In file included from /home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/../message.hpp:32:0,
                 from /home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/common.hpp:16,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:23,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/../mavlink_helpers.h:273:25: note:   โ€˜mavlink::mavlink_finalize_messageโ€™
 MAVLINK_HELPER uint16_t mavlink_finalize_message(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id, 
                         ^
In file included from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:43:0,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:130:32: error: โ€˜mavlink_message_tโ€™ has not been declared
                                mavlink_message_t* msg,
                                ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜uint16_t mavlink_msg_set_attitude_target_pack_chan(uint8_t, uint8_t, uint8_t, int*, uint32_t, uint8_t, uint8_t, uint8_t, const float*, float, float, float, float)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:135:43: error: โ€˜_mav_put_uint32_tโ€™ was not declared in this scope
     _mav_put_uint32_t(buf, 0, time_boot_ms);
                                           ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:136:43: error: โ€˜_mav_put_floatโ€™ was not declared in this scope
     _mav_put_float(buf, 20, body_roll_rate);
                                           ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:140:44: error: โ€˜_mav_put_uint8_tโ€™ was not declared in this scope
     _mav_put_uint8_t(buf, 36, target_system);
                                            ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:143:38: error: โ€˜_mav_put_float_arrayโ€™ was not declared in this scope
     _mav_put_float_array(buf, 4, q, 4);
                                      ^
In file included from /home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/../message.hpp:15:0,
                 from /home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/common.hpp:16,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:23,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/../mavlink_types.h:158:56: error: request for member โ€˜payload64โ€™ in โ€˜* msgโ€™, which is of non-class type โ€˜intโ€™
 #define _MAV_PAYLOAD_NON_CONST(msg) ((char *)(&((msg)->payload64[0])))
                                                        ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:144:16: note: in expansion of macro โ€˜_MAV_PAYLOAD_NON_CONSTโ€™
         memcpy(_MAV_PAYLOAD_NON_CONST(msg), buf, MAVLINK_MSG_ID_SET_ATTITUDE_TARGET_LEN);
                ^
In file included from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:43:0,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:159:10: error: request for member โ€˜msgidโ€™ in โ€˜* msgโ€™, which is of non-class type โ€˜intโ€™
     msg->msgid = MAVLINK_MSG_ID_SET_ATTITUDE_TARGET;
          ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:160:200: error: โ€˜mavlink_finalize_message_chanโ€™ was not declared in this scope
     return mavlink_finalize_message_chan(msg, system_id, component_id, chan, MAVLINK_MSG_ID_SET_ATTITUDE_TARGET_MIN_LEN, MAVLINK_MSG_ID_SET_ATTITUDE_TARGET_LEN, MAVLINK_MSG_ID_SET_ATTITUDE_TARGET_CRC);
                                                                                                                                                                                                        ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:160:200: note: suggested alternative:
In file included from /home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/../message.hpp:32:0,
                 from /home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/common.hpp:16,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:23,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/../mavlink_helpers.h:263:25: note:   โ€˜mavlink::mavlink_finalize_message_chanโ€™
 MAVLINK_HELPER uint16_t mavlink_finalize_message_chan(mavlink_message_t* msg, uint8_t system_id, uint8_t component_id,
                         ^
In file included from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/mavlink_dialect.h:43:0,
                 from /home/l4ncelot/mavros/src/mavros/libmavconn/include/mavconn/interface.h:37,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/include/aft_controller/mavlink_receiver_test.h:9,
                 from /home/l4ncelot/aft_copter/src/aft_copter/aft_controller/src/mavlink_receiver_test.cpp:5:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:171:104: error: โ€˜mavlink_message_tโ€™ has not been declared
 static inline uint16_t mavlink_msg_set_attitude_target_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_set_attitude_target_t* set_attitude_target)
                                                                                                        ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:185:123: error: โ€˜mavlink_message_tโ€™ has not been declared
 static inline uint16_t mavlink_msg_set_attitude_target_encode_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const mavlink_set_attitude_target_t* set_attitude_target)
                                                                                                                           ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:297:79: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline uint32_t mavlink_msg_set_attitude_target_get_time_boot_ms(const mavlink_message_t* msg)
                                                                               ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜uint32_t mavlink_msg_set_attitude_target_get_time_boot_ms(const int*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:299:40: error: โ€˜_MAV_RETURN_uint32_tโ€™ was not declared in this scope
     return _MAV_RETURN_uint32_t(msg,  0);
                                        ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:307:79: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline uint8_t mavlink_msg_set_attitude_target_get_target_system(const mavlink_message_t* msg)
                                                                               ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜uint8_t mavlink_msg_set_attitude_target_get_target_system(const int*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:309:40: error: โ€˜_MAV_RETURN_uint8_tโ€™ was not declared in this scope
     return _MAV_RETURN_uint8_t(msg,  36);
                                        ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:317:82: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline uint8_t mavlink_msg_set_attitude_target_get_target_component(const mavlink_message_t* msg)
                                                                                  ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜uint8_t mavlink_msg_set_attitude_target_get_target_component(const int*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:319:40: error: โ€˜_MAV_RETURN_uint8_tโ€™ was not declared in this scope
     return _MAV_RETURN_uint8_t(msg,  37);
                                        ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:327:75: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline uint8_t mavlink_msg_set_attitude_target_get_type_mask(const mavlink_message_t* msg)
                                                                           ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜uint8_t mavlink_msg_set_attitude_target_get_type_mask(const int*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:329:40: error: โ€˜_MAV_RETURN_uint8_tโ€™ was not declared in this scope
     return _MAV_RETURN_uint8_t(msg,  38);
                                        ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:337:68: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline uint16_t mavlink_msg_set_attitude_target_get_q(const mavlink_message_t* msg, float *q)
                                                                    ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜uint16_t mavlink_msg_set_attitude_target_get_q(const int*, float*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:339:49: error: โ€˜_MAV_RETURN_float_arrayโ€™ was not declared in this scope
     return _MAV_RETURN_float_array(msg, q, 4,  4);
                                                 ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:347:78: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline float mavlink_msg_set_attitude_target_get_body_roll_rate(const mavlink_message_t* msg)
                                                                              ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜float mavlink_msg_set_attitude_target_get_body_roll_rate(const int*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:349:38: error: โ€˜_MAV_RETURN_floatโ€™ was not declared in this scope
     return _MAV_RETURN_float(msg,  20);
                                      ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:357:79: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline float mavlink_msg_set_attitude_target_get_body_pitch_rate(const mavlink_message_t* msg)
                                                                               ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜float mavlink_msg_set_attitude_target_get_body_pitch_rate(const int*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:359:38: error: โ€˜_MAV_RETURN_floatโ€™ was not declared in this scope
     return _MAV_RETURN_float(msg,  24);
                                      ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:367:77: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline float mavlink_msg_set_attitude_target_get_body_yaw_rate(const mavlink_message_t* msg)
                                                                             ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜float mavlink_msg_set_attitude_target_get_body_yaw_rate(const int*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:369:38: error: โ€˜_MAV_RETURN_floatโ€™ was not declared in this scope
     return _MAV_RETURN_float(msg,  28);
                                      ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:377:70: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline float mavlink_msg_set_attitude_target_get_thrust(const mavlink_message_t* msg)
                                                                      ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: In function โ€˜float mavlink_msg_set_attitude_target_get_thrust(const int*)โ€™:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:379:38: error: โ€˜_MAV_RETURN_floatโ€™ was not declared in this scope
     return _MAV_RETURN_float(msg,  32);
                                      ^
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h: At global scope:
/home/l4ncelot/mavros/devel/include/mavlink/v2.0/common/mavlink_msg_set_attitude_target.h:388:65: error: โ€˜mavlink_message_tโ€™ does not name a type
 static inline void mavlink_msg_set_attitude_target_decode(const mavlink_message_t* msg, mavlink_set_attitude_target_t* set_attitude_target)
                                                                 ^
aft_copter/aft_controller/CMakeFiles/mavlink_receiver_test.dir/build.make:62: recipe for target 'aft_copter/aft_controller/CMakeFiles/mavlink_receiver_test.dir/src/mavlink_receiver_test.cpp.o' failed
make[2]: *** [aft_copter/aft_controller/CMakeFiles/mavlink_receiver_test.dir/src/mavlink_receiver_test.cpp.o] Error 1
CMakeFiles/Makefile2:4837: recipe for target 'aft_copter/aft_controller/CMakeFiles/mavlink_receiver_test.dir/all' failed
make[1]: *** [aft_copter/aft_controller/CMakeFiles/mavlink_receiver_test.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Base path: /home/l4ncelot/aft_copter
Source space: /home/l4ncelot/aft_copter/src
Build space: /home/l4ncelot/aft_copter/build
Devel space: /home/l4ncelot/aft_copter/devel
Install space: /home/l4ncelot/aft_copter/install
####
#### Running command: "make cmake_check_build_system" in "/home/l4ncelot/aft_copter/build"
####
####
#### Running command: "make -j4 -l4" in "/home/l4ncelot/aft_copter/build"
####
Invoking "make -j4 -l4" failed

์ผ๋ถ€ ์„ ์–ธ์ด ๋ˆ„๋ฝ ๋œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด mavlink.h ๋˜๋Š” mavlink_types.h ํŒŒ์ผ์„ ํฌํ•จํ•˜๋ ค๊ณ ํ•˜๋ฉด ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ๋งŽ์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด ์˜ˆ์ œ์— ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? libmavconn ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ๊ณ  ํ˜„์žฌ ๊ฐ‡ํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

make_handler() ๋ฅผ๋ณด์‹ญ์‹œ์˜ค (๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๊ธฐ ์ „ํ™˜์„ ์ž๋™ํ™”ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ).

๋””์ฝ”๋”ฉํ•˜๋Š” ๋Œ€์‹  ๋‹ค์Œ์„ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

mavlink::MsgMap map(message);
mavlink::common::msg::SET_ATTITUDE_TARGET s;
s.deserialize(map);

std::cout << s.to_yaml() << std::endl;

๋ชจ๋“  5 ๋Œ“๊ธ€

์ด ๋ฌธ์ œ๋Š” "mavlink / v2.0 / common / mavlink_msg_set_attitude_target.h"๋ฅผ ํฌํ•จํ•˜๊ณ  libmavconn 0.19๊ฐ€ mavros๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C ++ 11 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ „ํ™˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
mavconn/interface.h ์ด์™ธ์˜ ํ•ญ๋ชฉ์„ ํฌํ•จํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. MAVLink ํ—ค๋”๊ฐ€ ์ž๋™์œผ๋กœ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋Œ€์‹  MAVLINK_MSG_ID_SET_ATTITUDE_TARGET ๋‹น์‹ ์€ ์‚ฌ์šฉํ•ด์•ผ mavlink::common::msg::SET_ATTITUDE_TARGET::MSG_ID .
์ง๋ ฌํ™”๋Š” libmavconn ( MAVConnInteface::send_message() )์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜์ง€๋งŒ ์—ญ ์ง๋ ฌํ™”๋Š” ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ( PluginBase::make_handler() ์˜ํ•ด ์ˆ˜ํ–‰ ๋œ ๋„์šฐ๋ฏธ ๋žŒ๋‹ค์—์„œ ์ˆ˜ํ–‰๋จ).

์–ด์จŒ๋“  mavros ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์˜ค, ๊ทธ๊ฑด ๋ชฐ๋ž์–ด์š”. ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํƒœ๋„ ๋ฉ”์‹œ์ง€๋ฅผ ์—ญ ์ง๋ ฌํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

void MavlinkReceiverTest::handle_msg_set_attitude_target(const mavlink_message_t* message) {
        mavlink_set_attitude_target_t set_attitude_target;
    mavlink_msg_set_attitude_target_decode(message, &set_attitude_target);    
}

๊ทธ๋Ÿฐ ์ผ์„ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

pixhawk ๊ธฐ๋ฐ˜ DJI ์ฝฅํ„ฐ ๋ชจ๋‘์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋งŒ์˜ mavlink ์ˆ˜์‹ ๊ธฐ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ๊ทธ๋žจ์€ MAVROS ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™ ์กฐ์ข… ์žฅ์น˜์™€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” DJI ํ—ฌ๋ฆฌ์ฝฅํ„ฐ๊ฐ€ MAVLINK ๋ฅผ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ MAVLINK ๋ฉ”์‹œ์ง€ ์ˆ˜์‹ ๊ธฐ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  DJI์˜ ROS ์˜จ๋ณด๋“œ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ—ฌ๋ฆฌ์ฝฅํ„ฐ๋ฅผ ์ œ์–ดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

make_handler() ๋ฅผ๋ณด์‹ญ์‹œ์˜ค (๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๊ธฐ ์ „ํ™˜์„ ์ž๋™ํ™”ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ).

๋””์ฝ”๋”ฉํ•˜๋Š” ๋Œ€์‹  ๋‹ค์Œ์„ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

mavlink::MsgMap map(message);
mavlink::common::msg::SET_ATTITUDE_TARGET s;
s.deserialize(map);

std::cout << s.to_yaml() << std::endl;

๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๋Œ€๋‹จํžˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@vooon ์—ฌ๊ธฐ์—์žˆ๋Š” ๋‹ต๋ณ€์€ ๋งค์šฐ ์œ ์šฉํ•˜๋ฉฐ ๋‚ด๊ฐ€ ๊ฒ€์ƒ‰ ํ•œ ๋‹ค๋ฅธ ๊ณณ์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. PX4 ์Šคํƒ์˜ ros ๋…ธ๋“œ ์˜ˆ์ œ๋Š” ์—ฌ๊ธฐ์„œ ๋…ผ์˜ ๋œ libmavconn ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ตœ์‹ ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰