From 1f2ca85f592f916ae93f0da5d38c839001ed138a Mon Sep 17 00:00:00 2001 From: Wilson Jallet <ManifoldFR@users.noreply.github.com> Date: Thu, 17 Feb 2022 15:27:20 +0100 Subject: [PATCH] Add continuous (SO2) variant of double_pendulum (#111) * Make double_pendulum's joints unbounded revolute (continuous) * Add continuous (SO(2)) variant of double_pendulum * Remove update to deprecated function; inherit from DoublePendulumLoader * Add unit test --- python/example_robot_data/robots_loader.py | 5 + .../urdf/double_pendulum_continuous.urdf | 167 ++++++++++++++++++ unittest/test_load.py | 3 + 3 files changed, 175 insertions(+) create mode 100644 robots/double_pendulum_description/urdf/double_pendulum_continuous.urdf diff --git a/python/example_robot_data/robots_loader.py b/python/example_robot_data/robots_loader.py index 018e317..d26b04f 100644 --- a/python/example_robot_data/robots_loader.py +++ b/python/example_robot_data/robots_loader.py @@ -483,6 +483,10 @@ class DoublePendulumLoader(RobotLoader): urdf_subpath = "urdf" +class DoublePendulumContinuousLoader(DoublePendulumLoader): + urdf_filename = "double_pendulum_continuous.urdf" + + def loadDoublePendulum(): warnings.warn(_depr_msg('loadDoublePendulum()', 'double_pendulum'), FutureWarning, 2) return DoublePendulumLoader().robot @@ -531,6 +535,7 @@ ROBOTS = { 'baxter': BaxterLoader, 'cassie': CassieLoader, 'double_pendulum': DoublePendulumLoader, + 'double_pendulum_continuous': DoublePendulumContinuousLoader, 'hector': HectorLoader, 'hyq': HyQLoader, 'icub': ICubLoader, diff --git a/robots/double_pendulum_description/urdf/double_pendulum_continuous.urdf b/robots/double_pendulum_description/urdf/double_pendulum_continuous.urdf new file mode 100644 index 0000000..97dc683 --- /dev/null +++ b/robots/double_pendulum_description/urdf/double_pendulum_continuous.urdf @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com) + Commit Version: 1.5.1-0-g916b5db Build Version: 1.5.7152.31018 + For more information, please see http://wiki.ros.org/sw_urdf_exporter --> +<robot + name="2dof_planar"> + <link + name="base_link"> + <inertial> + <origin + xyz="0.0030299 2.6279E-13 0.02912" + rpy="0 0 0" /> + <mass + value="0.10159" /> + <inertia + ixx="2.636E-05" + ixy="-1.007E-16" + ixz="-2.3835E-06" + iyy="1.8042E-05" + iyz="-4.6617E-09" + izz="1.8795E-05" /> + </inertial> + <visual> + <origin + xyz="0 0 0" + rpy="0 0 0" /> + <geometry> + <mesh + filename="package://example-robot-data/robots/double_pendulum_description/meshes/base_link.stl" /> + </geometry> + <material + name=""> + <color + rgba="0.96078 1 0 1" /> + </material> + </visual> + <collision> + <origin + xyz="0 0 0" + rpy="0 0 0" /> + <geometry> + <mesh + filename="package://example-robot-data/robots/double_pendulum_description/meshes/base_link.stl" /> + </geometry> + </collision> + </link> + <link + name="link1"> + <inertial> + <origin + xyz="0.0086107 2.1727E-06 0.036012" + rpy="0 0 0" /> + <mass + value="0.26703" /> + <inertia + ixx="0.00040827" + ixy="1.2675E-09" + ixz="1.8738E-05" + iyy="0.00038791" + iyz="3.5443E-08" + izz="3.6421E-05" /> + </inertial> + <visual> + <origin + xyz="0 0 0" + rpy="0 0 0" /> + <geometry> + <mesh + filename="package://example-robot-data/robots/double_pendulum_description/meshes/link1.stl" /> + </geometry> + <material + name=""> + <color + rgba="0.64706 0.61961 0.58824 1" /> + </material> + </visual> + <collision> + <origin + xyz="0 0 0" + rpy="0 0 0" /> + <geometry> + <mesh + filename="package://example-robot-data/robots/double_pendulum_description/meshes/link1.stl" /> + </geometry> + </collision> + </link> + <joint + name="joint1" + type="continuous"> + <origin + xyz="0.0060872 0 0.035" + rpy="0 0 0" /> + <parent + link="base_link" /> + <child + link="link1" /> + <axis + xyz="1 0 0" /> + <limit + lower="0" + upper="0" + effort="0" + velocity="0" /> + <dynamics + damping="0.05" /> + </joint> + <link + name="link2"> + <inertial> + <origin + xyz="-0.0050107 1.9371E-10 0.10088" + rpy="0 0 0" /> + <mass + value="0.33238" /> + <inertia + ixx="0.0011753" + ixy="-3.854E-13" + ixz="-2.9304E-08" + iyy="0.0011666" + iyz="-5.2365E-12" + izz="1.4553E-05" /> + </inertial> + <visual> + <origin + xyz="0 0 0" + rpy="0 0 0" /> + <geometry> + <mesh + filename="package://example-robot-data/robots/double_pendulum_description/meshes/link2.stl" /> + </geometry> + <material + name=""> + <color + rgba="0.64706 0.61961 0.58824 1" /> + </material> + </visual> + <collision> + <origin + xyz="0 0 0" + rpy="0 0 0" /> + <geometry> + <mesh + filename="package://example-robot-data/robots/double_pendulum_description/meshes/link2.stl" /> + </geometry> + </collision> + </link> + <joint + name="joint2" + type="continuous"> + <origin + xyz="0.023 0 0.1" + rpy="0 0 0" /> + <parent + link="link1" /> + <child + link="link2" /> + <axis + xyz="1 0 0" /> + <limit + lower="0" + upper="0" + effort="0" + velocity="0" /> + <dynamics + damping="0.05" /> + </joint> +</robot> diff --git a/unittest/test_load.py b/unittest/test_load.py index 233d5bf..7069931 100755 --- a/unittest/test_load.py +++ b/unittest/test_load.py @@ -53,6 +53,9 @@ class RobotTestCase(unittest.TestCase): def test_double_pendulum(self): self.check('double_pendulum', 2, 2) + def test_double_pendulum_continuous(self): + self.check('double_pendulum_continuous', 4, 2) + def test_hector(self): self.check('hector', 7, 6) -- GitLab