Skip to content

Conversation

@robertlong13
Copy link
Contributor

When discussing ArduPilot/ardupilot#30201 on the dev call, Tridge requested that I overhaul the whole ICE wiki page, and go into more detail on disarmed operation.

I've been through the source in detail and tried to make sure every nuance is captured here.

In the past I really struggled to get the ICE library to play nicely with handheld starters when you also have an RPM sensor. The approach I added in here has worked well for me for such systems.

@Hwurzburg
Copy link
Contributor

Hwurzburg commented Sep 19, 2025

havent reviewed fully but all parameters that can be, should be properly linked, ie
instead of ICE_START_PCT it should be :ref:`ICE_START_PCT<ICE_START_PCT>`

@Hwurzburg Hwurzburg self-requested a review September 19, 2025 16:57
@robertlong13
Copy link
Contributor Author

havent reviewed fully but all parameters that can be, should be properly linked, ie instead of ICE_START_PCT it should be :ref:ICE_START_PCT<ICE_START_PCT>

Fixed. Most of the non-linked cases were existing. Agree that consistency is best.

@robertlong13
Copy link
Contributor Author

robertlong13 commented Sep 20, 2025

Ugh, I just found a mistake in part of my explanation. By default, the engine cannot run disarmed unless you set ICE_IDLE_PCT to 1 or higher (I was doing that a lot in my testing while drafting), or if you set the disarmed manual throttle option (but that one is more obvious). I went through the line history of that to try to get a sense of the reasoning, but it's a bit baffling.

https://github.com/ArduPilot/ardupilot/blob/86e22fd5705d78e7329de707468fac25feb221ee/libraries/AP_ICEngine/AP_ICEngine.cpp#L454

I'll retool that explanation. But it's SO complicated. The engine will not run while disarmed, unless you set an idle throttle or "disarmed manual throttle option-bit", unless you set the "don't start disarmed option-bit", unless you set param4 of a DO_ENGINE_COMMAND to 1, (but that param4 override only overrides that "don't start disarmed option-bit"; if you don't have an idle percent or the "disarmed manual throttle option-bit" than that override doesn't do anything).

There are 4 stacked layers with alternating "unless"... 😩

@robertlong13
Copy link
Contributor Author

Some of the history there
ArduPilot/ardupilot#11109
ArduPilot/ardupilot#25053
ArduPilot/ardupilot#25138

I don't think the idle percentage parameter should ever have been tied to the behavior of whether to run while disarmed, but it's been in there long enough that I doubt I can fix that without breaking current users' setups.

@robertlong13
Copy link
Contributor Author

I've corrected it now. Hopefully in a way that isn't terribly confusing.

@Hwurzburg Hwurzburg requested a review from tridge October 6, 2025 12:03
Copy link
Contributor

@Hwurzburg Hwurzburg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Many ICE params are wrong names. here are the ICE param
image

@robertlong13 robertlong13 force-pushed the pr/common-ice-overhaul branch from 4a3e0ca to 188947f Compare October 14, 2025 09:34
@robertlong13
Copy link
Contributor Author

robertlong13 commented Oct 14, 2025

Many ICE params are wrong names

Can you point to one? I only found a single wrong name, and one pre-existing stale name in the Options table. I've now fixed those two.

If you're referring to the params on lines 99-102 and line 126, those are in the ArduPilot prior to 4.6 tabs, so of course they aren't the right names for 4.6+, but that's expected.

@Hwurzburg
Copy link
Contributor

Hwurzburg commented Oct 14, 2025

@robertlong13 but those added invalid param links now cause build errors....any invalid param should just be highlighted via backticks and not linked...ie ICE_PWM_STRT_ON

@robertlong13
Copy link
Contributor Author

Gotcha. I take it we don't have any way to pin them to the 4.5.5 param wiki page?

@robertlong13 robertlong13 force-pushed the pr/common-ice-overhaul branch from 188947f to aac5198 Compare October 14, 2025 11:51
@Hwurzburg
Copy link
Contributor

Hwurzburg commented Oct 14, 2025

no....that page is not regenerated anyway, its an archive...only master and new releases gets regenerated as I understand it....could be changed I guess

poke Tridge for an approval...he mostly ignores pings via email

@Hwurzburg
Copy link
Contributor

@robertlong13 did you incorporate #7044? and if you did I will merge...no point in waiting on Tridge longer, I guess...

@robertlong13 robertlong13 force-pushed the pr/common-ice-overhaul branch 2 times, most recently from 3e5f902 to 7b2844a Compare October 26, 2025 02:30
@robertlong13
Copy link
Contributor Author

@Hwurzburg I have rebased to include Tridge's #7044. I have also prefixed my note about the idle governor's quirks with "Prior to ArduPilot 4.7", which covers ArduPilot/ardupilot#30201 (my outstanding TODO in #6390). This should be good to go.

@Hwurzburg Hwurzburg force-pushed the pr/common-ice-overhaul branch from 7b2844a to d1a7996 Compare October 26, 2025 12:17
@Hwurzburg
Copy link
Contributor

made a few tweaks...rather than waiting on the 4.7 minor changes to merge, merging now since this a big improvement on ICE docs

@Hwurzburg Hwurzburg merged commit 3acbf21 into ArduPilot:master Oct 26, 2025
2 checks passed
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.

3 participants