fix(basic): accept --target option

This commit is contained in:
2026-09-14 01:12:30 +03:00
parent 1b0ebe1b5a
commit cb6aa6a655
2 changed files with 19 additions and 1 deletions
+3
View File
@@ -38,6 +38,9 @@ python3 basic/drive_to_aruco.py 14
# То же в Webots; только здесь нужен --sim # То же в Webots; только здесь нужен --sim
python3 basic/drive_to_aruco.py 14 --sim python3 basic/drive_to_aruco.py 14 --sim
# Равнозначная форма с именованным аргументом
python3 basic/drive_to_aruco.py --sim --target 14
# Закрытые клетки и уменьшенная реальная скорость # Закрытые клетки и уменьшенная реальная скорость
python3 basic/drive_to_aruco.py 14 --blocked 8 9 --max-speed 0.08 python3 basic/drive_to_aruco.py 14 --blocked 8 9 --max-speed 0.08
+16 -1
View File
@@ -176,6 +176,9 @@ class ArucoDrive(Node):
) )
def on_odometry(self, message): def on_odometry(self, message):
frame = message.header.frame_id.strip("/")
if frame:
self.odom_frame = frame
pose = message.pose.pose pose = message.pose.pose
values = (pose.position.x, pose.position.y, yaw(pose.orientation)) values = (pose.position.x, pose.position.y, yaw(pose.orientation))
if all(math.isfinite(value) for value in values): if all(math.isfinite(value) for value in values):
@@ -318,7 +321,13 @@ class ArucoDrive(Node):
def arguments(): def arguments():
parser = argparse.ArgumentParser(description=__doc__) parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("target", type=int, help="ID целевой ArUco") parser.add_argument("target", nargs="?", type=int, help="ID целевой ArUco")
parser.add_argument(
"--target",
dest="target_option",
type=int,
help="ID целевой ArUco (альтернатива позиционному аргументу)",
)
parser.add_argument("--robot", choices=("RMC1", "RMC2"), default="RMC2") parser.add_argument("--robot", choices=("RMC1", "RMC2"), default="RMC2")
parser.add_argument("--rows", type=int) parser.add_argument("--rows", type=int)
parser.add_argument("--columns", type=int) parser.add_argument("--columns", type=int)
@@ -334,6 +343,12 @@ def arguments():
parser.add_argument("--yes", action="store_true", help="Не ждать Enter") parser.add_argument("--yes", action="store_true", help="Не ждать Enter")
parser.add_argument("--sim", action="store_true", help="Использовать /clock Webots") parser.add_argument("--sim", action="store_true", help="Использовать /clock Webots")
args = parser.parse_args() args = parser.parse_args()
if args.target is not None and args.target_option is not None:
parser.error("укажите target один раз: позиционно или через --target")
if args.target is None:
args.target = args.target_option
if args.target is None:
parser.error("укажите ID цели: TARGET или --target TARGET")
if args.rows is None: if args.rows is None:
args.rows = 6 if args.sim else 5 args.rows = 6 if args.sim else 5
if args.columns is None: if args.columns is None: