mirror of https://github.com/ArduPilot/ardupilot
Tools: added convert_param_scale.py
This commit is contained in:
parent
7de56d434c
commit
bf60a3b385
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/env python3
|
||||
'''
|
||||
tool to convert parameter names and scales, useful for conversion for cm -> m and cdeg -> deg
|
||||
|
||||
this looks for files called *.param or *.parm
|
||||
|
||||
example:
|
||||
Tools/scripts/convert_param_scale.py --scale 0.1 TRIM_ARSPD_CM AIRSPEED_CRUISE
|
||||
'''
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from argparse import ArgumentParser
|
||||
|
||||
parser = ArgumentParser(description="parameter conversion tool")
|
||||
|
||||
parser.add_argument("--scale", default=1.0, type=float, help="scale factor")
|
||||
parser.add_argument("--directory", default=".", help="directory to search")
|
||||
parser.add_argument("old_name", default=None, help="old parameter name")
|
||||
parser.add_argument("new_name", default=None, help="new parameter name")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
def process_file(fname):
|
||||
needs_write = False
|
||||
with open(fname, "r") as f:
|
||||
lines = f.readlines()
|
||||
for i in range(len(lines)):
|
||||
line = lines[i]
|
||||
if line.startswith(args.old_name):
|
||||
a = line.split()
|
||||
if len(a) == 2:
|
||||
sep = ' '
|
||||
else:
|
||||
a = line.split(',')
|
||||
if len(a) == 2:
|
||||
sep = ','
|
||||
else:
|
||||
continue
|
||||
v = float(a[1])
|
||||
v *= args.scale
|
||||
lines[i] = "%s%s%.2f\n" % (args.new_name, sep, v)
|
||||
needs_write = True
|
||||
if not needs_write:
|
||||
return
|
||||
print("Updating %s" % fname)
|
||||
with open(fname, "w") as f:
|
||||
for line in lines:
|
||||
f.write(line)
|
||||
|
||||
for root, dirs, files in os.walk(args.directory):
|
||||
for file in files:
|
||||
if file.endswith(".parm") or file.endswith(".param"):
|
||||
process_file(os.path.join(root, file))
|
Loading…
Reference in New Issue