Skip to content

Conversation

@ajshank
Copy link
Member

@ajshank ajshank commented Jul 2, 2020

Migration to ChibiOS and a host of other features/bug fixes from 4.0 release.

cclauss and others added 29 commits December 3, 2025 11:51
most of these were removed in 2022.

Many have crept back in, so kill them with fire.
not used since at least 2022
these don't ever appear to have been used!
we removed most of these years ago, but some crept back in.

Kill them with fire.
these haven't been used in a very long time.  Their replacement infers the same default behaviour, so that's nice.
Was prototyped many years ago but never defined or called.
Was prototyped many years ago but never defined or called.
This is never called as the main `wscript` does not recurse into this
directory until build time. Even if it were called, it would update the
environment for all builds instead of just replay. Even if it did update
the environment, nobody reads that variable so there's no effect.
Now that we call the AP_Arming singleton's initialization method in
AP_Vehicle, we have to ensure an AP_Arming exists for all vehicles.
Otherwise we get a segfault.

This is nicer than disabling AP_ARMING_ENABLED for replay and causing a
full recompile. Also nicer than checking that the singleton is not
nullptr as this is zero overhead for all other vehicles.
This conversion was dropped for other vehicles in late 2024. This
conversion is in 4.0.0.
This conversion was dropped for other vehicles in late 2024. This
conversion is in 4.0.0.
The mentioned bug must have been fixed as the test works now without
doing any fiddling. The code never worked properly anyway, `1 ^ 25` is
nonsense and presumably should have been `1 << 25`.
In some cases the index can be more than a `uint8_t` so just use the
underlying type in the `ConversionInfo`.

This is a no compiler output change.
This lowers the effort required to turn off just one arming check.
Previously, a user had to disable the ALL bit and enable every check
except the undesired one. Now they can just disable that one directly.
Hopefully this will result in less vehicles with no arming checks
whatsoever, presuming only one check is giving the user grief.

This, as a side effect, removes the difference between the ALL bit set
and all non-ALL bits set (e.g. the latter disables IMU heater checks).
It also ensures the user will get any new arming checks even if they
have skipped one.

People who need to disable all current and future checks for e.g. bench
testing can still do this efficiently by setting the parameter to `-1`,
leveraging that this sets all bits in 2s complement arithmetic.

A parameter conversion is included that skips no checks if the old ALL
bit is set; otherwise it migrates the user's selected checks. If no
checks were enabled, it disables all current and future checks.
This lowers the effort required to turn off just one arming check.
Previously, a user had to disable the ALL bit and enable every check
except the undesired one. Now they can just disable that one directly.
Hopefully this will result in less vehicles with no arming checks
whatsoever, presuming only one check is giving the user grief.

This, as a side effect, removes the difference between the ALL bit set
and all non-ALL bits set (e.g. the latter disables IMU heater checks).
It also ensures the user will get any new arming checks even if they
have skipped one.

People who need to disable all current and future checks for e.g. bench
testing can still do this efficiently by setting the parameter to `-1`,
leveraging that this sets all bits in 2s complement arithmetic.

A parameter conversion is included that skips no checks if the old ALL
bit is set; otherwise it migrates the user's selected checks. If no
checks were enabled, it disables all current and future checks.
This lowers the effort required to turn off just one arming check.
Previously, a user had to disable the ALL bit and enable every check
except the undesired one. Now they can just disable that one directly.
Hopefully this will result in less vehicles with no arming checks
whatsoever, presuming only one check is giving the user grief.

This, as a side effect, removes the difference between the ALL bit set
and all non-ALL bits set (e.g. the latter disables IMU heater checks).
It also ensures the user will get any new arming checks even if they
have skipped one.

People who need to disable all current and future checks for e.g. bench
testing can still do this efficiently by setting the parameter to `-1`,
leveraging that this sets all bits in 2s complement arithmetic.

