Thumbnail

Auto Positioner (Gait)

+ How To Add This Control To Your Project (Click to Expand)
  1. Load the most recent release of ARC.
  2. Press the Project tab from the top menu bar in ARC.
  3. Press Add Control from the button ribbon bar in ARC.
  4. Choose the Movement Panels category tab.
  5. Press the Auto Positioner (Gait) icon to add the control to your project.

What's a Gait?

A gait is the pattern of movement of the limbs of animals, including robots, during locomotion. Most robots use a variety of gaits based on speed, terrain, the need to maneuver, and energetic efficiency. Different robot configurations may use different gaits due to differences in their build. For example, a humanoid robot uses a bipedal walking gait while a hexapod uses a six-legged crawling gait.

The Auto Position skill is used to transform a group of servos into custom positions (Frames) to create gaits. The frames can be combined into actions for your robot gait. The software will automatically calculate how to transition the servo positions between frames of the gait. Like many other ARC skills, this is done with magic! That magic is "Inverse Kinematics", or otherwise known as "Motion Planning". Each frame of the auto position consists of "goal point positions" for each servo. When frames are combined into an action, there are algorithms within ARC that calculate the speed of which each servo moves to obtain the goal point position of the next frame. This skill can be used for hexapods, bipeds, or any other creation you can dream up!

How It Works

Think of a flipbook, drawing a figure on each page, and then flipping through to create an animation. The Auto Position skill is very similar. Start by creating frames for each position of the robot. Let's say we're making it dance for example. Now create a new action and add each frame of the dance to that action. When the action is played, the joints (servos) of the robot will move into each frame sequentially in the order you added them. Interested in the science behind motion planning? If so, click here.

frames-and-actions.jpg


Main Window



1. Movement Panel
These buttons will allow you to control the directional movement of the entire robot (left, right, forward, reverse, and stop).

2. Action List
This is the list of actions that have been created. Select one and click the execute button to run one of the actions.

3. Execute Button
This button executes the selected action in the action list.

4. Jump To... and Transition To... Buttons
The "Jump To..." button instantly moves the servos into the position of the frame selected in the frame list. The "Transition To..." button moves the servos gradually into the position of the frame selected in the frame list.

5. Frame List
This is the list of frames that have been created. Select one and click the "Jump To..." or "Transition To..." Buttons.

6. Step and Speed Values
Adjust these values by click and holding the left mouse button on them or right-clicking them and entering a value in from the keyboard. These values are used for the "Transition To..." button. The lower the speed value the faster the servos will transition into position. The lower the step value the more steps a servo will take when transitioning to the next position. The higher the step value the more multiples of degrees the servo will skip to get to the desired position.

7. Panic Button
This button will stop and releases all the servos.

8. Status Display
Displays the status of the commands that are being executed inside the Auto Position skill.

Configuration - Frames



Each frame displays values for all the servo positions (in degrees). You can modify the servo positions and the robot will respond in real-time. There are two ways to edit servo positions:

1) Left-click and hold on the degree number value to drag the value up and down.

2) Right-click on the degree number value and use the keyboard to type in the value.

*Notes:

  • In a frame, the position of a servo is between 1 and 180 degrees.

  • If the position value of 0 (zero) is selected, this releases the servo from it's holding position. If the gearing allows the output gear can be moved by hand. Selecting the value of 0 for a Continuous Rotation Servo will cause the servo to stop rotating.

  • If the servo position value of -1 is selected the Auto Position skill skips the servo for that frame. The position of that servo is maintained and nothing is changed until the next frame.

  • While designing custom frames for your robot, pay attention to the stress/weight applied to servos. A servo can be pre-maturely damaged and if too much force is applied to it during the frame creation process. We suggest supporting the robot's weight while moving the servo positions of a frame. Once it looks right, place the robot down to see how it is holding.

1. Servo Positions
These are the servo positions set up inside a frame. Each number corresponds to a servo position value set up on a specific port. Enable Port Edit mode to see the port number.

2. Background Image
A background image can be added to represent your robot. Image files (.PNG and .JPG) are supported and will be stetched to fit the background area. Background area is approximately 840 x 512 pixels.

