Asked
Resolved Resolved by DJ Sures!

Struggling With Autoposition

Not a fan of the autoposition, but I had to tackle it for the drink robot because unlike servo recorder, I needed the robot to precisely grab a cup and repeat positions over and over. Which he does.

First of all I have read every "?" by every button and slider and I still dont get most of whats happening.

My issue is understanding the redundancy of different speeds and steps in all the windows and how that affects the servos in each one. Of the three windows I understand "Frames"  window the best as this is where you begin and can see the effects on the servos.

User-inserted image

But as I move on to the "Actions" tab I am again shown delay and steps and now speed. The speed here goes from -1 to 20. I understand I can change this for each frame, but after I set the motions and then decide to go back and edit the speed button on the right, there is no noticeable speed change to my animation ( i also understand that the higher the number the slower the motion) User-inserted image

Finally, when actions are set up and you go to the main window for Auto Position I am again presented with another STEP and SPEED, this time the speed goes to 0-50. Why?

User-inserted image

Yesterday I broke part of the drink robot because I am struggling with this animation system. Its ok if you are playing with a toy sized robot, but when programming a lifesized robot, things can go expensively wrong, when disaster strikes or worse someone gets hurt.

Please take the time to explain to me how this redundancy is supposed to work.


Related Hardware EZ-B v4
Related Control Auto Position (Gait)

ARC Pro

Upgrade to ARC Pro

Your robot can be more than a simple automated machine with the power of ARC Pro!

#1   — Edited

I would agree this is an area where improved documentation would be helpful.  Each of these items has been covered in different forum discussions or tutorial videos over the years, but if you are new to using them, or even want to do something different than  you have done before there is not a single comprehensive place to go to understand each element of the skill.

I have used AutoPosition a lot, since it was introduced, and I still have basically all the same questions you have.  That is why I test out concepts on a small EZ-Robot Revolution robot (typically the Roli) before ever thinking about going large scale, and I have a ton of spare servos since I bought the upgrade kits for Six and Roli when the hdd servos came out so I  consider them disposable and test things that might stress the system with them first (I have been trying to get Roli to throw a ball for about 3 years and still can't get it quite right).

Alan

PRO
Synthiam
#2  

Which part of the Auto Position manual isn’t documented? I had checked and every option is documented. Hmm, Alan could you tell me what’s missing?

Unfortunately Will’s questions are documented in the manual. So his question doesn’t help improve the documentation. Let me know what documentation of the Auto Position is missing from the manual and I’ll improve it.

Adding some context, we update the manuals and support section a few times per day based on questions. Also, the ARC software is updated about once or twice a week as well.

PRO
USA
#4   — Edited

So this is your answer?  

Quote:

Unfortunately Will’s questions are documented in the manual.

PRO
Synthiam
#5  

So far that’s my answer:) I’m on my phone and out of the house this Saturday. If I had more time, I usually write longer responses to help users on the community forum.

PRO
USA
#6  

OK for digestion later when you have time.

The documentation may be thorough but its unclear and confusing. I doubt I am the only person feeling this way. I'll highlight the areas of confusion by copy and pasting from the manual.

1

On the video from the skill page (demoing the hexapod) you say at time code 4:43 

Quote:

... you change the modifiers that allow the speed to be controlled..
Why is the speed not controlled by the speed? How do the modifiers control the speed? You do not explain.

#2 Unclear when to use (Frame window): But if you uncheck realtime update then the servos no longer move on the robot, so how can you use this function live?

Quote:

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

#3

Quote:

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.
(Frame window) Again if transition to... is selected I can only do this when realtime update is unselected? How do I use this if the when robot is not moving? How does delay and steps effect the speed.

#4

Quote:

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.
(Action window) So these supersede the motion settings from the frames set up???

#5

Quote:

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 the 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.
(Main AutoPosition window) I am at a loss of words for even understanding this....does this also override the settings from the action window?

#6

Quote:

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.
(Main AutoPosition window) I understand this works with the step and speed from question #5, but once again does this override from the action window?

#7

Quote:

That magic is "Inverse Kinematics", or otherwise known as "Motion Planning".
This is pose key animation and saying its IK is misleading.

PRO
Synthiam
#7   — Edited

