Skip to content

Commit 2c652a0

Browse files
committed
Adding a URDF for the AL5D robot
1 parent d3ea79a commit 2c652a0

File tree

13 files changed

+185
-0
lines changed

13 files changed

+185
-0
lines changed

roboticstoolbox/models/URDF/AL5D.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/usr/bin/env python
2+
3+
import numpy as np
4+
from roboticstoolbox.robot.ERobot import ERobot
5+
from math import pi
6+
7+
8+
class AL5D(ERobot):
9+
"""
10+
Class that imports a Puma 560 URDF model
11+
12+
``Puma560()`` is a class which imports a Unimation Puma560 robot definition
13+
from a URDF file. The model describes its kinematic and graphical
14+
characteristics.
15+
16+
.. runblock:: pycon
17+
18+
>>> import roboticstoolbox as rtb
19+
>>> robot = rtb.models.URDF.AL5D()
20+
>>> print(robot)
21+
22+
Defined joint configurations are:
23+
24+
- qz, zero joint angle configuration, 'L' shaped configuration
25+
- qr, vertical 'READY' configuration
26+
- qs, arm is stretched out in the x-direction
27+
- qn, arm is at a nominal non-singular configuration
28+
29+
.. warning:: This file has been modified so that the zero-angle pose is the
30+
same as the DH model in the toolbox. ``j3`` rotation is changed from
31+
-𝜋/2 to 𝜋/2. Dimensions are also slightly different. Both models
32+
include the pedestal height.
33+
34+
.. note:: The original file is from https://github.com/nimasarli/puma560_description/blob/master/urdf/puma560_robot.urdf.xacro
35+
36+
.. codeauthor:: Tassos Natsakis
37+
"""
38+
39+
def __init__(self):
40+
41+
links, name, urdf_string, urdf_filepath = self.URDF_read(
42+
"al5d_description/urdf/al5d_robot.urdf"
43+
)
44+
45+
super().__init__(
46+
links,
47+
name=name,
48+
urdf_string=urdf_string,
49+
urdf_filepath=urdf_filepath,
50+
)
51+
52+
self.manufacturer = "Lynxmotion"
53+
# self.ee_link = self.ets[9]
54+
55+
# zero angles, upper arm horizontal, lower up straight ahead
56+
self.addconfiguration("qz", np.array([0, 0, 0, 0]))
57+
58+
# reference pose, arm to the right, elbow up
59+
self.addconfiguration("ru", np.array([0.0000, 0.0000, 1.5707, 0.0000]))
60+
61+
if __name__ == "__main__": # pragma nocover
62+
63+
robot = AL5D()
64+
print(robot)

roboticstoolbox/models/URDF/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from roboticstoolbox.models.URDF.LBR import LBR
2020
from roboticstoolbox.models.URDF.KinovaGen3 import KinovaGen3
2121
from roboticstoolbox.models.URDF.YuMi import YuMi
22+
from roboticstoolbox.models.URDF.AL5D import AL5D
2223

