AP_Logger: log IOMCU cpu id and mcu id
[ardupilot.git] / ArduCopter / AP_ExternalControl_Copter.cpp
blobeb16147737fd66f4a5f576ad3d643e644abba9d8
1 /*
2 external control library for copter
3 */
6 #include "AP_ExternalControl_Copter.h"
7 #if AP_EXTERNAL_CONTROL_ENABLED
9 #include "Copter.h"
12 set linear velocity and yaw rate. Pass NaN for yaw_rate_rads to not control yaw
13 velocity is in earth frame, NED, m/s
15 bool AP_ExternalControl_Copter::set_linear_velocity_and_yaw_rate(const Vector3f &linear_velocity, float yaw_rate_rads)
17 if (!ready_for_external_control()) {
18 return false;
20 const float yaw_rate_cds = isnan(yaw_rate_rads)? 0: degrees(yaw_rate_rads)*100;
22 // Copter velocity is positive if aircraft is moving up which is opposite the incoming NED frame.
23 Vector3f velocity_NEU_ms {
24 linear_velocity.x,
25 linear_velocity.y,
26 -linear_velocity.z };
27 Vector3f velocity_up_cms = velocity_NEU_ms * 100;
28 copter.mode_guided.set_velocity(velocity_up_cms, false, 0, !isnan(yaw_rate_rads), yaw_rate_cds);
29 return true;
32 bool AP_ExternalControl_Copter::set_global_position(const Location& loc)
34 // Check if copter is ready for external control and returns false if it is not.
35 if (!ready_for_external_control()) {
36 return false;
38 return copter.set_target_location(loc);
41 bool AP_ExternalControl_Copter::ready_for_external_control()
43 return copter.flightmode->in_guided_mode() && copter.motors->armed();
46 #endif // AP_EXTERNAL_CONTROL_ENABLED