- Define LOG_FILEPATH_SCANF_WIDTH macro for the sscanf width specifier
- Replace hardcoded '255' with the named macro in both sscanf calls
- Improves maintainability and makes the relationship between buffer size and width explicit
- Addresses final code review feedback about magic numbers
Co-authored-by: dakejahl <37091262+dakejahl@users.noreply.github.com>
- Remove duplicate LOG_FILEPATH_SIZE macro from cpp file
- Use MavlinkLogHandler::LOG_FILEPATH_SIZE consistently throughout
- Update local filepath buffer to use the same size as LogEntry.filepath
- Addresses code review feedback about duplication and consistency
Co-authored-by: dakejahl <37091262+dakejahl@users.noreply.github.com>
- Add LOG_FILEPATH_SIZE constant (256) in both header and cpp
- Update LogEntry.filepath to use the constant
- Improve comments explaining width specifier relationship
- Addresses code review feedback about magic numbers
Co-authored-by: dakejahl <37091262+dakejahl@users.noreply.github.com>
- Add static_assert to ensure PX4_MAX_FILEPATH >= 256 at compile time
- Use %255s consistently for both sscanf calls to prevent overflow
- Add explanatory comments for the width specifier choice
- Addresses code review feedback about potential overflow on NuttX
Co-authored-by: dakejahl <37091262+dakejahl@users.noreply.github.com>
- Increase LogEntry.filepath buffer from 60 to 256 bytes
- Add width specifiers to sscanf calls (%255s and %1023s) to prevent buffer overflow
- Prevents remote DoS vulnerability when parsing logdata.txt with excessively long filenames
Co-authored-by: dakejahl <37091262+dakejahl@users.noreply.github.com>
* added vehicle command and support to remotely activate/deactivate the safety system (#26078)
* added print_status support for prearm safety status
* updated safety button to map to MAV_CMD_DO_SET_SAFETY_SWITCH_STATE = '5300'
* safety switch cmd: fixed incorrect catch-all and added commanded_state variable for easier reading
A false positive could be triggered if velocity fusion started,
then stopped after takeoff and only position fusion started again
(because velocity fusion timed out and had a timestamp > time_last_on_ground).
We now also check if the fusion timeout is due to the innovation being
rejected (and not just a temporary check failure or data interruption).
* test: increase altitude tolerance to fix flaky test
Altitude tolerance increased from 0.1f to 0.15f to handle simulation
timing variations. Test was failing at 0.201m with 0.2m tolerance.
* test: increase altitude tolerance further to 0.3m
* ci: re-add branch trigger for SITL tests
* Revert "ci: re-add branch trigger for SITL tests"
This reverts commit e5e4c9637b.
* mavlink: fix potential use-after-free
If a mavlink instance is force stopped, the main thread might be out of
scope and the receiver thread would be doing a use-after-free.
Instead the receiver thread needs to check its own _should_exit flag.
* mavlink: protect shared data by mutex in dtor
I'm not sure if this potentially fixes any of the segfaults we have seen
on stopping mavlink instances but it potentially could matter if the
mavlink_receiver thread is killed after a timeout and tries to send any
messages as a zombie.
* Adds configurable I2C address for PCA9685 PWM driver
Introduces a parameter to set the I2C address for the PCA9685 PWM output driver, enhancing flexibility for hardware variations. Updates documentation and board initialization scripts to support the new configuration and streamline device startup.
* Update src/drivers/pca9685_pwm_out/module.yaml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/drivers/pca9685_pwm_out/module.yaml
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
In cold weather, fuel engines need to be warmed up. Currently, this is done by switching to stabilized mode and throttle up. The issue is that when not using GNSS data, the vehicle is not detected as "at rest" due to vibrations and cannot switch into auto/takeoff modes.
If EKF2_ENGINE_WRM is enabled, and if the vehicle is armed and landed, constant position fusion is enabled.
When operating fully autonomously (i.e., without manual control or a guaranteed link to the ground station), tuning a vehicle can be difficult since the current autotune process requires either RC input or a GCS command. For these scenarios, it it useful to be able to start autotune inside a mission.
Counts active mavlink instances atomically when instances
are claimed or released and uses that value to early-exit
the forwarding logic.
It means on single-instance scenarios this will skip taking
the mavlink_module_mutex lock and will not iterate over
mavlink_module_instances on every received message.
Signed-off-by: Onur Özkan <work@onurozkan.dev>
Add PWM_*_CENTERx for each servo.
Use a bilinear transform to map actuator_servos to PWM signals.
This solution only works for PWM based servos. Other types of servos are not affected.
* PWM: Add servo trim option
* PWM: Improve documentation of PWM trim feature
* PWM: cleaner clamping and docs typo
* update documentation & safety
* add migration formula
* rename param from trim to center
* docs with center instead of trim
* move clamping and reorder values
* improve documentation
* adress failing range check
* improve documentation
* CA: add event for setting CENTER with TRIM
Signed-off-by: Silvan <silvan@auterion.com>
---------
Signed-off-by: Silvan <silvan@auterion.com>
Co-authored-by: Silvan <silvan@auterion.com>
This allows airspeed and sideslip fusion to start during VTOL front
transition, but not in backtransition or MC. This mitigates issues seen
due to going in and out of airspeed fusion in strong headwinds in MC.
Co-authored-by: bresch <brescianimathieu@gmail.com>
The mode executor can run land mode which updates the home position to the landing location. This
can be not the desirable behavior and the home position should stay at the original location.
A flag is added to the configuration overrides to control if the home position is updated or not.
Some modes should only be run within the context of a mode executor and the user should not be able
to select them in the GCS. With this change, the external component registration request can be
used to set if a mode is selectable or not.
I don't think it makes sense to ignore required streams that easily.
If we do use some streams that are only in the MAVLink development.xml
dialect, then we will have to properly and explicitly ifdef them
everywhere that we use them. Otherwise, this basically means that we
will just swallow this warning on most (non mavlink-dev) platforms which
can mask issues.
AM32 bdshot doesn't do clock compensation like BLHeli32 did.
Instead we traing BDSHOT timing on known zero value to lock on
best bdshot baudrate to receive.
Reduces CRC and frame errors on AM32 a lot
Abort publication immediately when not enough memory is available.
Zero _zenoh_publishers and _zenoh_subscribers to ensure we're not
dereferencing a wrong pointer
We should not build and release with the MAVLink development dialect
because messages in development.xml can change at any time and break
things.
Instead we should prototype and test things using specific mavlink-dev
targets.
* mavlink: esc: fix ESC_STATUS and ESC_INFO message emission.
Fixes mavlink messages emission for ESC messages. Actuator --> MotorNumber mapping was not respected, the mavlink messages should be reporting the ESC status in motor number order not actuator order.
* Update src/modules/mavlink/streams/ESC_STATUS.hpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update src/modules/mavlink/streams/ESC_INFO.hpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* remove dependency on mixer_module/output_functions.hpp
* add actuator function definitions to EscReport.msg
* clean up
* add missing header
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* tla2528 basic implementation (restarting driver still fails)
* fixed probe function, restarting driver now works
* -added reset call to init
-added return value checks on all important transfers and retry if failed when possible
-removed comments
-removed unnecessary parameters of module
* Introduced initialization-states that can be executed multiple times on failure
* Added one more state s.t. init() only does probing
* added communication error count _comms_errors
* use get() instead of param_find
* changed scheduling interval
* start in reset state. check second byte in probe. add 2 retries to probe function
* add space in front of comments
* jump to reset state when another state fails
* changed SAMPLE_INTERVAL to 10_ms
* added static assert on number of channels in adc_report
Barometeric pressure was changed to the SI unit Pascal instead of the non-SI unit Hectopascal/Millibar in
0c31f63896
This script stayed unchanged and suffers from assuming `sensor_baro.pressure` is still in the old unit which would be a 100 times smaller number.
MCP9808: Replaced PX4_INFO with PX4_DEBUG
MCP9808: Update date in headers
MCP9808: Define functions before variables
MCP9808: Increase logging interval for sensor_temp
MCP9808: Removed extra space
MCP9808: Remove this->
- Remove enum class Register : uint8_t
- Explicitly initialize buffer
- Explicitly initialize temp_raw
- Rename uorb publisher
- Remove overide from print_status()
- Take timestamp after read, correct measurement_time to uint64 and use hrt_elapsed_time()
- Remove exit_and_cleanup
- Move functions out of main + cleanup whitespace
MCP9808: remove exit_and_cleanup
MCP9808: Take timestamp after read, correct measurement_time to uint64 and use hrt_elapsed_time()
MCP9808: remove overide from print_status()
MCP9808: rename uorb publisher
MCP9808: explicitly initialize temp_raw
MCP9808: explicitly initialize buffer
MCP9808: Remove enum class Register : uint8_t
MCP9808: move functions out of main + cleanup whitespace
During backtransition in gusty conditions the current "pitch-up to decelerate" strategy had deficiencies as the motion is not always purely in body-x direction. Thus we replace it here with a "tilt-up to decelerate" strategy.
Secondly, in GNSS-denied environments where the position error increases, tracking a precise landing point through position feedback is not reasonable, and we now instead discard the position feedback in cases where the position error exceeds 10m.
* add eph limit check for dist-to-target VT BT deceleration
* add alphafilter for acceleration estimate in VT BT, rename constants
* explicitly set yawspeed_setpoint to 0
* replace backtransition pitch-setpoint with tilt-setpoint
* blend vtol-backtransition roll vehicle_attitude_sp based on mc_weight
* remove memcpy for v_att_sp
* rt106x: Use platform SPI hal layer
* rt106x: Add romapi support and reboot to isp/bootloader
* bootloader: imxrt_common: Add rt106x support
* NXP MR-Tropic initial commit
* Add missing file for mr-tropic bootloader
* nxp-mr-tropic:Bootloader Alow Assertion debugging & Keep Ram Vectors
* nxp-mr-tropic: Firmware Boot from bootloader
* nxp-mr-tropic:Add Bootloader bin file
* mr-tropic: Update config and linker
Fixes enet issues with write-back and some code cleanup.
Furthermore increase NOR LittleFS to 256kB to reflect on linker
* Update NuttX
* mr-tropic: fix itcm apping and add mr-tropic to itcm check
---------
Co-authored-by: David Sidrane <David.Sidrane@NscDg.com>
* pusher_assist: keep pitch setpoint VT_PITCH_MIN
resetting the pitch setpoint to zero made little sense, because we lose
the forward thrust component of the hover motors, while the pusher
throttle was calculated to be applied in addition to the hover forward
component
* pusher assist: change default min pitches to 0
To make for a smoother transition for users who don't care much about
pitch when pusher-assisting and were fine with it (mostly) being at zero
This aligns setActiveMissionItems() in rtl_direct_mission_land.cpp and in rtl_mission_fast.cpp with what was already in mission.cpp. It probably was on oversight when the RTL restructure happened. The FW landing requires the previous waypoint to be correctly set, that's why it was only noticeable there.
* Fix position setpoint update logic in Mission RTL
Currently, when proceeding to the landing point the previous setpoint is not updated, which results in an unexpected and off course landing pattern in fixed wing. (see #25436)
* Change to work more like `mission.cpp`
* Fix rtl_direct_misssion_land formatting for style guide
* rtl_mission_fast: fix FW landing by setting previous wp in landing
Signed-off-by: Silvan <silvan@auterion.com>
---------
Signed-off-by: Silvan <silvan@auterion.com>
Co-authored-by: Silvan <silvan@auterion.com>
With IMUs of higher report rate (e.g. ADIS16470), setting backup schedule timeout simply
to half of the ORB queue length may cause the backup firing before required updates are received.
Set backup schedule to queue length - 1 instead. Additionally, double-check that the backup
doesn't get too short after finding the largest integer multiple of gyro_integral_samples.
Signed-off-by: Jukka Laitinen <jukka.laitinen@tii.ae>
* Update to latest mavlink that includes support for WIP warnings
* mavsdk_tests: pass build for now
We need this until the figure eight stuff has moved to common.
---------
Co-authored-by: Julian Oes <julian@oes.ch>
* rtl_mission_fast: make sure to set a position item on activation
* rtl_mission_fast_reverse: make sure to set a position item on activation
---------
Co-authored-by: Konrad Rudin <konrad@auterion.com>
* correct NED velocity according to yaw reset to keep "body-velocity" consistent
* add unit test velocityRotationOnYawReset
* '[AUTO COMMIT] update change indication'
* dont adjust velocity on yaw-reset when NE aiding active
---------
Co-authored-by: haumarco <haumarco@users.noreply.github.com>
The collision detection incorrectly used crosstrack_separation
(horizontal radius) for both horizontal and vertical checks.
This resulted in the vertical separation threshold being ignored,
creating a spherical detection zone instead of the intended
cylindrical "hockey puck" shape.
Fixed by using vertical_separation parameter for altitude
difference check on line 80.
The bug was likely introduced as a copy-paste error when creating
the vertical check from the horizontal check template. The existing
unit test uses identical values for both parameters (500.0f),
which masked this bug.
Testing: Code review. The existing unit tests pass, but they don't
catch this bug due to using equal values. Future test improvement
would be to use different crosstrack_separation and vertical_separation
values.
Signed-off-by: Tobias Fenner <tobyrfenner@gmail.com>
- enable building in a cmake subdirectory:
- use consistent path to "etc" in build directory
- add a quick fix for mavlink inclusion with
`mavlink/<version>/mavlink.h`, presumably the problem does not
appear normally since somewhere the build root directory is added
to include paths.
- install gazebo config and plugins, the goal is to enable packaging of
PX4 sitl binaries.
- fix dependency on dds_topics.h generation in uxrce_dds_client:
*** No rule to make target 'PX4-Autopilot/src/modules/uxrce_dds_client/dds_topics.h', needed by 'PX4-Autopilot/events/px4.json'. Stop.
https://github.com/PX4/PX4-Autopilot/issues/21788
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
- the estimator_aid_src::sample_timestamp would use its own timestamp to update, this
would cause the estimator_aid_src for ev velocity not to log, since the
timestamp_sample would always equal to zero and thus never be greater
than the previous published time
Co-authored-by: henrykotze <henry@autonosky.com>
* Changed the healthFailure call in the PowerChecks to ensure that no value above the low_error_threshold or below the high_error_threshold is reported in AMC
* fix format
* made _latest_low_failure and _latest_low_failure member variables. Only update them when hystersis state changes from false to true.
* failure_injection: improve previously vague motor faulure
Reading it again I decided adding the sentance in 4d2170c13e is not clear enough.
* docs/safety: add a motor failure detection paragraph
The functionality is in my eyes pretty basic but so far completely undocumented so I went through the code and added a paragraph based on questions I received.
* Subedit
* Apply suggestion from @hamishwillee
---------
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
* rc_update: remove 1% deadzone for all channels
this should be handled higher level.
* Remove all references to the RC{n}_DZ parameters
Regular expression: RC.{0,2}_DZ
---------
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
* ROMFS: do not exit airframe loading if SYS_AUTOSTART is 0
Do not treat 0 as a magic value that skips the aiframe loading.
Instead leave it tot he rc.autostart to load an airframe that if finds
appropriate (can be defined in external aiframe).
Signed-off-by: Silvan <silvan@auterion.com>
* ROMFS: adjust airframe load spacing and message/comment wording
---------
Signed-off-by: Silvan <silvan@auterion.com>
Co-authored-by: Silvan <silvan@auterion.com>
During a mission the last waypoint is often a LAND. If the previous waypoint is not directly above the land waypoint the offtrack calculation is incorrect. This regression was introduced when the offtrack calculation switched from 2D to 3D.
* Fix formatting and capitalization in dev_env_mac.md
Updated formatting and capitalization for consistency in the macOS development environment documentation.
* Correct 'Mac OS' to 'macOS' in documentation
* Fix capitalization of 'macOS' in documentation
Move ramvectors from DTCM to ITCM, this seems to better in general.
Also ITCM is marked as RO so is safer anyhow, now that DTCM is fully
unused we add DTCM region of 256kB to memory allocator. Increases usable
memory from 1536kB to 1792kB and decrease system load a bit since DTCM
is faster
* s32k3xx: EMIOS allow independent frequencies for each channel
* mr-canhubk3: update config
* mr-canhubk344: Fix adap board detect
* mr-canhubk344: Use LPSPI1 (Port P1A) for SD card
* airframes: Add B3RB Ackermann rover config
See https://nxp.gitbook.io/mr-b3rb for more information about the NXP
B3RB platform. PX4 Support basic control for now
* Tone down the performance of some runners from 8cpu+ down to 4cpu+
* Improve and document caching on PX4 builds with an improved ccache key strategy
* Review and document artifact upload logic for binaries uploaded to S3 and github
releases
* Future Improvement, introduce runners configuration file so we can
control more precesily which instances are allocated.
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
The UARTs themselves were already present, just not configured under any
alias.
Follow [ArduPilot UART naming for this
board](https://ardupilot.org/plane/docs/common-pixracer-pro.html#default-uart-order),
out of necessity: it's the only combination that makes sense and is
understood by QGroundControl.
(For example, I've attempted configuring the additional UARTs as `_EXT1`
and `_EXT2`, but only `_EXT2` was understood by QGC.)
Trying to actually use the FrSky telemetry port for anything without
configuring FrSky telemetry on a different port may be impossible without
modifying the board's `init/rc.board_extras`.
(Should that script be modified to check if the port is used for
anything else?)
Skip naming the RC input port.
Fixes#21455.
Increases signal ampltiude on a 1Hz sin input until a target rate (R/P/Y = 0.8/0.5/0.5 rad/s) is reached. Identification signal is then scaled with this ampltitude instead of the user-defined parameter.
- removed the bug where some overflow would occur on the PWM signal when
changing the duty cycle of the signal after power up. (PWM_MAIN_DIS,
PWM_MAIN_MIN or PWM_MAIN_MAX)
removed commented code
cleanup of previous cherry-pick
Co-authored-by: henrykotze <henry@autonosky.com>
* ekf2: range height skip "unhealthy" samples, but respect timeout
- we should never directly use an "unhealthy" range finder sample for
state corrections or resets, but we also shouldn't immediately abort
active rng_hgt until the timeout has passed
* check starting_conditions_passing once
* ekf2: conditional range aid change height ref
---------
Co-authored-by: Daniel Agar <daniel@agar.ca>
- if bad vertical acceleration is detected there's an emergency case
where rejected range finder observations are allowed to be used, but
this still can't happen if the sample itself is known to be bag
* ekf2: range height skip "unhealthy" samples, but respect timeout
- we should never directly use an "unhealthy" range finder sample for
state corrections or resets, but we also shouldn't immediately abort
active rng_hgt until the timeout has passed
* check starting_conditions_passing once
---------
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
- Marked as stale if no activity for 90 days
- Closed if no activity for 30 days after being marked as stale
- Helpful stale and close messages
Signed-off-by: Ramon Roche <mrpollo@gmail.com>
Co-authored-by: Daniel Agar <daniel@agar.ca>
* Add warning for known issue in FW RTL landings
Currently there is an issue in 1.15.0...main which causes a FW aircraft to veer off course during the final approach on landing. This could cause a personnel safety risk and should be noted.
* Update docs/en/flight_modes_fw/return.md
* Update docs/en/flight_modes_fw/return.md
---------
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
Using the SF30/d with the legacy protocol caused a delay of the
measurements of ~1s. This is not the case with the binary protocol anymore.
The initialization sequence used for SF20/c did not work and is therefore
updated.
Tested on both SF20/c and SF30/d.
-add new NAVIGATION_STATE_ALTITUDE_VOYAGER
-this mode does require manual control to enter
-but you can disable the manual control loss failsafe to continue
flying in case of manual control loss
-for MC: in throttle and yaw are controlled like in Altitude mode,
the tilt is controlled via integrated rate input (similar to Acro,
but with tilt limit)
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
* Acquire control until expected id s are reported
* require an updated message and allow release in case early exit of FlightTask
* FlightTask Gimbal: acquiring logic simplification suggestion
* formatting
---------
Co-authored-by: Matthias Grob <maetugr@gmail.com>
* RoverAttitudeSetpoint - whitespace
* Format RoverAttitudeStatus.msg for consistency
* Format RoverPositionSetpoint.msg for consistency
* Format msg/RoverRateSetpoint.msg for consistency
* Format msg/RoverRateStatus.msg for consistency
* Format msg/RoverSpeedSetpoint.msg for consistency
* Reformat RoverSpeedStatus.msg for consistency
* Fix formatting of pid_yaw_rate_integral field
* Fix formatting in RoverSteeringSetpoint.msg
* Fix formatting in RoverThrottleSetpoint.msg
* Apply suggestions from code review
* switched instructions for clodning Micro-XRCE-DDS from v2.4.2 to v2.4.3 since v2.4.2 references a bad fast-dds tag that doesnt build
* reverted uxrce instructions changes from docs/ko docs/uk and docs/zh sin
ce they are generated automatically and should not be changed manually
* dronecan: esc: change UAVCAN_ESC_IFACE to 2 to default to only outputting on CAN2
* revert param default and update docs
* Subedit
---------
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
* Added overloaded get_log_time util for fractional seconds
* Added write_info implementation for double info types
* Save boot time to .ulg via info message key boot_time_utc
* Changed time type from double to uint64_t, formatted
* Fixing get_log_time function doc
* platforms: Serial new dedicated writeBlocking method
* finish writeBlocking()
* add back fsync
* updated posix, added string constant for port not open error
* format
* fix build
* remove fsync
* actually remove fsync
* remove fsync from write
* review feedback
---------
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
* serial: nuttx: revert tcdrain back to fsync
* serial: do not print error on EAGAIN
---------
Co-authored-by: Alexander Lerach <alexander@auterion.com>
This was apparently added 10 years ago to store metadata of UAVCAN components within the PX4 binary. The parameters in the xml are mostly early UAVCAN ESC parameters that are presumably out of date and not used. Also it does not scale to maintain metadata for all the possible UAVCAN components and it causes confusion when users read the metadata documentation because these parameters are not available in PX4. That's why I suggest to remove it.
* Add new INS driver sbgECom
Implement sbgECom messages handling to provide IMU sensors, GNSS and EKF data to the autopilot
Be able to parametrize the serial port, baudrate and the communicating mode
Clone sbgECom library only if sbgecom support is enabled and apply a patch
Be able to send SBG Systems INS settings in several ways when starting sbgecom driver
* Fix sensor airspeed simulator units
* Fix HIGHRES_IMU pressure unit
* Allow HIGHRES_IMU to support 4 IMUs
* sbgECom: Add documentation
* Use submodule instead of fetching sbgECom using CMake
* Remove patch strategy
* Fix dates
* Remove patch file
* Update SBG dev type ID
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
---------
Co-authored-by: Samuel Toledano <samuel.toledano@sbg-systems.com>
Co-authored-by: Jacob Dahl <37091262+dakejahl@users.noreply.github.com>
* Update dev_env_windows_wsl.md
Add info about enabling broadcasting or streaming to work with PX4 SITL on WSL and QGC on Windows.
* Update dev_env_windows_wsl.md
Fix links
* Update dev_env_windows_wsl.md
moved troubleshooting section at the bottom of WSL2<>Windows section.
* Move under troubleshooting
---------
Co-authored-by: Hamish Willee <hamishwillee@gmail.com>
- The velocity constraint gets set from multiple places e.g. Position slow knob and altitude related slow down. Depending on the execution order it was overwritten with a higher value again not obeying a stricter limit.
- The slowdown used valocities as inputs instead of the ratio of available altitude.
In an effort to reduce configuration space.
I've not seen use for this option.
If a pilot flies manually in position mode he has some visual reference of the vehicle and can do better than an autonomous mode without position reference.
Also by now we have nudging in Descend mode so the pilot can still give input and the only difference is it automatically goes down instead of the pilot having to descend by stick to land.
* Create a dummy BAHRS driver
* Resolve compilation
* Switch back to cpp, fix compilation
* Create module.yaml
* Implement required module APIs and open serial port
* Revise info and error messages
* Poll serial port
* Push received bytes into the ring buffer
* Process data buffer (1)
* Process data buffer (2)
* Process data buffer (3)
* Process data buffer (4)
* Process data buffer (5)
* Process data buffer (6)
* Implement and use initialize() and deinitialize() methods
* Implement print_usage() and print_status()
* Collect all config constants in a class
* Put info about next found message into a class
* Print CRC failure count
* Remove unneeded print
* Add comments
* Disable EKF2, advertise vehicle attitude
* Decode and publish BAHRS signals (1)
* Run the driver as an additional source of sensor signals
* Add tiny noise to baro-inertial pressure signal
* Fix the sensor ID
* Add copyrights
* Fix formatting
* Remove redundant newline character
* Fix long parameter name
* Fix findings (1)
* Fix finding (2)
* Fix formatting
* Fix the timeout value
* Remove aliases
* Fix copyright
* Fix indent
* Comply with naming convention
* Rework comparison to false
* Reduce nesting (1)
* Reduce nesting (2)
* Reduce nesting (3)
* Fix BAHRS sensor ID
This allows external modes to individually check if they are flagged as
invalid/unresponsive.
Previously this was done only based on whether or not ArmingCheckRequest
was received, which does not work when multiple modes are running.
based on the message timestamp.
Previously it was possible to run into the following case:
- 2 external modes are registered (running inside the same ROS node)
- they time out due to the micro xrce agent being blocked for some reason
- PX4 removes them
- the latest arming check replies still arrive to PX4
- the application restarts
- the first mode gets registered
- PX4 handles the previous arming check reply, and clears
waiting_for_first_response, which reduces the timeout
- the second mode registers and as part of that checks for message
compatibility. This takes ~1s, triggering a timeout of the first mode
RIHS01 has the same functionality and already provides type safety with
rmw_zenoh_cpp. The user on ROS2 can compare the PX4 ros2_lv hashes with
their own px4_msgs for a mismatch
There were a number of cases where the state was not correct or not as
desired after disarming, when running an external mode 'MyMission' with
executor:
- run MyMission, which triggers Hold, then Land
- before: Mode: Hold, executor_in_charge: 1
- after: Mode: MyMission, executor_in_charge: 1
- run MyMission, then user switches to RTL
- before: Mode: MyMission, executor_in_charge: 0
- after: Mode: MyMission, executor_in_charge: 1
- run MyMission, then while in Hold mode, low battery failsafe (RTL)
- before: Mode: Hold, executor_in_charge: 1
- after: Mode: MyMission, executor_in_charge: 1
- run MyMission, then stop external mode (terminate the process)
- before: Mode: (mode not available), executor_in_charge: 0
- after: Mode: Hold, executor_in_charge: 0
This case is unchanged:
- run MyMission, then low battery failsafe (RTL)
- before: Mode: MyMission, executor_in_charge: 1
- after: Mode: MyMission, executor_in_charge: 1
2025-08-21 10:06:30 +02:00
1997 changed files with 73646 additions and 19635 deletions
stale-issue-message:'This issue has been marked as stale due to 90 days of inactivity. If no further activity occurs, it will be automatically closed in 30 days. Please leave a comment, add a reaction, make an update, or remove the stale label if you’d like to keep it open.'
close-issue-message:'This issue has been closed due to prolonged inactivity after being marked as stale. If you believe this was closed in error or the topic is still relevant, please feel free to reopen it or create a new issue.'
stale-pr-message:'This PR was identified as stale and it will be closed in 30 days unless any activity is detected.'
close-pr-message:'This pull request has been closed after being marked as stale with no further activity. Thank you for the time and effort you put into this contribution. If you’d like to continue the discussion or update the work, please feel free to reopen it or submit a new PR.'
# - if systemcmds/bl_update included (with romfs copy) and board bootloader available then generate rc.board_bootloader_upgrade and copy bootloader binary
# - if systemcmds/bl_update included and board bootloader available then generate rc.board_bootloader_upgrade and copy bootloader binary
# - otherwise remove bootloader binary from extras in final ROMFS
parser.add_argument('-f','--filter',dest='filter',help='comma separated list of board names to use instead of all')
parser.add_argument('-f','--filter',dest='filter',help='comma separated list of build target name prefixes to include instead of all e.g. "px4_fmu-v5_"')
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.