I believe the summary of your questions is regarding the "Transition To" and "Jump To" buttons. Those buttons have absolutely no relationship with actions. Also, the values of Delay, Speed, Steps on the Frames page have no relationship to actions either. Those are for testing frames while editing frames. I'll add a sentence to the manual that expands something along the line of "These buttons can be used for testing frames....".

*Edit : added some screenshots to expand on the "Transition to" and "jump to buttons below here:

In the below image, there are arrows pointing to the word "Frames" and a box that goes around the options. In Windows or User Interface, that's a Titled Group Box. The options within the group box are associated with that title. In this case, it's Frames. The Jump to & Transition To will use the selected frame and transition or jump the robot into that frame using the values in that groupbox.  User-inserted image

There is a bug in the Transition To that you outlined in the question. It seems the Transition To button is not highlighted when the Realtime Update is unchecked as it's supposed to. I'll have that fixed for the next update. Generally, people have real-time update enabled when editing frames. User-inserted image

#1

Quote:

1

On the video from the skill page (demoing the hexapod) you say at time code 4:43 Quote: ... you change the modifiers that allow the speed to be controlled.. Why is the speed not controlled by the speed? How do the modifiers control the speed? You do not explain.

The video you are watching does not cover everything. The manual will be the best bet. Not all videos will cover absolutely everything, unfortunately. In this case, the video apparently does not explain what you're asking - it's not the fault of the video. I try to cover as much as I can in videos, but mostly I can't cover everything - the manual is good for explaining because it covers every feature and can be updated easier. It's more difficult to update a video vs a manual, which is why the manual is recommended.

#2

Quote:

Unclear when to use (Frame window): But if you uncheck realtime update then the servos no longer move on the robot, so how can you use this function live? Quote: 7. Transition To... Button This button moves the servos gradually into the position of the frame selected in the frame list.

As the text reads, "this will transition the servo positions into the selected frame". Your screenshot has no selected frame, however. To select a frame, position the mouse cursor over the frame in the list, and press the left mouse button. The frame will be highlighted as per a windows Listbox. Once selected, the Transition To button will be enabled. (This paragraph describes expected behavior. There is a minor bug affecting this button that will be fixed in next update)

#3

Quote:

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. (Frame window) Again if transition to... is selected I can only do this when realtime update is unselected? How do I use this if the when robot is not moving? How does delay and steps effect the speed.

The real-time update would need to be un-selected for the Transition To button to be enabled. I do not understand "how does delay and steps affect robot speed" related to this question. Perhaps that's a different question and is covered in the Auto Position manual and question marks.

#4

Quote:

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. (Action window) So these supersede the motion settings from the frames set up???

Again, the manual states that the delay, steps and speed values on the Frames page are for the transition button during testing. The options on the frame page are for testing the frames. There is no relationship between that and the values added to the action.

#5

Quote:

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 the 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. (Main AutoPosition window) I am at a loss of words for even understanding this....does this also override the settings from the action window?

In ARC, since conception, the lower the speed value for servos, the faster the speed. It's because the speed value is actually a delay. It's documented in all uses of the ServoSpeed command for scripting. The value is a delay between positions, so a higher number is a higher delay. That's a global ARC parameter.

#6

Quote:

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. (Main AutoPosition window) I understand this works with the step and speed from question #5, but once again does this override from the action window?

The references to Jump To and Transition To work for selected frames, not actions. You can't "Jump to an action". An Action is a collection of frames. You can't jump to a collection of something.

#7

Quote:

That magic is "Inverse Kinematics", or otherwise known as "Motion Planning". This is pose key animation and saying its IK is misleading.

Incorrect. The Auto Position uses inverse kinematic calculations to transition into frames. Documented in videos and the manual - Each joint is a servo, therefore it's easy for the algorithm to calculate the movement steps to achieve a timely transition of all joints to the destination positions. If you wish to use pose key animation, there is not a robot skill that i am aware of for that - so you would instead need to write scripts using servo positions. However, the challenge with writing scripts to direct servo positions is unless the servos have feedback, you won't know when they have reached their desired position. And, if you want to create frames based on external input, such as physically moving servos, your servos need to be bidirectional. There’s a few tutorials that explain that attached to the Auto Position control manual. The button you use is documented in the manual as well.

