mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-29 01:50:34 +08:00
CollisionAvoidance: move activation logic to library
This commit is contained in:
@@ -88,6 +88,18 @@ void CollisionAvoidance::publish_constraints(const Vector2f &original_setpoint,
|
||||
|
||||
}
|
||||
|
||||
void CollisionAvoidance::update(const obstacle_distance_s &distance_measurements) {
|
||||
// activate/deactivate the collision avoidance based on MPC_COL_AVOID parameter
|
||||
if (collision_avoidance_enabled()) {
|
||||
activate();
|
||||
|
||||
} else {
|
||||
deactivate();
|
||||
}
|
||||
|
||||
_obstacle_distance = distance_measurements;
|
||||
}
|
||||
|
||||
void CollisionAvoidance::update_range_constraints()
|
||||
{
|
||||
if (hrt_elapsed_time((hrt_abstime *)&_obstacle_distance.timestamp) < RANGE_STREAM_TIMEOUT_US) {
|
||||
|
||||
@@ -72,7 +72,7 @@ public:
|
||||
|
||||
bool collision_avoidance_enabled() { return MPC_COL_AVOID.get(); }
|
||||
|
||||
void update(const obstacle_distance_s &distance_measurements) {_obstacle_distance = distance_measurements;}
|
||||
void update(const obstacle_distance_s &distance_measurements);
|
||||
|
||||
void update_range_constraints();
|
||||
|
||||
|
||||
@@ -663,17 +663,7 @@ MulticopterPositionControl::run()
|
||||
_wv_controller->update(matrix::Quatf(_att_sp.q_d), _states.yaw);
|
||||
}
|
||||
|
||||
// activate/deactivate the collision avoidance based on MPC_COL_AVOID parameter
|
||||
if (_ca_controller != nullptr) {
|
||||
|
||||
// in manual mode we just want to use weathervane if position is controlled as well
|
||||
if (_ca_controller->collision_avoidance_enabled()) {
|
||||
_ca_controller->activate();
|
||||
|
||||
} else {
|
||||
_ca_controller->deactivate();
|
||||
}
|
||||
|
||||
_ca_controller->update(_obstacle_distance);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user