3. Port Edit Mode Checkbox
When enabled this checkbox allows the port number to be displayed above each servo position value. It also allows the port to be changed by left-clicking on it.

4. Realtime Update Checkbox
When enabled this checkbox allows the servo positions to effect the robot in realtime. This is very helpful when creating a gait for your robot.

5. New Frame Button
If you'd like to duplicate a frame, select the frame you'd like to duplicate and press the New Frame button. This allows you to easily continue working on a robot action from the last frame position the robot was in.

6. Frame List
This is the List of created frames containing servo positions. When editing servo positions for a frame, you can right-click on a frame to select the servo positions and copy them to the clipboard. This is useful if you want to create a script for moving the servos later, or if you wish to make a script for setting servo Max and Min limits. Simply right-click on a frame and select Copy Positions to Clipboard. Then paste the clipboard into a script and add the commands to move the servos into position.



7. Transition To... Button
This button moves the servos gradually into the position of the frame selected in the frame list.

8. Delay and Step Values
Adjust these values by click and holding the left mouse button on them or right-clicking them and entering a value in from the keyboard. These values are used for the "Transition To..." button. The higher the step value the more multiples of degrees the servo will skip to get to the desired position. The higher the delay value the slower it will take to get there.

9. Servo Management Buttons
These buttons will allow you to add, delete, fine tune, and release all servos. To delete a servo first enable the Port Edit mode checkbox, then click on the Servo border, and press the DEL key on the keyboard. To fine tune the servo positions press the fine tune button and use the options available (Add, Subtract, Multiply, Divide, Set to, & Invert) to change the position values.



10. Clear/Change Image Button
This button allows you to delete/set your own background image for this skill. A background image will help you set up servo positions to match the physical layout of your robot.

Configuration - Actions



1. Action List
This of a list of created actions, use the action management buttons to make changes to this list.

2. Action Management Buttons
These buttons manage the action list. Add a new action, rename an action, or remove an action with these buttons. You will have to select the action in the list first to rename or remove that action.

3. Frame List
Select the frame you would like to add to the sequence list, once selected you will need to press the Add button.

4. Delay, Steps, and Speed Values
These adjustable values will set the Delay, Steps, and Speed of the frame you will be adding to the sequence list.

5. Add Button
This button takes the selected frame from the frame list adds the setup Delay, Steps, and Speed values to it, and puts it at the bottom of the sequence list.

6. This Action Repeats Checkbox
When enabled this checkbox will make the sequence list loop infintely when the action is executed. The action will continally loop until another action is executed.

7. Edit Script Button
This button allows you to add a script to the action. If the button is green no script is present. If it's blue there is a script that will be run when the action is executed.

8. Sequence List
This list contains the sequence frames (frames + values) that will be run sequentially (top-down) when an action is executed. The list can be modified using the sequence management buttons.

9. Sequence Management Buttons
These buttons manage the sequence list. You can test the action sequence with the execute button. Edit any sequence frame with the edit button. Delete a sequence frame with the remove button. Change the action sequence by moving a sequence frame up or down with the move buttons.

Configuration - Settings



1. Auto Position Start Script
This script will be run before a frame or action is executed.

2. Auto Position End Script
This script will be run after all the frames or actions in the queue have been executed.

3. Auto Position Variables
These variables contain the name of the current action and frame as well as the status of the auto position skill. If the auto position skill is excuting a frame or action the $AutoPositionStatus will be true (1), otherwise if the skill isn't running it will be false (0).

4. Title Field
This field contains the title of the auto position skill. You can change it if you'd like. *Note: Changing the title here will also change the title in the controlCommand() associated with this skill.

Configuration - Import/Export Utilities



Within the Configuration menu is the ability to Import or Export Actions and/or Frames. You can only import frames if the servo configuration matches the existing project, for obvious reasons. If the servo configuration does not match, the import utility cannot simply "guess" what servos to assign the new frames. This limits importing and exporting to projects with the same servo configuration.

If importing a frame and it already exists, a message will be displayed. Simply deselect the frame from being imported. The most common mistake is attempting to import the PAUSE frame, which is auto-generated and cannot be removed.

