Mavros: 0.19.0
ROS: Kinetisch
Ubuntu: 16.04
Hallo,
Ich versuche derzeit, einen Mavlink-Nachrichtenempfänger mit der libmavconn- Bibliothek zu schreiben, aber leider kann ich meinen Code aus irgendeinem Grund nicht kompilieren. Hier ist mein Code:
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;
}
Und hier ist die Ausgabe des Befehls 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
Es scheint, als würden einige Deklarationen fehlen, aber wenn ich versuche, beispielsweise mavlink.h
oder mavlink_types.h
Dateien einzubinden, bekomme ich während des Kompilierungsprozesses eine Menge Fehler. Verpasse ich etwas? Soll ich einige Bibliotheken gegen mein Beispiel verlinken? Ich konnte nicht finden, wie man die libmavconn-Bibliothek genau verwendet, und stecke derzeit fest ...
Dieses Problem liegt daran, dass Sie "mavlink/v2.0/common/mavlink_msg_set_attitude_target.h" eingefügt haben, während libmavconn 0.19 mit mavros auf die C++11-Bibliothek umgestellt hat.
Sie sollten nichts anderes als mavconn/interface.h
einschließen - es enthält automatisch MAVLink-Header.
Anstelle von MAVLINK_MSG_ID_SET_ATTITUDE_TARGET
sollten Sie mavlink::common::msg::SET_ATTITUDE_TARGET::MSG_ID
.
Beachten Sie, dass die Serialisierung von libmavconn ( MAVConnInteface::send_message()
) durchgeführt wird, die Deserialisierung jedoch nicht (durchgeführt im Hilfs-Lambda von PluginBase::make_handler()
).
Warum müssen Sie es überhaupt außerhalb von Mavros verwenden?
Ach, das wusste ich nicht. Wie könnte ich die Einstellungsnachricht deserialisieren?
Normalerweise würde ich so etwas tun:
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);
}
Gibt es ein Beispiel dafür, so etwas zu tun?
Ich muss meinen eigenen Mavlink-Empfänger schreiben, weil ich Code sowohl für Pixhawk- basierte Copter als auch für DJI- Copter entwickle . Mein Programm verwendet MAVROS , um mit Autopiloten zu kommunizieren. Das Problem ist , dass DJI Copter verwendet nicht MAVLINK als Kommunikationsprotokoll. Ich muss also den MAVLINK- Nachrichtenempfänger schreiben und die ROS-Onboard-API von DJI zur Steuerung des Copters verwenden.
Schauen Sie sich make_handler()
, vielleicht brauchen Sie etwas davon (wenn Sie die Umschaltung der Message-Handler automatisieren möchten).
Anstatt zu decodieren sollten Sie schreiben:
mavlink::MsgMap map(message);
mavlink::common::msg::SET_ATTITUDE_TARGET s;
s.deserialize(map);
std::cout << s.to_yaml() << std::endl;
Vielen Dank für Ihre Hilfe. Alles funktioniert jetzt gut.
@vooon Die Antworten hier sind sehr nützlich und nirgendwo anders vorhanden, nach dem ich gesucht habe. Die ros-Knotenbeispiele im PX4-Stack sind mit den hier besprochenen libmavconn-Änderungen nicht auf dem neuesten Stand. So danke.
Hilfreichster Kommentar
Schauen Sie sich
make_handler()
, vielleicht brauchen Sie etwas davon (wenn Sie die Umschaltung der Message-Handler automatisieren möchten).Anstatt zu decodieren sollten Sie schreiben: