- 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.
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
* MAV_CMD_REQUEST_MESSAGE support for MESSAGE_INTERVAL
* Default should be -1 for stream
* Format
---------
Co-authored-by: PX4BuildBot <bot@pixhawk.org>