mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-07-24 15:27:41 +08:00
* feat(navigator): extend detect and avoid module to follow regulatory standards such as ASTM F3442 * docs(docs): minor subedit * refactor(navigator): reduce flash by grouping notif into same events * docs(daa): Improve docs readability with ::: details blocks * fix(navigator): single event when on ground with conflict * refactor(boards): increase flash length from 4M - 128k to 5M - 128k * rework(general): define DAA standard at build with new CONFIG_NAVIGATOR_ADSB_F3442 * clean(navigator): minor changes to clean the PR * feat(boards): add CONFIG_NAVIGATOR_ADSB_FAKE_TRAFFIC in visionTargetEstStatic.px4board * rework(daa): reduce amount of abstractions and minor cleaning * refactor(boards): allyes revert flash length to 4M-128K * refactor(boards): allyes increase flash length to 5M-128K * rework(daa): rework event notifications to improve clarity * docs(docs): move details inside of ::: details block * docs(docs): run npx prettier * refactor(daa): avoid void mutator functions * docs(docs): Improve Python helper to decode daa unique id * rework(daa): move encoded id handling to the adsb lib and refactor on_active * refactor(daa): naming and zero init * fix(daa): move dataman dep from daa level to unit test level * refactor(daa): define common daa_input and rework process_transponder_report * fix(daa): remove stale todo * refactor(daa): rename crosstrack_based_daa to crosstrack_standard * refactor(daa): rename F34_ params to DAA_ * docs(docs): revert changes to autogenerated docs * docs(docs): Add Detect And Avoid in index.md * refactor(daa): update message on init failed * refactor(daa): only publish most_urgent conflict once in on_active() * refactor(daa): move conflict buffer handling in the adsb lib * refactor(daa): move notifications into new class ConflictNotifier and only notify once per cycle * refactor(daa): uninit _cycle_changes to store into .bss (and save flash) * docs(docs): remove unused image link * refactor(daa): move automated action policy to the adsb lib * refactor(daa): move self detection into adsb lib as DaaTrafficFilter * refactor(daa): minor changes in unit tests * refactor(daa): merge DaaTrafficFilter and DaaEncoding * fix(daa): fix CI by removing navigator from the DAA deps * refactor(daa): reduce stack size * fix(daa): advertise _fake_traffic_pub in constructor * refactor(daa): Comments only, simplify and reduce comments * fix(daa): brief comment missing end star * Disable CONFIG_NAVIGATOR_ADSB in ark_fpv_default board * docs(docs): General clarifications and remove the 1.18 badge * refactor(daa): cleaning * refactor(daa): minor cleaning * refactor(adsb): simplify conflict tracker assuming push_back cannot fail * build(cmake): cleaner fix to protect regex alternations * refactor(daa): Crosstrack, remove unit test requiring finite yaw (yaw not used by standard) * refactor(daa): minor cleaning and fix callsign to uint64 --------- Co-authored-by: jonas <jonas.perolini@rigi.tech> Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
81 lines
3.0 KiB
C++
81 lines
3.0 KiB
C++
/***************************************************************************
|
|
*
|
|
* Copyright (c) 2026 PX4 Development Team. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
* 3. Neither the name PX4 nor the names of its contributors may be
|
|
* used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
****************************************************************************/
|
|
/**
|
|
* @file DaaCrosstrack.h
|
|
*
|
|
* Helper class to do detect and avoid based on crosstrack distance.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "../DaaHelper.h"
|
|
|
|
#include <cstdint>
|
|
|
|
#include <px4_platform_common/module_params.h>
|
|
|
|
static constexpr float kTrafficToUavDistanceExtension{1000.0f};
|
|
|
|
/**
|
|
* @brief Crosstrack-distance DAA standard.
|
|
*
|
|
* Projects the traffic forward along its heading and declares a single
|
|
* high-priority conflict when the ownship is within the configured crosstrack,
|
|
* vertical separation, and time-to-collision thresholds. Useful for
|
|
* transponders that have a reliable heading but no standardised conflict zones.
|
|
*/
|
|
class DaaCrosstrack : public ModuleParams
|
|
{
|
|
public:
|
|
DaaCrosstrack();
|
|
|
|
// Crosstrack-based conflict level for one traffic target.
|
|
uint8_t calculate_daa_stats(const aircraft_state_s &uav_state, const aircraft_state_s &traffic_state,
|
|
daa_stats_s &daa_stats) const;
|
|
|
|
// Refresh the crosstrack thresholds from parameters. False on invalid values.
|
|
bool try_setting_params();
|
|
|
|
private:
|
|
float _crosstrack_separation_m{500.f};
|
|
float _vertical_separation_m{500.f};
|
|
int _collision_time_threshold_s{60};
|
|
|
|
DEFINE_PARAMETERS(
|
|
(ParamFloat<px4::params::NAV_TRAFF_A_VER>) _param_nav_traff_a_ver,
|
|
(ParamFloat<px4::params::NAV_TRAFF_A_HOR>) _param_nav_traff_a_hor,
|
|
(ParamInt<px4::params::NAV_TRAFF_COLL_T>) _param_nav_traff_coll_t
|
|
)
|
|
};
|