1. Export Button
This button exports an .autoposition file for adding to another ARC project.

2. Import Button
This button allows you to import both .autoposition and .ezb files into an ARC project.

Auto Position With Movement Panel vs Without

There are two types of auto position skills in ARC. One which has a movement panel, and one without.

1) The Auto Position With Movement Panel skill contains a movement panel, which will execute the robot gait actions for direction movement. Like all movement panels, there can only be one instance of this skill. There are predefined actions for movement directions (forward, reverse, left, right, and stop) which you can assign frames to. You can add gait frames to each action to have your robot move in a customized fashion when any control calls the robot to move a direction.

To control an Auto Position with Movement from a script, there are specific commands for it that require ControlCommand(). View the cheat sheet for available ControlCommands, or use the script movement commands (Forward(), Left(), Right(), Stop(), Reverse()).

2) The Auto Position Without Movement Panel skill can have multiple instances and does not control directional movements like a movement panel. This skill also accepts script controlcommand()s.

How to Use Auto Position Skill

1) Add the Auto Position Skill to your ARC project (Project -> Add Skill -> Movement Panels -> Auto Position Movement Panel).

2) In the Configuration menu create multiple new frames for your servo motor(s).

3) In the Configuration menu create a new action and add the frames you've created. Add some pause frames between your frames if needed.

4) In the main window select an action and press the action button.

Code Samples

Every Auto Position ControlCommand() is published in the Cheat Sheet tab. Pressing the Cheat Sheet tab will display the ControlCommands() for all skills, including the Auto Position. To execute an Auto Position from a script, you would use commands such as:

ControlCommand("Auto Position", AutoPositionAction, "My Action 1")
ControlCommand("Auto Position", AutoPositionFrame, "My Frame 1")
ControlCommand("Auto Position", AutoPositionFrame, "My Frame 1", 50, 3)

Videos




Requirements

One or more servo motors.

Resources

There are utilities for importing and exporting auto position files in the Configuration menu. The Import/Export tab will contain buttons to launch the specific utilities.

Related Content

tutorial
Sabertooth+Kagaroo+DC Motors As Servos

Sabertooth+Kagaroo+DC Motors As Servos

This tutorial shows how to use a DC motor as a Servo, using a Sabertooth+Kangaroo boards combination and EZ-builder
tutorial
The Robot Program Episode 023: Mobile JD

The Robot Program Episode 023: Mobile JD

This lesson will demonstrate how to control the Revolution JD Humanoid with an iOS or Android phone or tablet. At the...
tutorial
The Robot Program Episode 022: Detect Face And Wave - EZ-Script

The Robot Program Episode 022: Detect Face And Wave -...

This lesson will demonstrate how to use EZ-Script to have the robot wave once it detects a face. At the end of this...
tutorial
The Robot Program Episode 021: Detect Face And Wave - Blockly

The Robot Program Episode 021: Detect Face And Wave -...

This lesson will demonstrate how to use Blockly to have the robot wave once it detects a face. At the end of this...
tutorial
The Robot Program Episode 020: Detect Face And Wave - Roboscratch

The Robot Program Episode 020: Detect Face And Wave -...

This lesson will demonstrate how to use RoboScratch to have the robot wave once it detects a face. At the end of this...
tutorial
The Robot Program Episode 009: Getting Six To Move

The Robot Program Episode 009: Getting Six To Move

This lesson will demonstrate how to connect to and move the Revolution Six robot. Follow along with The Robot Program...
tutorial
The Robot Program Episode 006: Introducing EZ-Builder

The Robot Program Episode 006: Introducing EZ-Builder

This lesson introduces the EZ-Builder Robot Software by exploring options and describing features. At the end of this...
tutorial
Control More Than One Robot

Control More Than One Robot

How to control more than one robot in a single EZ-Builder project. This tutorial uses Revolution robots that depend on...
tutorial
The Robot Program Episode 003: Getting JD To Move

The Robot Program Episode 003: Getting JD To Move

This lesson will demonstrate how to connect to and move the Revolution JD robot. Follow along with The Robot Program...
tutorial
Create Auto Position Actions From EZ-Script

