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.
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.