ArduPilot / ArduPilot/MissionPlanner

RC Calibration Wizard Improvement

Open
#1,849 4 comments 1 reaction 0 assignees View on GitHub
Dominant language
C#
Stars
2.4k
Forks
2.9k
Avg merge
19h 16m
Merged PRs (30d)
4

Description

#### Issue details
There are way too many users that end up with inputs (and consequently outputs) reversed. This stems from incorrect RC Calibration user errors. Although we say in the docs to make sure that the green bars move with the sticks, there are still far too many people that don't get it right or don't notice. It results in too many crashes, and this problem could be solved with a better step-by-step wizard and calibrating one thing at a time.

I have heard that other GCS's do it differently. I haven't used them, but I think the following procedure would make the most sense:

1. Confirm the user wants to calibrate his/her radio.
2. Ask user to remove any radio trims, center sticks, lower throttle, and "press any key"
3. Ask user to roll right only, hold, and "press any key" like the accelerometer calibration
4. Ask user to roll left only, hold, and "press any key"
5. Ask user to pitch nose-up, hold, and "press any key"
6. Ask user to pitch nose-down...
7. Throttle up...
8. Yaw right...
9. Yaw left...
10. Flip all of the mode switches and dials (and record like the whole procedure is recorded currently)
11. Return all sticks to neutral positions

Sure, the "corners" of the stick positions may not be 100% accurately recorded for min/max, but there should be no problem if an RC input is beyond the max or min; it will still be full-value. We're more concerned here about users not getting to full value due to not calibrating.

By using each individual step, the reversals and RCmap channels can be automatically calculated. It also accomodates users who are used to a reversed stick.

Behind the scenes:
1. Confirm calibration intent.
2. Confirm neutral start & set trims.
3. Find CH with the most change, set RCMAP_ROLL to that channel, if change is negative then reverse the channel, record RC(CH)_MAX (or MIN if reversed)
4. Record RC(CH)_MIN (or MAX if reversed)
5. Find CH with the most change, set RCMAP_PITCH to that channel, if change is negative then reverse the channel, record RC(CH)_MAX (or MIN if reversed)
6. Record RC(CH)_MIN (or MAX if reversed)
7. Find CH with the most change, set RCMAP_THROTTLE to that channel, if change is negative then reverse the channel, record RC(CH)_MAX (or MIN if reversed).
8. Find CH with the most change, set RCMAP_YAW to that channel, if change is negative then reverse the channel, record RC(CH)_MAX (or MIN if reversed)
9. Record RC(CH)_MIN (or MAX if reversed)
10. Find all of the rest of the Min's and Max's by using the old technique
11. Set RC(n)_TRIM for all channels, and RC(throttle)_MIN.

#### Version
All

#### Platform
[X] All
[ ] AntennaTracker
[ ] Copter
[ ] Plane
[ ] Rover
[ ] Sub

#### Airframe type
ALL

#### Hardware type
Anything with a transmitter

#### Logs
N/A

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by locating Mission Planner's existing RC calibration wizard and its current recording flow; the issue names no files or tests. Compare that flow with the numbered procedure, and consider the work complete when calibration guides each control separately, detects channel mapping and reversal, and records the remaining ranges and trims.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.