*note: I’m avoiding writing duplicate information from the manuals.

Here is the actual full text from the portion you had copied

Quote:

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 or animation. The Auto Position will use algorithms to automatically calculate the transition of each servo position between frames. 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 at 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!

Hope this helps - I'll add that sentence that the transition and jump to buttons are used for frames only and testing or transitioning or jumping to frames. And I'll make a few UI changes for it to be more clear for you

PRO
Synthiam
#8  

I organized the parameters in UI titled groupboxes for clarity

User-inserted image

PRO
Synthiam
#9  

i added titled group boxes in the config menu for editing an action to help you as well

User-inserted image

#10   — Edited

Well, that explains it. LOL.

I also struggled with these concepts when I was setting up my B9 arm movement animations. It took me a bunch of testing and trial and error to figure it out. I really don't think I fully understood everything in the end however I did get most of my actions to look smooth.

Luckily during the learning curve I didn't break anything! Sorry about your loss @Will. I know you worked hard on your Bartender.

I'll be going back soon and redoing some animations and redoing others. I fully expect to have to relearn this control again. Hopefully next time it will be a more pleasant experience.

PRO
USA
#11   — Edited

Thank you for the additional info. I always appreciate the time you take to explain. I'll digest as much as I can today AFTER I do my taxes :(

My main issue I had was understanding how to adjust the speed and smoothness of an animation for the actions. It seemed if I changed the speed number in the edit window, I did not notice a change in speed in the animation.

@dave, The damage that was done was fixable but learning/testing on a full robot is scary as hell. I don't have a robot revolution robot to test with to get to know the system so I was taking it slow, by the end of the day I was so frustrated and tired that I made a critical error and moved the robot in a way that forced part to break.

PRO
Synthiam
#12  

I’ll expand on the delay and steps for ya later today. I wrote that stuff at 5 am so I’m glad it was coherent lol

PRO
Synthiam
#13   — Edited

I updated the Auto Position manual to explain the Steps and Delay values, as well as how to consider defining frames. If you watch any of Bob Houstons InMoov videos (doing math), or Richards (bartender inmoov), you can visualize how each frame was defined.

Here's a copy of what was added to the manual....

*NOTE: this copy and paste below is from the manual. View the Auto Position manual to see the latest revisions. The manual is updated and this post will not be updated.

Example: Picking up a cup Assume you have a simple robot arm with 2 joints (shoulder & elbow) and a gripper. You may wish to pick up a cup and raise it into the air. We can consider this entire motion sequence an Action, which consists of a collection of Frames. Let us first define the start and end of the desired Action. As you can imagine, there are many steps between the start and end with the robot suddenly holding a cup. The Auto Position makes this very easy to accomplish by splitting the Action into a collection of frames.

User-inserted image

You can begin by defining the Frames required to complete the Action. The Frames are snapshots of how the robot can achieve the task. Notice in this example, the task is split into smaller frames. Frames are defined rather than having to program every servo movement. Later, the frames are added to an Action so they can be replayed programmatically.

User-inserted image

User-inserted image

Step/Delay Settings Hypothetically, let’s assume a frame moves the robot from this example Start frame to End frame. The Auto Position will perform calculations using the start & end positions to interpret the movement positions. The algorithm will ensure all joints positions arrive at their destination position at the same time during the transition. This behavior is repeated for the transition of each Frame of an Action.

User-inserted image

Example: Steps: 5, Delay 20 Using these Steps and Delay values, the Auto Position will send 15 movement commands to the EZB with a 20ms delay between each command. The Auto Position has determined to send 15 movement commands because that is the largest difference between servo positions is 75. With a Step increment of 5, that leaves 15 movement commands. All remaining servos that have smaller position differences will use smaller steps, thus arriving at their destination at the same time. The largest step will be used for the servo with the largest position difference.

The shoulder will move 5 positions per command. The elbow will move 2.3 positions per command. There will be a 20ms delay per command. This ensures both the should and elbow joint positions arrive together at the destination frame positions.

PRO
USA
#14  

Holy smokes this is so so much easier for me to understand. It’s a very complex skill and there is obviously more happening under the hood than I understood before. I’m going to put this to practice tomorrow. Thanks and I’ll let you know if I have any other questions.

