From 70d0f48bdb4eda7ee315ae963dec3a5b2a8ddd9f Mon Sep 17 00:00:00 2001 From: Guilhem Saurel <guilhem.saurel@laas.fr> Date: Fri, 24 Jul 2020 19:06:54 +0200 Subject: [PATCH] [Python] robot_loader: infer SRDF_SUBPATH --- python/example_robot_data/robots_loader.py | 57 +++++++++------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/python/example_robot_data/robots_loader.py b/python/example_robot_data/robots_loader.py index a8c4df0..a0176d0 100644 --- a/python/example_robot_data/robots_loader.py +++ b/python/example_robot_data/robots_loader.py @@ -48,10 +48,10 @@ def addFreeFlyerJointLimits(model): model.lowerPositionLimit = lb -def robot_loader(urdf_filename, - urdf_subpath, +def robot_loader(path, + urdf_filename, + urdf_subpath=None, srdf_filename=None, - srdf_subpath=None, verbose=False, has_rotor_parameters=False, ref_posture='half_sitting', @@ -63,7 +63,7 @@ def robot_loader(urdf_filename, pin.JointModelFreeFlyer() if free_flyer else None) if srdf_filename is not None: - robot.q0 = readParamsFromSrdf(robot.model, join(model_path, srdf_subpath, srdf_filename), verbose, + robot.q0 = readParamsFromSrdf(robot.model, join(model_path, path, 'srdf', srdf_filename), verbose, has_rotor_parameters, ref_posture) if free_flyer: addFreeFlyerJointLimits(robot.model) @@ -82,12 +82,11 @@ def loadANYmal(withArm=None): REF_POSTURE = "standing_with_arm_up" URDF_SUBPATH = "anymal_b_simple_description/robots" - SRDF_SUBPATH = "anymal_b_simple_description/srdf" - return robot_loader(URDF_FILENAME, + return robot_loader('anymal_b_simple_description', + URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, - SRDF_SUBPATH, ref_posture=REF_POSTURE, free_flyer=True) @@ -96,18 +95,16 @@ def loadTalosArm(): URDF_FILENAME = "talos_left_arm.urdf" SRDF_FILENAME = "talos.srdf" URDF_SUBPATH = "talos_data/robots" - SRDF_SUBPATH = "talos_data/srdf" - return robot_loader(URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, SRDF_SUBPATH) + return robot_loader('talos_data', URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME) def loadTalos(legs=False): URDF_FILENAME = "talos_reduced.urdf" SRDF_FILENAME = "talos.srdf" - SRDF_SUBPATH = "talos_data/srdf" URDF_SUBPATH = "talos_data/robots" - robot = robot_loader(URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, SRDF_SUBPATH, free_flyer=True) + robot = robot_loader('talos_data', URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, free_flyer=True) assert (robot.model.armature[:6] == 0.).all() @@ -161,7 +158,7 @@ def loadTalos(legs=False): # Load SRDF file robot.q0 = robot.q0[:robot.model.nq] model_path = getModelPath(join(URDF_SUBPATH, URDF_FILENAME)) - robot.q0 = readParamsFromSrdf(robot.model, join(model_path, SRDF_SUBPATH, SRDF_FILENAME), False) + robot.q0 = readParamsFromSrdf(robot.model, join(model_path, 'talos_data/srdf', SRDF_FILENAME), False) assert ((m2.armature[:6] == 0.).all()) # Add the free-flyer joint limits to the new model @@ -178,13 +175,12 @@ def loadTalosLegs(): def loadHyQ(): URDF_FILENAME = "hyq_no_sensors.urdf" SRDF_FILENAME = "hyq.srdf" - SRDF_SUBPATH = "hyq_description/srdf" URDF_SUBPATH = "hyq_description/robots" - return robot_loader(URDF_FILENAME, + return robot_loader('hyq_description', + URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, - SRDF_SUBPATH, ref_posture="standing", free_flyer=True) @@ -195,13 +191,12 @@ def loadSolo(solo=True): else: URDF_FILENAME = "solo12.urdf" SRDF_FILENAME = "solo.srdf" - SRDF_SUBPATH = "solo_description/srdf" URDF_SUBPATH = "solo_description/robots" - return robot_loader(URDF_FILENAME, + return robot_loader('solo_description', + URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, - SRDF_SUBPATH, ref_posture="standing", free_flyer=True) @@ -209,26 +204,23 @@ def loadSolo(solo=True): def loadKinova(): URDF_FILENAME = "kinova.urdf" SRDF_FILENAME = "kinova.srdf" - SRDF_SUBPATH = "kinova_description/srdf" URDF_SUBPATH = "kinova_description/robots" - return robot_loader(URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, SRDF_SUBPATH, ref_posture="arm_up") + return robot_loader('kinova_description', URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, ref_posture="arm_up") def loadTiago(): URDF_FILENAME = "tiago.urdf" # SRDF_FILENAME = "tiago.srdf" - # SRDF_SUBPATH = "tiago_description/srdf" URDF_SUBPATH = "tiago_description/robots" - return robot_loader(URDF_FILENAME, URDF_SUBPATH) + return robot_loader('tiago_description', URDF_FILENAME, URDF_SUBPATH) def loadTiagoNoHand(): URDF_FILENAME = "tiago_no_hand.urdf" # SRDF_FILENAME = "tiago.srdf" - # SRDF_SUBPATH = "tiago_description/srdf" URDF_SUBPATH = "tiago_description/robots" - return robot_loader(URDF_FILENAME, URDF_SUBPATH) + return robot_loader('tiago_description', URDF_FILENAME, URDF_SUBPATH) def loadICub(reduced=True): @@ -237,17 +229,16 @@ def loadICub(reduced=True): else: URDF_FILENAME = "icub.urdf" SRDF_FILENAME = "icub.srdf" - SRDF_SUBPATH = "icub_description/srdf" URDF_SUBPATH = "icub_description/robots" - return robot_loader(URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, SRDF_SUBPATH, free_flyer=True) + return robot_loader('icub_description', URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, free_flyer=True) def loadPanda(): URDF_FILENAME = "panda.urdf" URDF_SUBPATH = "panda_description/urdf" - return robot_loader(URDF_FILENAME, URDF_SUBPATH) + return robot_loader('panda_description', URDF_FILENAME, URDF_SUBPATH) def loadUR(robot=5, limited=False, gripper=False): @@ -256,37 +247,35 @@ def loadUR(robot=5, limited=False, gripper=False): URDF_SUBPATH = "ur_description/urdf" if robot == 5 or robot == 3 and gripper: SRDF_FILENAME = "ur%i%s.srdf" % (robot, '_gripper' if gripper else '') - SRDF_SUBPATH = "ur_description/srdf" else: SRDF_FILENAME = None - SRDF_SUBPATH = None - return robot_loader(URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, SRDF_SUBPATH, ref_posture=None) + return robot_loader('ur_description', URDF_FILENAME, URDF_SUBPATH, SRDF_FILENAME, ref_posture=None) def loadHector(): URDF_FILENAME = "quadrotor_base.urdf" URDF_SUBPATH = "hector_description/robots" - return robot_loader(URDF_FILENAME, URDF_SUBPATH, free_flyer=True) + return robot_loader('hector_description', URDF_FILENAME, URDF_SUBPATH, free_flyer=True) def loadDoublePendulum(): URDF_FILENAME = "double_pendulum.urdf" URDF_SUBPATH = "double_pendulum_description/urdf" - return robot_loader(URDF_FILENAME, URDF_SUBPATH) + return robot_loader('double_pendulum_description', URDF_FILENAME, URDF_SUBPATH) def loadRomeo(): URDF_FILENAME = "romeo.urdf" URDF_SUBPATH = "romeo_description/urdf" - return robot_loader(URDF_FILENAME, URDF_SUBPATH, free_flyer=True) + return robot_loader('romeo_description', URDF_FILENAME, URDF_SUBPATH, free_flyer=True) def loadIris(): URDF_FILENAME = "iris_simple.urdf" URDF_SUBPATH = "iris_description/robots" - return robot_loader(URDF_FILENAME, URDF_SUBPATH, free_flyer=True) + return robot_loader('iris_description', URDF_FILENAME, URDF_SUBPATH, free_flyer=True) -- GitLab