2324
__all__ = [
2425
"Panda",
@@ -42,4 +43,5 @@
4243
"LBR",
4344
"KinovaGen3",
4445
"YuMi",
46+
"AL5D",
4547
]
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
<?xml version="1.0" ?>
2+
<!-- =================================================================================== -->
3+
<!-- | This document was autogenerated by xacro from al5d_robot.urdf.xacro | -->
4+
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
5+
<!-- =================================================================================== -->
6+
<robot name="AL5D" xmlns:xacro="http://www.ros.org/wiki/xacro">
7+
<material name="gray">
8+
<color rgba="0.8 0.8 0.8 0.9"/>
9+
</material>
10+
<material name="black">
11+
<color rgba="0.3 0.3 0.3 0.9"/>
12+
</material>
13+
14+
<link name="base">
15+
<visual>
16+
<geometry>
17+
<mesh filename="package://al5d_description/meshes/base.stl" scale="0.001 0.001 0.001"/>
18+
</geometry>
19+
<origin rpy="0 0 0"/>
20+
<material name="black"/>
21+
</visual>
22+
<inertial>
23+
<mass value="0.092"/>
24+
<inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
25+
</inertial>
26+
</link>
27+
28+
<link name="link1">
29+
<visual>
30+
<geometry>
31+
<mesh filename="package://al5d_description/meshes/link1.stl" scale="0.001 0.001 0.001"/>
32+
</geometry>
33+
<origin rpy="0 0 0" xyz="0 0 0"/>
34+
<material name="black"/>
35+
</visual>
36+
<inertial>
37+
<mass value="0.187"/>
38+
<inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
39+
</inertial>
40+
</link>
41+
42+
<link name="link2">
43+
<visual>
44+
<geometry>
45+
<mesh filename="package://al5d_description/meshes/link2.stl" scale="0.001 0.001 0.001"/>
46+
</geometry>
47+
<origin xyz="0 0 0"/>
48+
<material name="gray"/>
49+
</visual>
50+
<inertial>
51+
<mass value="0.044"/>
52+
<inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
53+
</inertial>
54+
</link>
55+
56+
<link name="link3">
57+
<visual>
58+
<geometry>
59+
<mesh filename="package://al5d_description/meshes/link3.stl" scale="0.001 0.001 0.001"/>
60+
</geometry>
61+
<origin rpy="0 0 -0.0427" xyz="0 0 0"/>
62+
<material name="gray"/>
63+
</visual>
64+
<inertial>
65+
<mass value="0.207"/>
66+
<inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
67+
</inertial>
68+
</link>
69+
70+
<link name="link4">
71+
<visual>
72+
<geometry>
73+
<mesh filename="package://al5d_description/meshes/link4.stl" scale="0.001 0.001 0.001"/>
74+
</geometry>
75+
<origin rpy="0 0 1.528096327" xyz="0 0 0"/>
76+
<material name="black"/>
77+
</visual>
78+
<inertial>
79+
<mass value="0.081"/>
80+
<inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0"/>
81+
</inertial>
82+
</link>
83+
84+
<joint name="j1" type="revolute">
85+
<parent link="base"/>
86+
<child link="link1"/>
87+
<origin rpy="0 3.141592653 0" xyz="0 0 0.06858"/>
88+
<axis xyz="0 0 1"/>
89+
<!-- This is descibed in child frame -->
90+
<limit effort="1000.0" lower="-1.570796325" upper="1.570796325" velocity="0"/>
91+
</joint>
92+
93+
<joint name="j2" type="revolute">
94+
<parent link="link1"/>
95+
<child link="link2"/>
96+
<origin rpy="0 1.570796325 -1.570796325" xyz="0.002 0 0"/>
97+
<axis xyz="0 0 1"/>
98+
<!-- This is descibed in child frame -->
99+
<limit effort="1000.0" lower="-1.570796325" upper="1.570796325" velocity="0"/>
100+
</joint>
101+
102+
<joint name="j3" type="revolute">
103+
<parent link="link2"/>
104+
<child link="link3"/>
105+
<origin rpy="0 3.141592653 1.570796325" xyz="0.14679 0 0"/>
106+
<axis xyz="0 0 1"/>
107+
<!-- This is descibed in child frame -->
108+
<limit effort="1000.0" lower="-1.570796325" upper="1.570796325" velocity="0"/>
109+
</joint>
110+
111+
<joint name="j4" type="revolute">
112+
<parent link="link3"/>
113+
<child link="link4"/>
114+
<origin rpy="3.141592653 0 1.570796325" xyz="0.17751 0 0"/>
115+
<axis xyz="0 0 1"/>
116+
<limit effort="1000.0" lower="-1.570796325" upper="1.570796325" velocity="0"/>
117+
</joint>
118+
</robot>
119+

0 commit comments

Comments
 (0)