Create Auto Position Actions From EZ-Script

This tutorial uses the ControlCommand() EZ-Script command that instructs the Auto Position control to create a frame and...
live hack
DJ's Third Hack Night

DJ's Third Hack Night

We're going to play with EZ-Builder software, build Perry's robot eyes, make Dynamixel servo cables, demonstrate how to...
live hack
DJ's 6Th Live Hack Event (Raspberry Pi & Neopixel With Arduino)

DJ's 6Th Live Hack Event (Raspberry Pi & Neopixel With...

In this 6th installment of DJ's Live Hack Events, we'll be installing EZ-Builder on a Raspberry Pi, install plugins and...
live hack
DJ's 9Th Live Hack - Raspberry Pi + Dynamixel... Together For Ever!

DJ's 9Th Live Hack - Raspberry Pi + Dynamixel... Together...

This is a short live hack where I will demonstrate how to... 1) Install EZ-Builder on Raspberry Pi 2) Install EZBPi...
question
Reverting Servo In Script Or Movement Panel

Reverting Servo In Script Or Movement Panel

Probably but silly question but I can’t figure it out, does any one know how to revert a servo in either script or the...
question
Strange Issue With Servo Speed/Delay/Steps And Usb Camera

Strange Issue With Servo Speed/Delay/Steps And Usb Camera

Hi everyone, I have been following you for some time and first of all I wanted to thank this forum and the fantastic Ez...
question

Scripting Multiple Robot Actions One After Another

I'm currently using Script Manager to run multiple scripts in sequence. I know that ControlCommand is non-blocking by default but is there a way to...
question

Hitec D845WP Servos Can't Move Slow And Smooth

I'm testing a new robot , using ezbv4 and hitec D845WP servos with lipo 7,4 V batteries. (I never used these servos and such high-current batteries...
live hack
PWM Servo Position Feedback (Read Servo Position)

PWM Servo Position Feedback (Read Servo Position)

I'll be hacking a PWM Servo to have positional feedback for EZ-Builder using an EZ-B v4. You can also perform the same...
live hack
Robot As Puppet To Control Another Robot By Reading Servo Positions

Robot As Puppet To Control Another Robot By Reading Servo...

In this hack, I'll be showing how to control a robot with another robot as a puppet by reading servo positions....
live hack
The Lattepanda Robot Hack

The Lattepanda Robot Hack

I'm hacking the lattepanda to control Robotis Dynamixel servos and use a USB camera for machine vision. This will be a...
question

Synchronising Commands In A Custom Behavior Control Plugin In C#

I’ve made a custom behavior control plugin and use the EZ_Builder.Scripting.Executor.StartScriptBlocking method to run commands. However, I can’t get...
question
Calibrate Problem

Calibrate Problem

first i choosed six in the list above cause the galapagosbot is not in the list. so here is my problem,aldo i made the...
question
How To Servo Invert On Exsisting Robot 12249

How To Servo Invert On Exsisting Robot 12249

Working with a hexapod, 12249, that is 3dof each leg. mine has a couple of positions that need servo to be inverted. Ive...
question
Cant Get Smooth Motions

Cant Get Smooth Motions

i bin trying to make smooth motions,but i am not able to do. there are some setting missing or deleted ? its to slow or...
question

Absolute Beginner Guide To Controlling A Single Servo

Hi, I finally got my power supply and powered up my EZ-Robot EZ-B v4 board today.  I have managed to connect to it via wifi but after that I am...
question
Disconnected When Add One More Servo?

Disconnected When Add One More Servo?

I am working on InMoov hand project. The Software will disconnected the EZ-B 4/2 when I add more than 1 servo Motor. Can...
question
Auto Position Help

Auto Position Help

In "auto position" control, how do I distinguish one D0 from the other D0 on the same connection (connect 0 to 4)? I am...
question

Arduino Mega, Autoposition: Servo Release Or Closing Arc Forces Servo Into 0 Deg

Hello everyone, Arduino mega, 2 servos controlled by the auto positioner: Close the arc app or pressing "release all servos" makes all my servos try...