Dynamixel  2.9.5
RoadNarrows Robotics Dynamixel Package
MX.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Package: Dynamixel
4 //
5 // Library: librnr_dynamixel
6 //
7 // File: MX.h
8 //
9 /*! \file
10  *
11  * $LastChangedDate: 2015-03-13 13:28:02 -0600 (Fri, 13 Mar 2015) $
12  * $Rev: 3890 $
13  *
14  * \ingroup dyna_lib_hdrs
15  *
16  * \brief RoadNarrows MX Series Dynamixel Declarations.
17  *
18  * \note Only deltas from base values found in Dynamixel.h are defined here.
19  *
20  * \author Robin Knight (robin.knight@roadnarrows.com)
21  *
22  * \copyright
23  * \h_copy 2011-2017. RoadNarrows LLC.\n
24  * http://www.roadnarrows.com\n
25  * All Rights Reserved
26  */
27 /*
28  * @EulaBegin@
29  *
30  * Unless otherwise stated explicitly, all materials contained are copyrighted
31  * and may not be used without RoadNarrows LLC's written consent,
32  * except as provided in these terms and conditions or in the copyright
33  * notice (documents and software) or other proprietary notice provided with
34  * the relevant materials.
35  *
36  * IN NO EVENT SHALL THE AUTHOR, ROADNARROWS LLC, OR ANY
37  * MEMBERS/EMPLOYEES/CONTRACTORS OF ROADNARROWS OR DISTRIBUTORS OF THIS SOFTWARE
38  * BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
39  * CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
40  * DOCUMENTATION, EVEN IF THE AUTHORS OR ANY OF THE ABOVE PARTIES HAVE BEEN
41  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42  *
43  * THE AUTHORS AND ROADNARROWS LLC SPECIFICALLY DISCLAIM ANY WARRANTIES,
44  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
45  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN
46  * "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO
47  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
48  *
49  * @EulaEnd@
50  */
51 ////////////////////////////////////////////////////////////////////////////////
52 
53 #ifndef _MX_H
54 #define _MX_H
55 
56 #include "rnr/rnrconfig.h"
57 
58 #include "Dynamixel/Dynamixel.h"
59 
60 #ifndef SWIG
61 C_DECLS_BEGIN
62 #endif // SWIG
63 
64 // ---------------------------------------------------------------------------
65 // MX Models and Specifications
66 // ---------------------------------------------------------------------------
67 
68 /*!
69  * \addtogroup dyna_servo_model_num
70  *
71  * \{
72  */
73 #define DYNA_MODEL_NUM_MX12W 0x0168 ///< MX-12W
74 #define DYNA_MODEL_NUM_MX28 0x001d ///< MX-28
75 #define DYNA_MODEL_NUM_MX64 0x0136 ///< MX-64T, MX-64R
76 #define DYNA_MODEL_NUM_MX106 0x0140 ///< MX-106T, MX-106R
77 /*! \} */
78 
79 
80 // ---------------------------------------------------------------------------
81 // MX-12W
82 // ---------------------------------------------------------------------------
83 
84 /*!
85  * \ingroup dyna_spec
86  * \defgroup dyan_spec_mx12w MX-12W Specification
87  *
88  * \{
89  */
90 #define DYNA_MX12W_SPEC_WEIGHT_G 54.6 ///< weight (grams)
91 #define DYNA_MX12W_SPEC_WIDTH_MM 32.0 ///< width (mm)
92 #define DYNA_MX12W_SPEC_HEIGHT_MM 50.0 ///< height (mm)
93 #define DYNA_MX12W_SPEC_DEPTH_MM 40.0 ///< depth (mm)
94 
95 #define DYNA_MX12W_SPEC_POS_RES_DEG 0.088 ///< resolution (degrees)
96 #define DYNA_MX12W_SPEC_GEAR_RATIO 32.0 ///< gear reduction ratio : 1
97 
98 #define DYNA_MX12W_SPEC_STALL_TORQUE_KGF 10.0
99  ///< maximum stall torque (kgf) at optimal power (RDK unknown as yet)
100 
101 #define DYNA_MX12W_SPEC_MAX_SPEED_RPM 470.0
102  ///< maximum no-load speed (rpm) at optimal power
103 
104 #define DYNA_MX12W_SPEC_ANGLE_MIN_DEG 0.0
105  ///< minimum rotation angle in servo mode (deg)
106 
107 #define DYNA_MX12W_SPEC_ANGLE_MAX_DEG 360.0
108  ///< maximum rotation angle in servo mode (deg)
109 
110 #define DYNA_MX12W_MODE_MULTI_TURN 0x04
111  ///< multi-turn mode
112 
113 #define DYNA_MX12W_SPEC_MODES (DYNA_MODE_SERVO|DYNA_MODE_CONTINUOUS)
114  ///< supported modes (see \ref dyna_servo_mode)
115 
116 #define DYNA_MX12W_SPEC_HAS_360_POS true
117  ///< servo does provide 360\h_deg position data
118 
119 #define DYNA_MX12W_SPEC_TEMP_MIN_C (-5.0)
120  ///< minimum recommended operational temperature (C)
121 
122 #define DYNA_MX12W_SPEC_TEMP_MAX_C 80.0
123  ///< maximum recommended operational temperature (C)
124 
125 #define DYNA_MX12W_SPEC_VOLT_MIN_V 10.0
126  ///< minimum operational voltage (V)
127 
128 #define DYNA_MX12W_SPEC_VOLT_MAX_V 14.8
129  ///< maximum operational voltage (V)
130 
131 #define DYNA_MX12W_SPEC_CTL_METHOD DYNA_CTL_METHOD_PID
132  ///< position control method (see \ref dyna_ctl_method)
133 /*! \} */
134 
135 
136 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
137 // MX-12W Common Parameters
138 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
139 
140 /*!
141  * \ingroup dyna_common
142  * \defgroup dyna_common_mx12w MX-12W Parameters
143  *
144  * \{
145  */
146 /*! \} */
147 
148 /*!
149  * \ingroup dyna_common_mx12w
150  * \defgroup dyna_common_mx12w_pos MX-12W Position Common Parameters
151  *
152  * \{
153  */
154 #define DYNA_MX12W_POS_MASK 0x0fff ///< valid data mask
155 #define DYNA_MX12W_POS_MIN_RAW 0 ///< minimum raw angular position
156 #define DYNA_MX12W_POS_MAX_RAW 4095 ///< maximum raw angular position
157 #define DYNA_MX12W_POS_MODULO (DYNA_MX12W_POS_MAX_RAW+1)
158  ///< servo position modulo [0-max]
159 #define DYNA_MX12W_POS_MIN_DEG 0.0 ///< minimum angular position
160 #define DYNA_MX12W_POS_MAX_DEG 360.0
161  ///< maximum angular position
162 #define DYNA_MX12W_POS_RES_DEG \
163  ((double)DYNA_MX12W_POS_MAX_DEG/(double)DYNA_MX12W_POS_MAX_RAW)
164  ///< 0.088\h_deg (servo mode) resolution
165 /*! \} */
166 
167 /*!
168  * \ingroup dyna_common_gen
169  * \defgroup dyna_servo_speed Dynamixel Angular Speed Common Values
170  *
171  * \{
172  */
173 #define DYNA_MX12W_SPEED_RES_RPM 0.114 ///< rpm (servo mode) resolution
174 /*! \} */
175 
176 
177 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
178 // MX-28 Servo Control Table
179 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
180 
181 /*!
182  * \ingroup dyna_memmap
183  * \defgroup dyna_memmap_mx28 MX-28 Control Table Memory Map
184  *
185  * \{
186  */
187 /*! \} */
188 
189 
190 // . . . . . . . . . . . . . . . . . . .
191 // EEPROM. All values are read/write (RW) unless otherwise noted.
192 // . . . . . . . . . . . . . . . . . . .
193 
194 /*!
195  * \ingroup dyna_memmap_mx28
196  * \defgroup dyna_memmap_mx28_lim_cw EEPROM Clockwise Angle Limit.
197  *
198  * Minimum angle (goal position) limit.
199  *
200  * \sa \ref dyna_ex_servo_pos for valid values.
201  *
202  * \par Mode: RW
203  * \{
204  */
205 #define DYNA_MX28_ADDR_LIM_CW_MASK 0x0fff ///< valid data mask
206 /*! \} */
207 
208 /*!
209  * \ingroup dyna_memmap_mx28
210  * \defgroup dyna_memmap_mx28_lim_ccw EEPROM Counterclockwise Angle Limit.
211  *
212  * Maximum angle (goal position) limit.
213  *
214  * \sa \ref dyna_ex_servo_pos for valid values.
215  *
216  * \par Mode: RW
217  * \{
218  */
219 #define DYNA_MX28_ADDR_LIM_CCW_MASK 0x0fff ///< valid data mask
220 /*! \} */
221 
222 
223 // . . . . . . . . . . . . . . . . . . .
224 // RAM. All values are read/write (RW) unless otherwise noted.
225 // . . . . . . . . . . . . . . . . . . .
226 
227 /*!
228  * \ingroup dyna_memmap_mx28
229  * \defgroup dyna_memmap_mx28_goal_pos RAM Goal Position
230  *
231  * Move to new goal position. The servo will move at the current goal speed
232  * under the current torque limit. These fields are ignored in continuous mode.
233  *
234  * \sa \ref dyna_ex_servo_pos for valid values.
235  *
236  * \par Mode: RW
237  *
238  * \{
239  */
240 #define DYNA_MX28_ADDR_GOAL_POS_MASK 0x0fff ///< valid data mask
241 /*! \} */
242 
243 /*!
244  * \ingroup dyna_memmap_mx28
245  * \defgroup dyna_memmap_mx28_cur_pos RAM Current Position
246  *
247  * Current servo position. These fields are invalid in continuous mode.
248  *
249  * \sa \ref dyna_ex_servo_pos for valid values.
250  *
251  * \par Mode: R
252  *
253  * \{
254  */
255 #define DYNA_MX28_ADDR_CUR_POS_MASK 0x0fff ///< valid data mask
256 /*! \} */
257 
258 
259 // ---------------------------------------------------------------------------
260 // MX-28
261 // ---------------------------------------------------------------------------
262 
263 /*!
264  * \ingroup dyna_spec
265  * \defgroup dyan_spec_mx28 MX-28 Specification
266  *
267  * \{
268  */
269 #define DYNA_MX28_SPEC_WEIGHT_G 72.0 ///< weight (grams)
270 #define DYNA_MX28_SPEC_WIDTH_MM 35.6 ///< width (mm)
271 #define DYNA_MX28_SPEC_HEIGHT_MM 50.6 ///< height (mm)
272 #define DYNA_MX28_SPEC_DEPTH_MM 35.5 ///< depth (mm)
273 
274 #define DYNA_MX28_SPEC_POS_RES_DEG 0.088 ///< resolution (degrees)
275 #define DYNA_MX28_SPEC_GEAR_RATIO 193.0 ///< gear reduction ratio : 1
276 
277 #define DYNA_MX28_SPEC_STALL_TORQUE_KGF 24.0
278  ///< maximum stall torque (kgf) at optimal power
279 
280 #define DYNA_MX28_SPEC_MAX_SPEED_RPM 55.0
281  ///< maximum no-load speed (rpm) at optimal power
282 
283 #define DYNA_MX28_SPEC_ANGLE_MIN_DEG 0.0
284  ///< minimum rotation angle in servo mode (deg)
285 
286 #define DYNA_MX28_SPEC_ANGLE_MAX_DEG 360.0
287  ///< maximum rotation angle in servo mode (deg)
288 
289 #define DYNA_MX28_SPEC_MODES (DYNA_MODE_SERVO|DYNA_MODE_CONTINUOUS)
290  ///< supported modes (see \ref dyna_servo_mode)
291 
292 #define DYNA_MX28_SPEC_HAS_360_POS true
293  ///< servo does provide 360\h_deg position data
294 
295 #define DYNA_MX28_SPEC_TEMP_MIN_C (-5.0)
296  ///< minimum recommended operational temperature (C)
297 
298 #define DYNA_MX28_SPEC_TEMP_MAX_C 80.0
299  ///< maximum recommended operational temperature (C)
300 
301 #define DYNA_MX28_SPEC_VOLT_MIN_V 9.0
302  ///< minimum operational voltage (V)
303 
304 #define DYNA_MX28_SPEC_VOLT_MAX_V 16.8
305  ///< maximum operational voltage (V)
306 
307 #define DYNA_MX28_SPEC_CTL_METHOD DYNA_CTL_METHOD_PID
308  ///< position control method (see \ref dyna_ctl_method)
309 /*! \} */
310 
311 
312 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
313 // MX-28 Common Parameters
314 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
315 
316 /*!
317  * \ingroup dyna_common
318  * \defgroup dyna_common_mx28 MX-28 Parameters
319  *
320  * \{
321  */
322 /*! \} */
323 
324 /*!
325  * \ingroup dyna_common_mx28
326  * \defgroup dyna_common_mx28_pos MX-28 Position Common Parameters
327  *
328  * \{
329  */
330 #define DYNA_MX28_POS_MASK 0x0fff ///< valid data mask
331 #define DYNA_MX28_POS_MIN_RAW 0 ///< minimum raw angular position
332 #define DYNA_MX28_POS_MAX_RAW 4095 ///< maximum raw angular position
333 #define DYNA_MX28_POS_MODULO (DYNA_MX28_POS_MAX_RAW+1)
334  ///< servo position modulo [0-max]
335 #define DYNA_MX28_POS_MIN_DEG 0.0 ///< minimum angular position
336 #define DYNA_MX28_POS_MAX_DEG 360.0
337  ///< maximum angular position
338 #define DYNA_MX28_POS_RES_DEG \
339  ((double)DYNA_MX28_POS_MAX_DEG/(double)DYNA_MX28_POS_MAX_RAW)
340  ///< 0.088\h_deg (servo mode) resolution
341 /*! \} */
342 
343 /*!
344  * \ingroup dyna_common_gen
345  * \defgroup dyna_servo_speed Dynamixel Angular Speed Common Values
346  *
347  * \{
348  */
349 #define DYNA_MX28_SPEED_RES_RPM 0.114 ///< rpm (servo mode) resolution
350 /*! \} */
351 
352 
353 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
354 // MX-28 Servo Control Table
355 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
356 
357 /*!
358  * \ingroup dyna_memmap
359  * \defgroup dyna_memmap_mx28 MX-28 Control Table Memory Map
360  *
361  * \{
362  */
363 /*! \} */
364 
365 
366 // . . . . . . . . . . . . . . . . . . .
367 // EEPROM. All values are read/write (RW) unless otherwise noted.
368 // . . . . . . . . . . . . . . . . . . .
369 
370 /*!
371  * \ingroup dyna_memmap_mx28
372  * \defgroup dyna_memmap_mx28_lim_cw EEPROM Clockwise Angle Limit.
373  *
374  * Minimum angle (goal position) limit.
375  *
376  * \sa \ref dyna_ex_servo_pos for valid values.
377  *
378  * \par Mode: RW
379  * \{
380  */
381 #define DYNA_MX28_ADDR_LIM_CW_MASK 0x0fff ///< valid data mask
382 /*! \} */
383 
384 /*!
385  * \ingroup dyna_memmap_mx28
386  * \defgroup dyna_memmap_mx28_lim_ccw EEPROM Counterclockwise Angle Limit.
387  *
388  * Maximum angle (goal position) limit.
389  *
390  * \sa \ref dyna_ex_servo_pos for valid values.
391  *
392  * \par Mode: RW
393  * \{
394  */
395 #define DYNA_MX28_ADDR_LIM_CCW_MASK 0x0fff ///< valid data mask
396 /*! \} */
397 
398 
399 // . . . . . . . . . . . . . . . . . . .
400 // RAM. All values are read/write (RW) unless otherwise noted.
401 // . . . . . . . . . . . . . . . . . . .
402 
403 /*!
404  * \ingroup dyna_memmap_mx28
405  * \defgroup dyna_memmap_mx28_goal_pos RAM Goal Position
406  *
407  * Move to new goal position. The servo will move at the current goal speed
408  * under the current torque limit. These fields are ignored in continuous mode.
409  *
410  * \sa \ref dyna_ex_servo_pos for valid values.
411  *
412  * \par Mode: RW
413  *
414  * \{
415  */
416 #define DYNA_MX28_ADDR_GOAL_POS_MASK 0x0fff ///< valid data mask
417 /*! \} */
418 
419 /*!
420  * \ingroup dyna_memmap_mx28
421  * \defgroup dyna_memmap_mx28_cur_pos RAM Current Position
422  *
423  * Current servo position. These fields are invalid in continuous mode.
424  *
425  * \sa \ref dyna_ex_servo_pos for valid values.
426  *
427  * \par Mode: R
428  *
429  * \{
430  */
431 #define DYNA_MX28_ADDR_CUR_POS_MASK 0x0fff ///< valid data mask
432 /*! \} */
433 
434 
435 // ---------------------------------------------------------------------------
436 // MX-64
437 // ---------------------------------------------------------------------------
438 
439 /*!
440  * \ingroup dyna_spec
441  * \defgroup dyan_spec_mx28 MX-64 Specification
442  *
443  * \{
444  */
445 #define DYNA_MX64_SPEC_WEIGHT_G 126.0 ///< weight (grams)
446 #define DYNA_MX64_SPEC_WIDTH_MM 40.2 ///< width (mm)
447 #define DYNA_MX64_SPEC_HEIGHT_MM 61.1 ///< height (mm)
448 #define DYNA_MX64_SPEC_DEPTH_MM 41.0 ///< depth (mm)
449 
450 #define DYNA_MX64_SPEC_POS_RES_DEG 0.088 ///< resolution (degrees)
451 #define DYNA_MX64_SPEC_GEAR_RATIO 200.0 ///< gear reduction ratio : 1
452 
453 #define DYNA_MX64_SPEC_STALL_TORQUE_KGF 74.4
454  ///< maximum stall torque (kgf-cm) at optimal power
455 
456 #define DYNA_MX64_SPEC_MAX_SPEED_RPM 78.0
457  ///< maximum no-load speed (rpm) at optimal power
458 
459 #define DYNA_MX64_SPEC_ANGLE_MIN_DEG 0.0
460  ///< minimum rotation angle in servo mode (deg)
461 
462 #define DYNA_MX64_SPEC_ANGLE_MAX_DEG 360.0
463  ///< maximum rotation angle in servo mode (deg)
464 
465 #define DYNA_MX64_SPEC_MODES (DYNA_MODE_SERVO|DYNA_MODE_CONTINUOUS)
466  ///< supported modes (see \ref dyna_servo_mode)
467 
468 #define DYNA_MX64_SPEC_HAS_360_POS true
469  ///< servo does provide 360\h_deg position data
470 
471 #define DYNA_MX64_SPEC_TEMP_MIN_C (-5.0)
472  ///< minimum recommended operational temperature (C)
473 
474 #define DYNA_MX64_SPEC_TEMP_MAX_C 80.0
475  ///< maximum recommended operational temperature (C)
476 
477 #define DYNA_MX64_SPEC_VOLT_MIN_V 10.0
478  ///< minimum operational voltage (V)
479 
480 #define DYNA_MX64_SPEC_VOLT_MAX_V 14.8
481  ///< maximum operational voltage (V)
482 
483 #define DYNA_MX64_SPEC_CTL_METHOD DYNA_CTL_METHOD_PID
484  ///< position control method (see \ref dyna_ctl_method)
485 /*! \} */
486 
487 
488 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
489 // MX-64 Common Parameters
490 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
491 
492 /*!
493  * \ingroup dyna_common
494  * \defgroup dyna_common_mx28 MX-64 Parameters
495  *
496  * \{
497  */
498 /*! \} */
499 
500 /*!
501  * \ingroup dyna_common_mx28
502  * \defgroup dyna_common_mx28_pos MX-64 Position Common Parameters
503  *
504  * \{
505  */
506 #define DYNA_MX64_POS_MASK 0x0fff ///< valid data mask
507 #define DYNA_MX64_POS_MIN_RAW 0 ///< minimum raw angular position
508 #define DYNA_MX64_POS_MAX_RAW 4095 ///< maximum raw angular position
509 #define DYNA_MX64_POS_MODULO (DYNA_MX64_POS_MAX_RAW+1)
510  ///< servo position modulo [0-max]
511 #define DYNA_MX64_POS_MIN_DEG 0.0 ///< minimum angular position
512 #define DYNA_MX64_POS_MAX_DEG 360.0
513  ///< maximum angular position
514 #define DYNA_MX64_POS_RES_DEG \
515  ((double)DYNA_MX64_POS_MAX_DEG/(double)DYNA_MX64_POS_MAX_RAW)
516  ///< 0.088\h_deg (servo mode) resolution
517 /*! \} */
518 
519 /*!
520  * \ingroup dyna_common_gen
521  * \defgroup dyna_servo_speed Dynamixel Angular Speed Common Values
522  *
523  * \{
524  */
525 #define DYNA_MX64_SPEED_RES_RPM 0.114 ///< rpm (servo mode) resolution
526 /*! \} */
527 
528 
529 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
530 // MX-64 Servo Control Table
531 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
532 
533 /*!
534  * \ingroup dyna_memmap
535  * \defgroup dyna_memmap_mx28 MX-64 Control Table Memory Map
536  *
537  * \{
538  */
539 /*! \} */
540 
541 
542 // . . . . . . . . . . . . . . . . . . .
543 // EEPROM. All values are read/write (RW) unless otherwise noted.
544 // . . . . . . . . . . . . . . . . . . .
545 
546 /*!
547  * \ingroup dyna_memmap_mx28
548  * \defgroup dyna_memmap_mx28_lim_cw EEPROM Clockwise Angle Limit.
549  *
550  * Minimum angle (goal position) limit.
551  *
552  * \sa \ref dyna_ex_servo_pos for valid values.
553  *
554  * \par Mode: RW
555  * \{
556  */
557 #define DYNA_MX64_ADDR_LIM_CW_MASK 0x0fff ///< valid data mask
558 /*! \} */
559 
560 /*!
561  * \ingroup dyna_memmap_mx28
562  * \defgroup dyna_memmap_mx28_lim_ccw EEPROM Counterclockwise Angle Limit.
563  *
564  * Maximum angle (goal position) limit.
565  *
566  * \sa \ref dyna_ex_servo_pos for valid values.
567  *
568  * \par Mode: RW
569  * \{
570  */
571 #define DYNA_MX64_ADDR_LIM_CCW_MASK 0x0fff ///< valid data mask
572 /*! \} */
573 
574 
575 // . . . . . . . . . . . . . . . . . . .
576 // RAM. All values are read/write (RW) unless otherwise noted.
577 // . . . . . . . . . . . . . . . . . . .
578 
579 /*!
580  * \ingroup dyna_memmap_mx28
581  * \defgroup dyna_memmap_mx28_goal_pos RAM Goal Position
582  *
583  * Move to new goal position. The servo will move at the current goal speed
584  * under the current torque limit. These fields are ignored in continuous mode.
585  *
586  * \sa \ref dyna_ex_servo_pos for valid values.
587  *
588  * \par Mode: RW
589  *
590  * \{
591  */
592 #define DYNA_MX64_ADDR_GOAL_POS_MASK 0x0fff ///< valid data mask
593 /*! \} */
594 
595 /*!
596  * \ingroup dyna_memmap_mx28
597  * \defgroup dyna_memmap_mx28_cur_pos RAM Current Position
598  *
599  * Current servo position. These fields are invalid in continuous mode.
600  *
601  * \sa \ref dyna_ex_servo_pos for valid values.
602  *
603  * \par Mode: R
604  *
605  * \{
606  */
607 #define DYNA_MX64_ADDR_CUR_POS_MASK 0x0fff ///< valid data mask
608 /*! \} */
609 
610 
611 // ---------------------------------------------------------------------------
612 // MX-106
613 // ---------------------------------------------------------------------------
614 
615 /*!
616  * \ingroup dyna_spec
617  * \defgroup dyan_spec_mx106 MX-106 Specification
618  *
619  * \{
620  */
621 #define DYNA_MX106_SPEC_WEIGHT_G 153.0 ///< weight (grams)
622 #define DYNA_MX106_SPEC_WIDTH_MM 40.2 ///< width (mm)
623 #define DYNA_MX106_SPEC_HEIGHT_MM 61.1 ///< height (mm)
624 #define DYNA_MX106_SPEC_DEPTH_MM 46.0 ///< depth (mm)
625 
626 #define DYNA_MX106_SPEC_POS_RES_DEG 0.088 ///< resolution (degrees)
627 #define DYNA_MX106_SPEC_GEAR_RATIO 225.0 ///< gear reduction ratio : 1
628 
629 #define DYNA_MX106_SPEC_STALL_TORQUE_NM 8.4
630  ///< maximum stall torque (newton-meter) at optimal power
631 
632 #define DYNA_MX106_SPEC_MAX_SPEED_RPM 45.0
633  ///< maximum no-load speed (rpm) at optimal power
634 
635 #define DYNA_MX106_SPEC_ANGLE_MIN_DEG 0.0
636  ///< minimum rotation angle in servo mode (deg)
637 
638 #define DYNA_MX106_SPEC_ANGLE_MAX_DEG 360.0
639  ///< maximum rotation angle in servo mode (deg)
640 
641 #define DYNA_MX106_SPEC_MODES (DYNA_MODE_SERVO|DYNA_MODE_CONTINUOUS)
642  ///< supported modes (see \ref dyna_servo_mode)
643 
644 #define DYNA_MX106_SPEC_HAS_360_POS true
645  ///< servo does provide 360\h_deg position data
646 
647 #define DYNA_MX106_SPEC_TEMP_MIN_C (-5.0)
648  ///< minimum recommended operational temperature (C)
649 
650 #define DYNA_MX106_SPEC_TEMP_MAX_C 80.0
651  ///< maximum recommended operational temperature (C)
652 
653 #define DYNA_MX106_SPEC_VOLT_MIN_V 10.0
654  ///< minimum operational voltage (V)
655 
656 #define DYNA_MX106_SPEC_VOLT_MAX_V 14.8
657  ///< maximum operational voltage (V)
658 
659 #define DYNA_MX106_SPEC_CTL_METHOD DYNA_CTL_METHOD_PID
660  ///< position control method (see \ref dyna_ctl_method)
661 /*! \} */
662 
663 
664 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
665 // MX-106 Common Parameters
666 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
667 
668 /*!
669  * \ingroup dyna_common
670  * \defgroup dyna_common_mx106 MX-106 Parameters
671  *
672  * \{
673  */
674 /*! \} */
675 
676 /*!
677  * \ingroup dyna_common_mx106
678  * \defgroup dyna_common_mx106_pos MX-106 Position Common Parameters
679  *
680  * \{
681  */
682 #define DYNA_MX106_POS_MASK 0x0fff ///< valid data mask
683 #define DYNA_MX106_POS_MIN_RAW 0 ///< minimum raw angular position
684 #define DYNA_MX106_POS_MAX_RAW 4095 ///< maximum raw angular position
685 #define DYNA_MX106_POS_MODULO (DYNA_MX106_POS_MAX_RAW+1)
686  ///< servo position modulo [0-max]
687 #define DYNA_MX106_POS_MIN_DEG 0.0 ///< minimum angular position
688 #define DYNA_MX106_POS_MAX_DEG 360.0
689  ///< maximum angular position
690 #define DYNA_MX106_POS_RES_DEG \
691  ((double)DYNA_MX106_POS_MAX_DEG/(double)DYNA_MX106_POS_MAX_RAW)
692  ///< 0.088\h_deg (servo mode) resolution
693 /*! \} */
694 
695 /*!
696  * \ingroup dyna_common_gen
697  * \defgroup dyna_servo_speed Dynamixel Angular Speed Common Values
698  *
699  * \{
700  */
701 #define DYNA_MX106_SPEED_RES_RPM 0.114 ///< rpm (servo mode) resolution
702 /*! \} */
703 
704 
705 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
706 // MX-106 Servo Control Table
707 // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
708 
709 /*!
710  * \ingroup dyna_memmap
711  * \defgroup dyna_memmap_mx106 MX-106 Control Table Memory Map
712  *
713  * \{
714  */
715 /*! \} */
716 
717 
718 // . . . . . . . . . . . . . . . . . . .
719 // EEPROM. All values are read/write (RW) unless otherwise noted.
720 // . . . . . . . . . . . . . . . . . . .
721 
722 /*!
723  * \ingroup dyna_memmap_mx106
724  * \defgroup dyna_memmap_mx106_lim_cw EEPROM Clockwise Angle Limit.
725  *
726  * Minimum angle (goal position) limit.
727  *
728  * \sa \ref dyna_ex_servo_pos for valid values.
729  *
730  * \par Mode: RW
731  * \{
732  */
733 #define DYNA_MX106_ADDR_LIM_CW_MASK 0x0fff ///< valid data mask
734 /*! \} */
735 
736 /*!
737  * \ingroup dyna_memmap_mx106
738  * \defgroup dyna_memmap_mx106_lim_ccw EEPROM Counterclockwise Angle Limit.
739  *
740  * Maximum angle (goal position) limit.
741  *
742  * \sa \ref dyna_ex_servo_pos for valid values.
743  *
744  * \par Mode: RW
745  * \{
746  */
747 #define DYNA_MX106_ADDR_LIM_CCW_MASK 0x0fff ///< valid data mask
748 /*! \} */
749 
750 
751 // . . . . . . . . . . . . . . . . . . .
752 // RAM. All values are read/write (RW) unless otherwise noted.
753 // . . . . . . . . . . . . . . . . . . .
754 
755 /*!
756  * \ingroup dyna_memmap_mx106
757  * \defgroup dyna_memmap_mx106_goal_pos RAM Goal Position
758  *
759  * Move to new goal position. The servo will move at the current goal speed
760  * under the current torque limit. These fields are ignored in continuous mode.
761  *
762  * \sa \ref dyna_ex_servo_pos for valid values.
763  *
764  * \par Mode: RW
765  *
766  * \{
767  */
768 #define DYNA_MX106_ADDR_GOAL_POS_MASK 0x0fff ///< valid data mask
769 /*! \} */
770 
771 /*!
772  * \ingroup dyna_memmap_mx106
773  * \defgroup dyna_memmap_mx106_cur_pos RAM Current Position
774  *
775  * Current servo position. These fields are invalid in continuous mode.
776  *
777  * \sa \ref dyna_ex_servo_pos for valid values.
778  *
779  * \par Mode: R
780  *
781  * \{
782  */
783 #define DYNA_MX106_ADDR_CUR_POS_MASK 0x0fff ///< valid data mask
784 /*! \} */
785 
786 
787 #ifndef SWIG
788 C_DECLS_END
789 #endif // SWIG
790 
791 
792 #endif // _MX_H
RoadNarrows Dynamixel Top-Level Package Header File.