Wiki » History » Revision 6
Revision 5 (Gianluca Corsini, 2022-09-28 14:11) → Revision 6/7 (Gianluca Corsini, 2023-07-05 11:11)
{{toc}} > h2. = Implementation & Functionalities h3. Assumptions * The dynamics Introduction > This repository contains a @Gazebo@ plugin that allows simulating a chain of @Dynamixel@ motors connected together to the motor has same serial bus. 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@. *However*, not all the functionalities have been neglected. implemented yet. > h3. Implemented and working Working functionalities > * Motor models implemented are @MX28T@, @MX64T@. ** A template for other motors is provided (@libdynamixel/src/motors/MOTOR.h@). * Set position and velocities of the motor. * Multiple instances of @dxsim-gazebo@ can be instantiated (*NB:* specify a different pty port for each!). * Emulate @RAM@ and @EEPROM@ of each motor's Control Table (see online documentation). ** The number of entries is fully customizable through the motors' header files. * Debug mode can be enabled from the @sdf@ file, independently for each motor. > h3. Not implemented functionalities > * Set effort. * You can send PID gains, but they are not used. h3. Assumptions > * The dynamics of the motor has been neglected. h2. = Installation > * You need first to clone and install "libydnamixel":https://redmine.laas.fr/projects/libdynamixel ** Follow instructions reported in "readme.md":https://redmine.laas.fr/projects/libdynamixel/repository/libdynamixel/revisions/master/entry/readme.md file. * Then clone @dxsim-gazebo@ repository. ** To install it, use the following commands: <pre><code class="shell"> $ autoreconf -if $ ./configure [--prefix=<installation_path>] $ make && make install </code></pre> ** Make sure that the folder @lib/gazebo@ at the installation location is contained in the environment variable @GAZEBO_PLUGIN_PATH@ in your @.bashrc@. > h2. = How to use > In the @sdf@ file of your model, you have to insert the following lines for each instance you want to create: <pre><code class="XML"> <plugin name="dxsim" filename="dxsim-gazebo.so"> <pty>/tmp/pty-dynamixel</pty> <period>1e-3</period> <motors> <motor> <joint spin="ccw">joint_1</joint> <eeprom>/home/gcorsini/dx_eeprom_id1</eeprom> <model>MX64T</model> <p0>0.0</p0> <v0>0.0</v0> <id>1</id> <noise>0</noise> <debug>0</debug> </motor> <motor> <joint spin="ccw">joint_2</joint> <eeprom>$HOME/dx_eeprom_id2</eeprom> <model>MX28T</model> <p0>0.0</p0> <v0>0.0</v0> <id>2</id> <noise>0</noise> <debug>0</debug> </motor> </motors> </plugin> </code></pre> * @<eeprom>@: path where the EEPROM file is saved. Environment variables can be specified, e.g. @$HOME@. > If a @eeprom@ path has been specified, then at that location you should have a file looking like the following: <pre> model_number 311 model_info 0 firmware_ver 0 id 1 return_delay_time 0 operating_mode 1 secondary_id 255 homing_offset 0 temperature_limit 80 max_voltage_limit 160 min_voltage_limit 95 pwm_limit 885 current_limit 1941 acceleration_limit 32767 velocity_limit 1023 </pre> +This file is an example of the @eeprom@ of a @MX64T@ motor.+ 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. > For more details please visit the "online Dynamixel documentation":https://emanual.robotis.com/. >> "MX Series documentation":https://emanual.robotis.com/docs/en/dxl/mx/. h2. = Todo >