Asked — Edited
Resolved Resolved by Steve G!

Autoposition Speed Question

Lately I have been doing a lot with the Autopositioner. One is having JD sit on a seat and get up again. The seat is about 43mm high which is just right for JD to sit on with the knee servos at right angles to the feet and the upper leg servos at right angles to the knees so as to form the perfect seated posture. The sitting on the seat operation is only basically one frame and goes very smoothly. The standing from the seat is more complicated since JD has to maintain balance as he stands, therefore has several steps.

My problem is that the first step in which he rises part way in the overall action goes as fast as it can no matter what I try. I have set each speed setting in each frame of the action to 4 to try to slow things down, but it stays the same. I have also tried using the script to set the speed for all the servos, but still way too fast. I have even added an extra frame at the start which is just like the last frame of the sitting down operation so it starts in the same position as it had in the last when JD sat down. I only moved the arms out in preparation for standing. That one runs nice and slowly but the very next frame goes at top speed still.

This is how the frames look in the Action Editor: Stand From Seat0(Delay: 25, Steps: 3, Speed: 4, Script: False) Stand From Seat1(Delay: 25, Steps: 3, Speed: 4, Script: False) Stand From Seat2(Delay: 25, Steps: 3, Speed: 4, Script: False) Stand From Seat3(Delay: 25, Steps: 3, Speed: 4, Script: False) Stand From Seat4(Delay: 25, Steps: 3, Speed: 4, Script: False)

Any suggestions? Yes, I have gone through the tutorial. Several times. And tried looking through the posts, but there are 94 of them!


ARC Pro

Upgrade to ARC Pro

Discover the limitless potential of robot programming with Synthiam ARC Pro – where innovation and creativity meet seamlessly.

PRO
Synthiam
#9  

Every control has a ? Question mark next to the X close button. Press that on the Auto Position and you will receive a manual page for that control. The video explains how it works and even how to create frames. It explains that a frame is a single position and an action consists of frames. It's a common model used since the 1920's with cartoons and eventually moved its way into computer animations in the 80's.

User-inserted image

Here is a direct link to the help page for the Auto Position control: https://synthiam.com/Tutorials/Help.aspx?id=180

I would advise watching the videos to see how the frames are created and added to an action. What will matter most to your tests is creating actions. Start by creating frames and setting the delay/steps for testing manually in the Frames tab. Once you have the frames working as planned, create an action that uses each frame. You can tweak the Steps/Delay/Speed of reach frame only when assigned to an action. All explained in the videos and manual page:)

Remember, an action is a series of frames.

There are also blue question marks beside each option for you to read about. Hope that helps!

#10  

Thank you all once again for trying to assist me on this problem.

@DJSures I do know about creating Frames and linking Frames via Actions. I also know about tweaking the frames as desired, as well as, adding scripts into the frames group in an Action. I've done all that in several variations.

The buttons to which I referred in my previous post were the Jump To and the Transition To buttons in the Frames screen. I included a screen shot below to insure we both know which window I mean. I also know about the question marks to the right of the buttons. Problem is, when I hover over those question marks, the popup text says the same thing for both. Additionally, clicking them doesn't do anything.

User-inserted image

I have previously read the information in the link you provided, thank you, but none of that says anything about those buttons. Nor do the videos (the first of which is seriously out of date as far as the screen layout is concerned) say anything about them or how to properly use them. Nor is there any information in the ARC Manual.

I created a a project called "Sit-Stand Test." It is a bare bones project with an AutoPosition(without movement) control, a connect control, and a standard JD Init Script. The AutoPosition control contains the two actions needed to perform the actions for sitting and standing, as well as, their related Frames, and a "Calibrate" Frame for setting to the calibrate position as needed. That's all. I removed the scripts I had placed in the actions and the frames and anything extra that I tried so to make it as basic as possible. In this way I hoped to eliminate any other influences on the Actions I am trying to get to work.

Please note, the actions presume JD is backed up to an approx 55mm high seat upon which he is going to sit. That height corresponds to the position he would assume with his knees and upper body leg servos at somewhat under 180 and above 0 on the respective upper leg servos. Additionally, the knee servos are at corresponding angles such that JD sits properly on the seat given it's height.

At first I went with 90 and 0 degrees assuming the servos would start there for standing up. What I noticed when I slowed everything way down was that he actually went down more than that, causing the upper leg servos to travel even farther than the last saved position. So the pot setting on the servo would not have matched the last saved position stored in the ARC program and it would jump some to catch up (I presume). But the amount it jumps far exceeds the small difference. Anyway, raising the seat such that he made contact well before the 180/0 point should have taken care of that.

