Files
ardupilot/libraries/AP_Scripting/drivers/UltraMotion.md
T
Andrew Tridgell 038fbbfed7 AP_Scripting: remove CANF logging options from CAN drivers
Every CAN driver had grown its own option bit to log raw frames as CANF
messages. That is now redundant: CAN_Pn_OPTIONS bit 0 (LogAllFrames)
logs every frame on the bus, and unlike the script option it covers
transmitted frames as well as received ones, as the logging callback is
run from both CANIface::receive() and CANIface::send().

Removed the option and its logging from BattMon_ANX, EFI_HFE,
EFI_Halo6000, EFI_NMEA2k and UltraMotion, and dropped the CAN_logger
example, which did nothing else.

BATT_ANX_OPTIONS, EFI_HFE_OPTIONS, EFI_H6K_OPTIONS and EFI_2K_OPTIONS
had no other bits defined, so those parameters are gone. UM_OPTIONS
keeps ParseTelemetry and SendPosAsNamedValueFloat at their existing bit
positions.
2026-09-04 11:11:33 +10:00

2.1 KiB

UltraMotion CAN Driver

This driver implements support for the UltraMotion CAN servos

Parameters

The script used the following parameters:

UM_SERVO_MASK

Mask of servo channels to transmit using UltraMotion CAN messages

UM_CANDRV

This sets the CAN scripting driver number to attach to. This is normally set to 1 to use a CAN driver with CAN_Dx_PROTOCOL=10. To use the 2nd scripting CAN driver set this to 2 and set CAN_Dx_PROTOCOL=12.

UM_RATE_HZ

This sets the update rate of the script in Hz (how often it sends commands and checks for new data from the actuator). A value of 200 is reasonable.

UM_OPTIONS

This sets optional features. Bit 2 enables telemetry parsing. Bit 3 for sending the position of all servos as NAMED_VALUE_FLOAT MAVLink packets of name UMPOS_n where n is the unit ID.

Operation

This driver should be loaded by placing the lua script in the APM/SCRIPTS directory on the microSD card, which can be done either directly or via MAVFTP. The following key parameters should be set:

  • SCR_ENABLE should be set to 1
  • UM_SERVO_MASK needs to be set to a mask of servos

It is also strongly recommended that you raise SCR_THD_PRIORITY to 3 to ensure the script gets sufficient priority.

then the flight controller should rebooted and parameters should be refreshed.

UltraMotion Settings

The following settings need to be changed using the CLI or CONFIG.TXT

  • unitID should be set to the servo number (1-indexed)
  • pMin to 1000
  • pMax to 2000

If using telemetry (remember to set UM_OPTIONS bit 2), the following should also be set:

  • txID should be set to match unitID

  • txData should be set to ABCGHEFY

  • txIvl should be set according to your desired telemetry rate

    (e.g., 100 milliseconds for 10Hz)

Commands, assuming you are setting up servo 7, and a telemetry rate of 10Hz

id 7
pn 1000
px 2000
ni 7
dt ABCGHEFY
it 100

Logging CAN frames

To capture the raw CAN traffic for debugging set bit 0 of the CAN_Pn_OPTIONS parameter for the bus in use. That logs every frame on the bus as a CANF message, in both directions, and can be replayed with Tools/scripts/CAN/CAN_playback.py.