forked from Archive/PX4-Autopilot
Tools: Support injecting param meta, do not generate code for these
This commit is contained in:
parent
a6ba6eb2e4
commit
56d67c6f6c
|
@ -0,0 +1,146 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<parameters>
|
||||
<version>3</version>
|
||||
<group name="UAVCAN Motor Parameters" no_code_generation="true">
|
||||
<parameter default="75" name="ctl_bw" type="INT32">
|
||||
<short_desc>Speed controller bandwidth</short_desc>
|
||||
<long_desc>Speed controller bandwidth, in Hz. Higher values result in faster speed and current rise times, but may result in overshoot and higher current consumption. For fixed-wing aircraft, this value should be less than 50 Hz; for multirotors, values up to 100 Hz may provide improvements in responsiveness.</long_desc>
|
||||
<unit>Hertz</unit>
|
||||
<min>10</min>
|
||||
<max>250</max>
|
||||
</parameter>
|
||||
<parameter default="1" name="ctl_dir" type="INT32">
|
||||
<short_desc>Reverse direction</short_desc>
|
||||
<long_desc>Motor spin direction as detected during initial enumeration. Use 0 or 1 to reverse direction.</long_desc>
|
||||
<min>0</min>
|
||||
<max>1</max>
|
||||
</parameter>
|
||||
<parameter default="1" name="ctl_gain" type="FLOAT">
|
||||
<short_desc>Speed (RPM) controller gain</short_desc>
|
||||
<long_desc>Speed (RPM) controller gain. Determines controller
|
||||
aggressiveness; units are amp-seconds per radian. Systems with
|
||||
higher rotational inertia (large props) will need gain increased;
|
||||
systems with low rotational inertia (small props) may need gain
|
||||
decreased. Higher values result in faster response, but may result
|
||||
in oscillation and excessive overshoot. Lower values result in a
|
||||
slower, smoother response.</long_desc>
|
||||
<unit>amp-seconds per radian</unit>
|
||||
<decimal>3</decimal>
|
||||
<min>0.00</min>
|
||||
<max>1.00</max>
|
||||
</parameter>
|
||||
<parameter default="3.5" name="ctl_hz_idle" type="FLOAT">
|
||||
<short_desc>Idle speed (e Hz)</short_desc>
|
||||
<long_desc>Idle speed (e Hz)</long_desc>
|
||||
<unit>Hertz</unit>
|
||||
<decimal>3</decimal>
|
||||
<min>0.0</min>
|
||||
<max>100.0</max>
|
||||
</parameter>
|
||||
<parameter default="25" name="ctl_start_rate" type="INT32">
|
||||
<short_desc>Spin-up rate (e Hz/s)</short_desc>
|
||||
<long_desc>Spin-up rate (e Hz/s)</long_desc>
|
||||
<unit>Hz/s</unit>
|
||||
<decimal></decimal>
|
||||
<min>5</min>
|
||||
<max>1000</max>
|
||||
</parameter>
|
||||
<parameter default="0" name="esc_index" type="INT32">
|
||||
<short_desc>Index of this ESC in throttle command messages.</short_desc>
|
||||
<long_desc>Index of this ESC in throttle command messages.</long_desc>
|
||||
<unit>Index</unit>
|
||||
<decimal></decimal>
|
||||
<min>0</min>
|
||||
<max>15</max>
|
||||
</parameter>
|
||||
<parameter default="20034" name="id_ext_status" type="INT32">
|
||||
<short_desc>Extended status ID</short_desc>
|
||||
<long_desc>Extended status ID</long_desc>
|
||||
<unit></unit>
|
||||
<decimal></decimal>
|
||||
<min>1</min>
|
||||
<max>1023</max>
|
||||
</parameter>
|
||||
<parameter default="50000" name="int_ext_status" type="INT32">
|
||||
<short_desc>Extended status interval (µs)</short_desc>
|
||||
<long_desc>Extended status interval (µs)</long_desc>
|
||||
<unit>µs</unit>
|
||||
<decimal></decimal>
|
||||
<min>0</min>
|
||||
<max>1000000</max>
|
||||
</parameter>
|
||||
<parameter default="50000" name="int_status" type="INT32">
|
||||
<short_desc>ESC status interval (µs)</short_desc>
|
||||
<long_desc>ESC status interval (µs)</long_desc>
|
||||
<unit>µs</unit>
|
||||
<decimal></decimal>
|
||||
<max>1000000</max>
|
||||
</parameter>
|
||||
<parameter default="12" name="mot_i_max" type="FLOAT">
|
||||
<short_desc>Motor current limit in amps</short_desc>
|
||||
<long_desc>Motor current limit in amps. This determines the maximum
|
||||
current controller setpoint, as well as the maximum allowable
|
||||
current setpoint slew rate. This value should generally be set to
|
||||
the continuous current rating listed in the motor’s specification
|
||||
sheet, or set equal to the motor’s specified continuous power
|
||||
divided by the motor voltage limit.</long_desc>
|
||||
<unit>Amps</unit>
|
||||
<decimal>3</decimal>
|
||||
<min>1</min>
|
||||
<max>80</max>
|
||||
</parameter>
|
||||
<parameter default="2300" name="mot_kv" type="INT32">
|
||||
<short_desc>Motor Kv in RPM per volt</short_desc>
|
||||
<long_desc>Motor Kv in RPM per volt. This can be taken from the motor’s
|
||||
specification sheet; accuracy will help control performance but
|
||||
some deviation from the specified value is acceptable.</long_desc>
|
||||
<unit>RPM/v</unit>
|
||||
<decimal>0</decimal>
|
||||
<min>0</min>
|
||||
<max>100</max>
|
||||
</parameter>
|
||||
<parameter default="0.0" name="mot_ls" type="FLOAT">
|
||||
<short_desc>READ ONLY: Motor inductance in henries.</short_desc>
|
||||
<long_desc>READ ONLY: Motor inductance in henries. This is measured on start-up.</long_desc>
|
||||
<unit>henries</unit>
|
||||
<decimal>3</decimal>
|
||||
</parameter>
|
||||
<parameter default="14" name="mot_num_poles" type="INT32">
|
||||
<short_desc>Number of motor poles.</short_desc>
|
||||
<long_desc>Number of motor poles. Used to convert mechanical speeds to
|
||||
electrical speeds. This number should be taken from the motor’s
|
||||
specification sheet.</long_desc>
|
||||
<unit>Poles</unit>
|
||||
<decimal></decimal>
|
||||
<min>2</min>
|
||||
<max>40</max>
|
||||
</parameter>
|
||||
<parameter default="0.0" name="mot_rs" type="FLOAT">
|
||||
<short_desc>READ ONLY: Motor resistance in ohms</short_desc>
|
||||
<long_desc>READ ONLY: Motor resistance in ohms. This is measured on start-up. When
|
||||
tuning a new motor, check that this value is approximately equal
|
||||
to the value shown in the motor’s specification sheet.</long_desc>
|
||||
<unit>Ohms</unit>
|
||||
<decimal>3</decimal>
|
||||
</parameter>
|
||||
<parameter default=".5" name="mot_v_accel" type="INT32">
|
||||
<short_desc>Acceleration limit (V)</short_desc>
|
||||
<long_desc>Acceleration limit (V)</long_desc>
|
||||
<unit>Volts</unit>
|
||||
<decimal>3</decimal>
|
||||
<min>0.01</min>
|
||||
<max>1.00</max>
|
||||
</parameter>
|
||||
<parameter default="14.8" name="mot_v_max" type="FLOAT">
|
||||
<short_desc>Motor voltage limit in volts</short_desc>
|
||||
<long_desc>Motor voltage limit in volts. The current controller’s
|
||||
commanded voltage will never exceed this value. Note that this may
|
||||
safely be above the nominal voltage of the motor; to determine the
|
||||
actual motor voltage limit, divide the motor’s rated power by the
|
||||
motor current limit.</long_desc>
|
||||
<unit>Volts</unit>
|
||||
<decimal>3</decimal>
|
||||
<min>0</min>
|
||||
</parameter>
|
||||
</group>
|
||||
</parameters>
|
|
@ -18,10 +18,14 @@ def indent(elem, level=0):
|
|||
|
||||
class XMLOutput():
|
||||
|
||||
def __init__(self, groups, board):
|
||||
def __init__(self, groups, board, inject_xml_file_name):
|
||||
xml_parameters = ET.Element("parameters")
|
||||
xml_version = ET.SubElement(xml_parameters, "version")
|
||||
xml_version.text = "3"
|
||||
importtree = ET.parse(inject_xml_file_name)
|
||||
injectgroups = importtree.getroot().findall("group")
|
||||
for igroup in injectgroups:
|
||||
xml_parameters.append(igroup)
|
||||
last_param_name = ""
|
||||
board_specific_param_set = False
|
||||
for group in groups:
|
||||
|
|
|
@ -29,7 +29,7 @@ start_name = ""
|
|||
end_name = ""
|
||||
|
||||
for group in root:
|
||||
if group.tag == "group":
|
||||
if group.tag == "group" and "no_code_generation" not in group.attrib:
|
||||
header += """
|
||||
/*****************************************************************
|
||||
* %s
|
||||
|
@ -62,7 +62,8 @@ struct px4_parameters_t px4_parameters = {
|
|||
"""
|
||||
i=0
|
||||
for group in root:
|
||||
if group.tag == "group":
|
||||
if group.tag == "group" and "no_code_generation" not in group.attrib:
|
||||
|
||||
src += """
|
||||
/*****************************************************************
|
||||
* %s
|
||||
|
|
|
@ -65,6 +65,12 @@ def main():
|
|||
metavar="FILENAME",
|
||||
help="Create XML file"
|
||||
" (default FILENAME: parameters.xml)")
|
||||
parser.add_argument("-i", "--inject-xml",
|
||||
nargs='?',
|
||||
const="../Tools/parameters_injected.xml",
|
||||
metavar="FILENAME",
|
||||
help="Inject additional param XML file"
|
||||
" (default FILENAME: ../Tools/parameters_injected.xml)")
|
||||
parser.add_argument("-b", "--board",
|
||||
nargs='?',
|
||||
const="",
|
||||
|
@ -124,7 +130,7 @@ def main():
|
|||
# Output to XML file
|
||||
if args.xml:
|
||||
print("Creating XML file " + args.xml)
|
||||
out = xmlout.XMLOutput(param_groups, args.board)
|
||||
out = xmlout.XMLOutput(param_groups, args.board, args.inject_xml)
|
||||
out.Save(args.xml)
|
||||
|
||||
# Output to DokuWiki tables
|
||||
|
|
Loading…
Reference in New Issue