A big thanks!

PRO
Synthiam
#15  

Of course, anytime Will!

PRO
Synthiam
#16  

The latest release has the Auto Position changes and bug fix for the transition button: https://synthiam.com/Products/ARC/Releases/ARC-2021-04-11-00-Early-Access-Runtime-20502

#17  

I had some severe head twisting motions on my full size Cylon that burned a servo,after first trying auto position. I then adapted the Hex 6 Auto Position skill to move head and arms using the different walking animations.Just modified the position and speed of each motion.Example Slow walk 1 2 3 4 converted to head rotation right,center,left and center. Gave a really natural looking left and right when ever forward motion ,turning or backwards ,head looks like it is searching when ever moving. Similar for arm movements.

#18  

That example and description of how it uses the values really helps!

Alan

#19  

Thank you for the addition to the manual. This really is much better and makes this concept much easier to understand.

PRO
USA
#20  

Robot repaired and animated .....I grasped hold of the reins and took control. Thanks again for the extra explanation. Now to tie it into the scripts to finish it off. Then I gotta shoot all the videos and edit...hopefully, video soon!

PRO
Synthiam
#21  

Hey you can also train frames by moving the robot servos using a remote control or something. I know you like to use the servo recorder with touch controls. So you can move the robot into position and hit a button to create a frame from that position. Rather than doing it in the Auto Position editor.

im on my phone but there’s a tutorial I did to create custom frames with a wiimote and using vr headset.

PRO
Synthiam
#22  

Ah here it is: https://synthiam.com/Community/Tutorials/Create-Auto-Position-Actions-from-EZ-Script-16353

PRO
USA
#23  

My brain melted.....completely missed this as an option!

PRO
USA
#24   — Edited

OMG.....so I can use my finger pad controls and just trigger to record servo positions?  User-inserted image

PRO
Synthiam
#25  

Yes you can. Just setup a button that creates a frame. So every time you’re in a frame, press the button to create the frame and add it to the specified action

#26  

I am so looking forward now to making animations for the B9 robot arms that I'm building.

PRO
USA
#27   — Edited

Disaster aversion question.

When running a script with an Auto Position action in it, will command control wait until that action is complete before moving onto another action?

PRO
USA
#28  

Too late. Went ahead and tried with wife holding the plug ready to pull it if all went wrong which it did. He pushed over the table and I caught it with one finger before she pulled the plug.

Is there a command for Auto Position equivalent to servo recorders $isservorecorderrunning = false command ?

#29  

Hi Will, Sorry to hear you are fighting this issue. I don't know what your project looks like or how it's set up However there is a variable you can use to let the CommandControl know to wait till the AutoPosition Control has stopped running. Here it is:

$AutoPositionStatus - Contains a True (1), False (0) if the  AutoPosition control is actively excusing and action or frame. 
#30  

You can also add a script to run when a frame or action runs. create and edit them from inside the Auto Position control. Maybe you can write a code here that will pause till your AutoPosition control action completes?:

User-inserted image

PRO
USA
#31  

Thanks Dave that is exactly what I was looking for.... but could not find any documentation on it..at least where I was looking! Do you have a link to where that code is? Or specifically in the manual?

#32  

Hi Will.

Open the link below and scroll down in the middle under ContorlCommand.  "What If I Want To Wait?" https://synthiam.com/Support/Programming/control-command

BTY. You and Dave make  awesome robots!

#33  

I found it on the Settings tab in the AutoPosition control. Click on the three dots (...) and then look for the Settings tab neat the top of the box. Half way down you will see the three variables you can use to watch the AutoPosition status. I stumbled across it a while ago. I don't know if it's mentioned in the manual anywhere.

User-inserted image

PRO
USA
#34  

Omg thank you fellas...a ton!!!!!!

PRO
USA
#35  

@merne I have never seen this page.... this  is a gold mine...thank you!

PRO
USA
#36  

I want to thank everyone here for helping me get this going. I got this thing up and working...and man its so cool.

I start start shooting the video for this episode tomorrow and hope to have it done by next week.

Thanks again!

#37  

Outstanding. Life is too short to be frustrated. I know your video if the droid will be fantastic. I'm looking forward to it like Xmas when I was a kid.