I still have the sudden surge in speed problem as he goes through the reverse order of sitting frames. He sits fine though.

Besides the questions at the beginning of this post, I have a question on adding scripts to the frames in the action sequence. When do these scripts actually run. The documentation says they run with the frame execution. But does that mean they run before the frame execution starts or after? For example, if I put a sleep instruction in that frame script, does the sleep start execution before or after the frame servo movement instruction is sent out? I tried putting a 6 second sleep in each of the frame's script boxes but only the first one had any effect. I don't quite get that either.

Anyway, it's still giving me that surge of speed thing upon going through the stand up actions. I'm going to put this project on the cloud if anyone wants to give it a try. Note the seat must be fairly close to 55mm in height to match the settings in the Frames I created for this. Mostly concerning Frame6 (Sit On Seat6).

Thanks

United Kingdom
#11  

@WBS.

Hey dude. I had a quick look at your "bare bones" project you put in the cloud this morning before I had to go out. I just used a single servo and started to try both actions, then every frame and did discover something. In the frames "Sit on seat 5" and "Sit on seat 6", the servo connected to port D17 is set to 0 (zero). I don't know if you were aware, but step 0 on a servo is no longer a holding position, it's a servo release (this was changed with an ARC update a few months back). So the min and max positions on a servo are now "1" to "180" with 0 being "Servo Release".

So in the sit down action, D17 runs the routine up to frame "Sit in Seat 4" where D17 is set at 60, then 5 and 6 run which release the servo. So when the "Stand from Seat" action is run, 6 and 5 do nothing, then frame 4 essentially resets the servo which is why it moves at full speed (surge of power) for that frame, then is at the speed you set it at after that. So, as the MythBusters say... "There's your problem!, well at least, a problem. So revisit the "Sit on seat 5" and "6" frames and adjust D17 to the positions you need it to be and try again. I don't know if this will fix your whole issue, but it is something that need addressing and hopefully it will help.;)

Steve.

PRO
Synthiam
#12  

i updated the help on the next ARC release

Transition To If RealTime Update is UNCHECKED, then pressing this button will transition the servos positions to the current selected frame positions at the Delay and Steps value selected

Jump To If RealTime Update is UNCHECKED, then pressing this button will immediately move the servos to the position of the selected frame.

#13  

DJ, you beat me by 3 minutes. I just booted up my Roli and robot PC to verify that I was correctly remembering this functionality before answering.....

Alan

#14  

@Steve G Thank you very much for taking the time to look at the project. That servo being set to zero was a holdover from when I had JD sitting on a seat that was 40mm high (too low). When I changed to a higher seat, I changed the servo positions to non-max settings. All EXCEPT that one that is. So that is a mistake. It should not have been 0. Nonetheless, I do believe you are right. That IS the problem, In more ways than one, When I moved it off of 0 to even just 1, JD jumped up a great deal (had it set to Realtime Update) . In fact from there on, JD would not go to the correct position even when I put him in the calibrate position. I had to reboot JD to get it to act normal again. I had encountered that before but didn't know what was causing it. I do now. Setting a servo to 0 even once will screw up everything from then on. At least in this case anyway. That one servo going to the wrong position was even physically holding back it's counterpart on the other leg. Hence the accompanying loud buzzing.

I had no idea zero was a release point. Makes a world of difference. Thank you sooo much for that bit of info. I'm going to take down the test project and have a go at it with that in mind. No doubt I will get very different results. Can't at the moment since demands of life call. I'll post the results when I do. Thanks again, you've been of immense help.

@DJSures Thank you for the clarification on those buttons. I see what they do now.

United Kingdom
#15  

@WBS.

No problem at all. I hope that helps in you getting the frames acting the way you want. Keep us posted on your progress when you get around to it. Fingers crossed.

#16  

@SteveG I finally got back to fully testing out the non-zero settings of the servos on my sit-stand operations and am happy to report that all works properly now, thanks to you. Now I can move ahead with what I really wanted that action for; a way to allow JD to charge himself by sitting on charging station, connecting electrodes on the back of the upper leg servos. Well, when I finish the massive reprogramming I've been doing with the rock paper scissors game you came up with. That has led to my coming up with a system of script programming which removes ALL scripting commands from the individual phrase's script area in the Speech Recognition window and places them in separate script files instead. Far easier to maintain that way. Makes them searchable and allows them to be ordered as desired as well. But that's another thread, actually. I suspect you've moved on to more games by now.

Thanks again!