Skip to content

Commit ba527be

Browse files
committed
calculate heading from current initial movement
1 parent ae6b4fd commit ba527be

File tree

3 files changed

+18
-13
lines changed

3 files changed

+18
-13
lines changed

src/modules/fw_pos_control_l1/FixedwingPositionControl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,7 @@ FixedwingPositionControl::in_takeoff_situation()
740740
// && (_current_altitude <= _takeoff_ground_alt + _param_fw_clmbout_diff.get())
741741
// && (!_autogyro_takeoff.isInitialized() || _autogyro_takeoff.climbout());
742742

743-
return (!_autogyro_takeoff.isInitialized() || _autogyro_takeoff.climbout());
743+
return (!_autogyro_takeoff.isInitialized() || _autogyro_takeoff.climbout());
744744

745745
//return (_current_altitude <= _takeoff_ground_alt + _param_fw_clmbout_diff.get())
746746
// && (!_autogyro_takeoff.isInitialized() || _autogyro_takeoff.climbout());

src/modules/fw_pos_control_l1/autogyro_takeoff/AutogyroTakeoff.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#include "AutogyroTakeoff.h"
4545
#include <systemlib/mavlink_log.h>
4646
#include <mathlib/mathlib.h>
47+
#include <lib/geo/geo.h>
4748

4849
#include <uORB/Publication.hpp>
4950

@@ -72,8 +73,10 @@ void AutogyroTakeoff::init(const hrt_abstime &now, float yaw, double current_lat
7273
_time_in_state = now;
7374
_last_sent_release_status = now;
7475
_climbout = true; // this is true until climbout is finished
75-
_start_wp(0) = current_lat;
76-
_start_wp(1) = current_lon;
76+
_takeoff_wp(0) = current_lat;
77+
_takeoff_wp(1) = current_lon;
78+
_initial_wp(0) = current_lat;
79+
_initial_wp(1) = current_lon;
7780
}
7881

7982
void AutogyroTakeoff::update(const hrt_abstime &now, float airspeed, float rotor_rpm, float alt_agl,
@@ -182,6 +185,8 @@ void AutogyroTakeoff::update(const hrt_abstime &now, float airspeed, float rotor
182185
}
183186

184187
if (ready_for_release) {
188+
_init_yaw = get_bearing_to_next_waypoint(_initial_wp(0), _initial_wp(1), current_lat, current_lon);
189+
185190
_state = AutogyroTakeoffState::TAKEOFF_RELEASE;
186191
_time_in_state = now;
187192
// TODO: pripravit funkci do release
@@ -207,14 +212,11 @@ void AutogyroTakeoff::update(const hrt_abstime &now, float airspeed, float rotor
207212
OUT: Command for release
208213
*/
209214
case AutogyroTakeoffState::TAKEOFF_RELEASE: {
210-
// Wait for ACK from platform
211-
//PX4_INFO("RELEASE, agl: %f", (double) alt_agl);
212-
play_release_tone();
213-
214215
// Waiting to get full throttle
215216
if (hrt_elapsed_time(&_time_in_state) < (_param_rwto_ramp_time.get() * 1_s)) {
216217
// Send release CMD
217218
takeoff_information.result = 1;
219+
play_release_tone();
218220
}
219221

220222
autogyro_takeoff_status.rpm = true;
@@ -225,9 +227,10 @@ void AutogyroTakeoff::update(const hrt_abstime &now, float airspeed, float rotor
225227
play_next_tone();
226228
_time_in_state = now;
227229

230+
// set current position as center of loiter
228231
if (_param_rwto_hdg.get() == 0) {
229-
_start_wp(0) = current_lat;
230-
_start_wp(1) = current_lon;
232+
_takeoff_wp(0) = current_lat;
233+
_takeoff_wp(1) = current_lon;
231234
}
232235
}
233236
}
@@ -416,8 +419,8 @@ float AutogyroTakeoff::getThrottle(const hrt_abstime &now, float tecsThrottle)
416419
case AutogyroTakeoffState::PRE_TAKEOFF_PREROTATE:
417420
case AutogyroTakeoffState::PRE_TAKEOFF_DONE: {
418421
if (_param_ag_prerotator_type.get() == AutogyroTakeoffType::WOPREROT_RUNWAY) {
419-
float throttlea = ((now - _time_in_state) / (_param_rwto_ramp_time.get() * 1_s)) * _param_rwto_max_thr.get();
420-
return math::min(throttlea, _param_rwto_max_thr.get());
422+
float throttle = ((now - _time_in_state) / (_param_rwto_ramp_time.get() * 1_s)) * _param_rwto_max_thr.get();
423+
return math::min(throttle, _param_rwto_max_thr.get());
421424

422425
} else {
423426
return 0;

src/modules/fw_pos_control_l1/autogyro_takeoff/AutogyroTakeoff.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class __EXPORT AutogyroTakeoff : public ModuleParams
119119
float getMinPitch(float climbout_min, float min);
120120
float getMaxPitch(float max);
121121
// bool setState(int new_state);
122-
const matrix::Vector2d &getStartWP() const { return _start_wp; };
122+
const matrix::Vector2d &getStartWP() const { return _takeoff_wp; };
123123

124124
void reset();
125125

@@ -138,7 +138,9 @@ class __EXPORT AutogyroTakeoff : public ModuleParams
138138
hrt_abstime _last_sent_release_status{0};
139139
float _init_yaw{0.f};
140140
bool _climbout{false};
141-
matrix::Vector2d _start_wp;
141+
142+
matrix::Vector2d _initial_wp;
143+
matrix::Vector2d _takeoff_wp;
142144

143145
uORB::Publication<tune_control_s> _tune_control{ORB_ID(tune_control)};
144146
uORB::Publication<autogyro_takeoff_status_s> _autogyro_takeoff_status_pub{ORB_ID(autogyro_takeoff_status)};

0 commit comments

Comments
 (0)