Wiki » History » Version 3
Gianluca Corsini, 2022-09-06 20:10
1 | 1 | Gianluca Corsini | {{toc}} |
---|---|---|---|
2 | > |
||
3 | |||
4 | h2. = Introduction |
||
5 | > |
||
6 | This repository contains a @Gazebo@ plugin that allows simulating a chain of @Dynamixel@ motors connected together to the same serial bus. |
||
7 | It provides the same interface as the real one, i.e. a @pty@ port connection you can connect to, and it emulates completely the @Dynamixel Protocol 2.0@. |
||
8 | *However*, not all the functionalities have been implemented yet. |
||
9 | > |
||
10 | |||
11 | h3. Working functionalities |
||
12 | > |
||
13 | * Motor models implemented are @MX28T@, @MX64T@. |
||
14 | ** A template for other motors is provided (@libdynamixel/src/motors/MOTOR.h@). |
||
15 | * Set position and velocities of the motor. |
||
16 | * Multiple instances of @dxsim-gazebo@ can be instantiated (*NB:* specify a different pty port for each!). |
||
17 | * Emulate @RAM@ and @EEPROM@ of each motor's Control Table (see online documentation). |
||
18 | ** The number of entries is fully customizable through the motors' header files. |
||
19 | * Debug mode can be enabled from the @sdf@ file, independently for each motor. |
||
20 | > |
||
21 | |||
22 | h3. Not implemented functionalities |
||
23 | > |
||
24 | * Set effort. |
||
25 | * You can send PID gains, but they are not used. |
||
26 | |||
27 | h3. Assumptions |
||
28 | > |
||
29 | * The dynamics of the motor has been neglected. |
||
30 | |||
31 | h2. = Installation |
||
32 | > |
||
33 | * You need first to clone and install "libydnamixel":https://redmine.laas.fr/projects/libdynamixel |
||
34 | ** Follow instructions reported in "readme.md":https://redmine.laas.fr/projects/libdynamixel/repository/libdynamixel/revisions/master/entry/readme.md file. |
||
35 | * Then clone @dxsim-gazebo@ repository. |
||
36 | ** To install it, use the following commands: |
||
37 | <pre><code class="shell"> |
||
38 | $ autoreconf -if |
||
39 | $ ./configure [--prefix=<installation_path>] |
||
40 | $ make && make install |
||
41 | </code></pre> |
||
42 | ** Make sure that the folder @lib/gazebo@ at the installation location is contained in the environment variable @GAZEBO_PLUGIN_PATH@ in your @.bashrc@. |
||
43 | > |
||
44 | |||
45 | 2 | Gianluca Corsini | h2. = How to use |
46 | 1 | Gianluca Corsini | > |
47 | In the @sdf@ file of your model, you have to insert the following lines for each instance you want to create: |
||
48 | |||
49 | 3 | Gianluca Corsini | <pre><code class="XML"> |
50 | <plugin name="dxsim" filename="dxsim-gazebo.so"> |
||
51 | <pty>/tmp/pty-dynamixel</pty> |
||
52 | <period>1e-3</period> |
||
53 | <motors> |
||
54 | <motor> |
||
55 | <joint spin="ccw">joint_1</joint> |
||
56 | <eeprom>/home/gcorsini/dx_eeprom_id1</eeprom> |
||
57 | <model>MX64T</model> |
||
58 | <p0>0.0</p0> |
||
59 | <v0>0.0</v0> |
||
60 | <id>1</id> |
||
61 | <noise>0</noise> |
||
62 | <debug>0</debug> |
||
63 | </motor> |
||
64 | <motor> |
||
65 | <joint spin="ccw">joint_2</joint> |
||
66 | <eeprom>/home/gcorsini/dx_eeprom_id2</eeprom> |
||
67 | <model>MX28T</model> |
||
68 | <p0>0.0</p0> |
||
69 | <v0>0.0</v0> |
||
70 | <id>2</id> |
||
71 | <noise>0</noise> |
||
72 | <debug>0</debug> |
||
73 | </motor> |
||
74 | </motors> |
||
75 | </plugin> |
||
76 | 1 | Gianluca Corsini | </code></pre> |
77 | |||
78 | > |
||
79 | If a @eeprom@ path has been specified, then at that location you should have a file looking like the following: |
||
80 | |||
81 | <pre> |
||
82 | model_number 311 |
||
83 | model_info 0 |
||
84 | firmware_ver 0 |
||
85 | id 1 |
||
86 | return_delay_time 0 |
||
87 | operating_mode 1 |
||
88 | secondary_id 255 |
||
89 | homing_offset 0 |
||
90 | temperature_limit 80 |
||
91 | max_voltage_limit 160 |
||
92 | min_voltage_limit 95 |
||
93 | pwm_limit 885 |
||
94 | current_limit 1941 |
||
95 | acceleration_limit 32767 |
||
96 | velocity_limit 1023 |
||
97 | </pre> |
||
98 | |||
99 | +This file is an example of the @eeprom@ of a @MX64T@ motor.+ |
||
100 | Changes to this file will lead to a runtime error in @dynamixel-gazebo@ if not performed properly; the EEPROM file should contain all the memory entries specified in the motor model's header file related to the EEPROM. |
||
101 | > For more details please visit the "online Dynamixel documentation":https://emanual.robotis.com/. |
||
102 | >> "MX Series documentation":https://emanual.robotis.com/docs/en/dxl/mx/. |
||
103 | |||
104 | h2. = Todo |
||
105 | > |