Hekateros  3.4.3
RoadNarrows Robotics Robot Arm Project
hekProdArm5LBeta.cxx
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Package: Hekateros
4 //
5 // Library: libhekateros
6 //
7 // File: hekProd5LBeta.cxx
8 //
9 /*! \file
10  *
11  * $LastChangedDate: 2014-09-18 16:53:49 -0600 (Thu, 18 Sep 2014) $
12  * $Rev: 3748 $
13  *
14  * \brief Hekateros 5 DoF long beta robotic arm static specification.
15  *
16  * \author Robin Knight (robin.knight@roadnarrows.com)
17  * \author Daniel Packard (daniel@roadnarrows.com)
18  * \author Rob Shiely (rob@roadnarrows.com)
19  *
20  * \copyright
21  * \h_copy 2012-2017. RoadNarrows LLC.\n
22  * http://www.roadnarrows.com\n
23  * All Rights Reserved
24  */
25 /*
26  * @EulaBegin@
27  *
28  * Unless otherwise stated explicitly, all materials contained are copyrighted
29  * and may not be used without RoadNarrows LLC's written consent,
30  * except as provided in these terms and conditions or in the copyright
31  * notice (documents and software) or other proprietary notice provided with
32  * the relevant materials.
33  *
34  * IN NO EVENT SHALL THE AUTHOR, ROADNARROWS LLC, OR ANY
35  * MEMBERS/EMPLOYEES/CONTRACTORS OF ROADNARROWS OR DISTRIBUTORS OF THIS SOFTWARE
36  * BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
37  * CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
38  * DOCUMENTATION, EVEN IF THE AUTHORS OR ANY OF THE ABOVE PARTIES HAVE BEEN
39  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40  *
41  * THE AUTHORS AND ROADNARROWS LLC SPECIFICALLY DISCLAIM ANY WARRANTIES,
42  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
43  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN
44  * "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO
45  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
46  *
47  * @EulaEnd@
48  */
49 ////////////////////////////////////////////////////////////////////////////////
50 
51 #include "Dynamixel/Dynamixel.h"
52 
53 #include "Hekateros/hekateros.h"
54 #include "Hekateros/hekOptical.h"
55 #include "Hekateros/hekSpec.h"
57 
58 
59 using namespace std;
60 using namespace hekateros;
61 
62 /*!
63  * \brief Specification of links.
64  *
65  * \par Data:
66  * name,\n
67  * length(mm)
68  *
69  * TODO
70  */
71 const HekSpecLink_T
72  hekateros::HekProdArm5LBetaSpecLinks[HekProdArm5LBetaNumLinks] =
73 {
74  // fixed footprint base to base
75  { "base_fixed",
76  0.0
77  },
78 
79  // base to upper arm
80  { "base",
81  0.0
82  },
83 
84  // upper arm to forearm
85  { "upper_arm",
86  406.27
87  },
88 
89  // forearm to wrist
90  { "forearm",
91  401.6
92  },
93 
94  // wrist to end effector zero point
95  { "tool_zero",
96  0.0
97  }
98 };
99 
100 /*!
101  * \brief Specification of joints.
102  *
103  * \par Data:
104  * joint_name,\n
105  * master_servo_id, slave_servo_id, joint_type, gear_ratio,\n
106  * min_phy_limit(deg), max_phy_limit(deg), limit_types,\n
107  * {
108  * {io_bit_0,
109  * min_edge_pos(deg), min_black_pos(deg),
110  * center_pos(deg),
111  * max_black_pos(deg), max_edge_pos(deg)
112  * },
113  * {io_bit_1,
114  * min_edge_pos(deg), min_black_pos(deg),
115  * center_pos(deg),
116  * max_black_pos(deg), max_edge_pos(deg)
117  * },
118  * calib_pos(deg), balanced_pos(deg), park_pos(deg)\n
119  * parent_link_idx, child_link_index
120  */
121 const HekSpecJoint_T
122  hekateros::HekProdArm5LBetaSpecJoints[HekProdArm5LBetaDoF] =
123 {
124  { "base_rot",
125  HekServoIdBase, DYNA_ID_NONE, HekJointTypeContinuous, 2.35,
126  0.0, 0.0, HekLimitTypeNone,
127  {
128  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 },
129  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 }
130  },
131  0.0, 0.0, 0.0,
132  0, 1
133  },
134  { "shoulder",
135  HekServoIdShoulderL, HekServoIdShoulderR, HekJointTypeRevolute, 2.0,
136  -80.0, 122.0, HekLimitTypeNone,
137  {
138  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 },
139  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 }
140  },
141  0.0, -30.0, -80.0,
142  1, 2
143  },
144  { "elbow",
145  HekServoIdElbow, DYNA_ID_NONE, HekJointTypeRevolute, 4.0,
146  -130.0, 130.0, HekLimitTypePhys,
147  {
148  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 },
149  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 }
150  },
151  0.0, 120.0, 130.0,
152  2, 3
153  },
154  { "wrist_pitch",
155  HekServoIdWristPitch, DYNA_ID_NONE, HekJointTypeRevolute, 1.5,
156  -110.0, 110.0, HekLimitTypePhys,
157  {
158  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 },
159  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 }
160  },
161  0.0, 0.0, 50.0,
162  3, 4
163  },
164  { "wrist_rot",
165  HekServoIdWristRot, DYNA_ID_NONE, HekJointTypeContinuous, 1.5,
166  0.0, 0.0, HekLimitTypeNone,
167  {
168  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 },
169  { HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 }
170  },
171  0.0, 0.0, 0.0,
172  3, 4
173  }
174 };
175 
176 /*!
177  * \brief Specification of servos.
178  *
179  * \par Data:
180  * servo_id, is_master, is_continuous, dir toque_limit(% of max)
181  */
182 const HekSpecServo_T
183  hekateros::HekProdArm5LBetaSpecServos[HekProdArm5LBetaNumServos] =
184 {
185  {HekServoIdBase, true, true, DYNA_DIR_CCW, 80.0},
186  {HekServoIdShoulderL, true, true, DYNA_DIR_CW, 80.0},
187  {HekServoIdShoulderR, false, true, DYNA_DIR_CCW, 80.0},
188  {HekServoIdElbow, true, true, DYNA_DIR_CW, 80.0},
189  {HekServoIdWristPitch, true, true, DYNA_DIR_CCW, 80.0},
190  {HekServoIdWristRot, true, true, DYNA_DIR_CW, 80.0}
191 };
const HekSpecJoint_T HekProdArm5LBetaSpecJoints[]
Specification of joints.
const HekSpecLink_T HekProdArm5LBetaSpecLinks[]
Specification of links.
<b><i>Hekateros</i></b> optical limit switches.
Hekateros 5 DoF long beta robotic arm static specification.
Top-level package include file.
<b><i>Hekateros</i></b> product specification base classes.
Robotic joint specification.
Definition: hekSpec.h:139
Robotic servo specification.
Definition: hekSpec.h:199
const HekSpecServo_T HekProdArm5LBetaSpecServos[]
Specification of servos.
The <b><i>Hekateros</i></b> namespace encapsulates all <b><i>Hekateros</i></b> related constructs...
Definition: hekateros.h:56