DYNAPose - DYNAMIXEL/ArbotiX Pose Tool
Description:
All the InterbotiX robots turrets, arms, and crawlers use DYNAMIXEL servos. These servos all have positional feedback, allowing the ArbotiX-M Robocontroller to read the current position of each servo. This makes it possible to physically pose an InterbotiX robot, then capture the positions for each servo, allowing the user to save/capture the current pose. By capturing multiple poses, a user can create a sequence that can be repeated.
This firmware does not use any Inverse Kinematic calculations to position the servos - it simply moves the servos to a pre-set position. Please see the 'Demo' section for your Robot for more information on code examples that us IK engines.
If you are using an InterbotiX Robot Arm. see this article for more information on posing and playing back movements with the Arm Link software and IK engine.
Project Parts List:
- 1 x ArbotiX Robocontroller
- 1 x UartSBee or FTDI-USB Cable (or other FTDI device)
- Any number of 3-pin TTL DTYNAMIXEL Servos
OR
Wiring:

Pin | Device |
---|---|
DYNAMIXEL Bus | DYNAMIXEL HUB/ Servo Chain |
DC Jack | SMPS Power Supply, Battery, or other 11-12v power |
Setup:
Download Code:
Download DYNApose Code for ArbotiX Robocontroller
Unzip the DYNApose Code and open the dynaPoseSerial.ino file in the Arduino IDE
dynaPose -> dynaPoseSerial -> dynaPoseSerial.ino
Before you can load the code onto the ArbotiX-M, you will need to make some minor modifications to the code.
- One line 3 of the code
#define SERVO_COUNT 1
Change the number to match the number of servos attached to the ArbotiX. For example, if you are using the PhantomX Pincher which uses 5 servos, the line would look like#define SERVO_COUNT 5
- By default, the firmware will store/playback up to 5 poses. To adjust this, change the number in line 4
#define POSE_COUNT 5
Now you can load the code onto your ArbotiX-M. If you have problems loading your code onto your ArbotiX-M, see the ArbotiX Getting Started Guide.
Once loaded onto the ArbotiX-M Robocontroller, open the Serial Monitor . Set the baud rate in the lower right hand corner to 38400 baud. You will see a series of error checks and then a menu
Using DYNAPose
1 - Relax Servos
Send a 1
using the Serial Monitor to relax all the servos. This will allow you to pose the robot.
2 - Enable Torque
Send a 2
using the Serial Monitor to turn the Torque on for all of the servos. The servos will stay in the current position.
AX servos have a 300 degree limit - make sure to only pose each servo within its range.
3 - Save Pose
Send a 3
using the Serial Monitor to save the current pose to the next avaialble pose in memory.
The current positions of the servos will be saved, whether the servos torque is on or off. Once you have saved a pose, the 'next available pose' will increase by one, allowing you to save to the save to the next pose every time you send a 3
. When you have saved the maximum number of poses (5 by default) the 'next avaialble pose' value will wrap around to the first pose.
If there is an error in reading all of the servos, you will get an error message, and the 'next avaialble pose' value will stay the same.
4 - Display All Poses
Send a 4
using the Serial Monitor to display all of the current poses. Once you've set all the poses, save this code to put in your own code.
5 - Play Sequence - Once
Send a 5
using the Serial Monitor to play through all of the poses once. Any pose that has not have data set to it will be skipped.
Send any number to the serial monitor to stop the sequence. Keep in mind that the sequence can only be stopped at the end of a pose change, so you may need to wait for the current pose to finish.
6 - Play Sequence - Repeat
Send a 6
using the Serial Monitor toplay through all of the poses repeatedly. Any pose that has not have data set to it will be skipped. The poses will continue to cycle until you power off the arm, or send a stop signal.
Send any number to the serial monitor to stop the sequence. Keep in mind that the sequence can only be stopped at the end of a pose change, so you may need to wait for the current pose to finish.
7 - Change Speed
Send a 7
using the Serial Monitor to initiate the speed adjustment. You will now be able to enter a number between 500 and 10000. This represents the number of milliseconds between each pose, so a smaller number will increase the speed.
8 - Set Next Pose Number
Everytime you sucessfully save a pose, the 'next avaialble pose' will increase by one. If you would like to overwrite a specific pose, use this option.
Once this option is selected, you can enter in the number of the next pose you would like to save over.
9 - Center Servos
Send a 9
using the Serial Monitor to set all the servos to their centered positions. This can be useful to check servo alignment.
Troubleshooting Errors
The dynaPoseSerial firmware will do a series of checks to make sure that all of the servos are present. If you get errors, check the following:
- Check for loose/broken cables
- Check that all servos have IDs set correctly
- Make sure that you are using an appropriate power supply
- Make sure you have properly set the
SERVO_COUNT
define

PC Control These demos and projects allow the robot to be controlled via a computer.

ArbotiX Commander Control - These demos and projects control the Robot using the ArbotiX Commander, the handheld Arduino based remote control.

Direct Control - These demos and projects control the Robot directly from sensors connected directly to the Robot's control board.

Pose Control - These demos and projects allow you to create and playback a sequence of poses.

Serial Control - These demos and projects control the robot using a serial packet protocol.

Standalone - These demos and projects are deisgned to let your robot function without a computer or additional microcontroller.

Wireless Control - These demos and projects allow you to control the robot wirelessly - usually by replacing the Serial Connection with XBee modules.

Reference - These articles have technical details regarding the control and operation of the robot.
More info here