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