A parameter conversion is included that skips no checks if the old ALL
bit is set; otherwise it migrates the user's selected checks. If no
checks were enabled, it disables all current and future checks.
This lowers the effort required to turn off just one arming check.
Previously, a user had to disable the ALL bit and enable every check
except the undesired one. Now they can just disable that one directly.
Hopefully this will result in less vehicles with no arming checks
whatsoever, presuming only one check is giving the user grief.

This, as a side effect, removes the difference between the ALL bit set
and all non-ALL bits set (e.g. the latter disables IMU heater checks).
It also ensures the user will get any new arming checks even if they
have skipped one.

People who need to disable all current and future checks for e.g. bench
testing can still do this efficiently by setting the parameter to `-1`,
leveraging that this sets all bits in 2s complement arithmetic.

A parameter conversion is included that skips no checks if the old ALL
bit is set; otherwise it migrates the user's selected checks. If no
checks were enabled, it disables all current and future checks.
This lowers the effort required to turn off just one arming check.
Previously, a user had to disable the ALL bit and enable every check
except the undesired one. Now they can just disable that one directly.
Hopefully this will result in less vehicles with no arming checks
whatsoever, presuming only one check is giving the user grief.

This, as a side effect, removes the difference between the ALL bit set
and all non-ALL bits set (e.g. the latter disables IMU heater checks).
It also ensures the user will get any new arming checks even if they
have skipped one.

People who need to disable all current and future checks for e.g. bench
testing can still do this efficiently by setting the parameter to `-1`,
leveraging that this sets all bits in 2s complement arithmetic.

A parameter conversion is included that skips no checks if the old ALL
bit is set; otherwise it migrates the user's selected checks. If no
checks were enabled, it disables all current and future checks.
This lowers the effort required to turn off just one arming check.
Previously, a user had to disable the ALL bit and enable every check
except the undesired one. Now they can just disable that one directly.
Hopefully this will result in less vehicles with no arming checks
whatsoever, presuming only one check is giving the user grief.

This, as a side effect, removes the difference between the ALL bit set
and all non-ALL bits set (e.g. the latter disables IMU heater checks).
It also ensures the user will get any new arming checks even if they
have skipped one.

People who need to disable all current and future checks for e.g. bench
testing can still do this efficiently by setting the parameter to `-1`,
leveraging that this sets all bits in 2s complement arithmetic.

A parameter conversion is included that skips no checks if the old ALL
bit is set; otherwise it migrates the user's selected checks. If no
checks were enabled, it disables all current and future checks.
AIRSPEED check was inexplicably disabled before as well, but it's
compiled out so re-enabling it doesn't matter.
The meaning is the same as before, for better or worse.
These conversions were done by spirit rather than literally. Note that
the webots python params get several more checks enabled but the one
disabled now matches the comment.
The meaning is the same as before, for better or worse.

Some files only for older firmwares were not touched.
lthall and others added 30 commits December 17, 2025 08:03
better fix would be to call it tracker throughout ArduPilot, but a rather larger and more disruptive fix
add set_target_angle_and_rate_and_throttle() for precise vehicle control
docs for set_target_velocity_NED()
add set_target_angle_and_rate_and_throttle() for precise vehicle control
manual binding for set_target_velocity_NED() to allow optional boolean
update docs for attitude control
add set_target_angle_and_rate_and_throttle() for precise vehicle control
don't allow set_target_angle_and_rate_and_throttle() to be called unless in guided mode.
this doesn't really buy us anything, we can just update the mount target directly
PRs must have crossed over here

Also fix up the testing instructions
calls virtual methods which sends commands to the gimbal
…1-ASAUAV board

Co-authored-by: Leonardo Garcia <lgarciaos@protonmail.com>
…SAUAV board

Co-authored-by: Leonardo Garcia <lgarciaos@protonmail.com>
each of the affected gimbals can already send angle data at the rate at which we call these functions; we don't need to treat the retracted and neutral positions any more specially than we treat normal angle targets
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.