Welcome to Synthiam!

Program robots using technologies created from industry experts. ARC is our free-to-use robot programming software that makes features like vision recognition, navigation and artificial intelligence easy.

Get Started
Asked — Edited

Advanced Servo Profile

I have been doing some things regarding connecting to multiple EZB-4 and have been having some problems with the servo Profile. Specifically, how it works in relation to a given project. I finally realized that you can't load up profiles for different robots in the same project. So I turned to the Advanced servo Profile feature since it can contain multiple profiles on a per board basis.

I had two robots connected in the same project, one via board 0 and one via board 1. I went to the Advanced servo Profile and used it to set up a profile for one robot on board 0 and another one on board 1. I could see each robot move as I clicked each servo up or down for a given board. That was fine. I saved the overall profile in the Advanced servo Profile window. I then shut everything down and restarted the robots and the project. I put both robots into the calibrate positions and went to the Advanced servo Profile window and loaded the profile I had saved earlier. Everything came back as before for board 0 and board 1. Unfortunately, unlike when one loads a regular single profile, neither robot responded to the loading. If I clicked a particular servo on one of the robots, that servo would suddenly respond and go to it's proper position according to the profile setting for that servo.

I tried to find more info via searching the posts, but got about 2800 hits for Advanced servo Profile. So that's not really fruitful. Also looked at the tutorials but saw nothing on the Advanced feature.

Basically. I'm wondering what the Advanced servo Profile really does and how do I get the individual robots to respond to their board's profile when it loads up?

Thanks.

AI Support Bot
Related Content
Synthiam
Based on your post activity, we found some content that may be interesting to you. Explore these other tutorials and community conversations.
#1  
Here's a couple good videos with some advanced servo profile info in them. Hope this helps.




#2  
@DaveSchulpius

Thank you for the videos. I believe I may not have been specific enough in my post. While these videos (especially the first one) do cover some more advanced concepts for creating a servo profile, I was referring to the "Advanced" option in the "Servo Profile" section under the "Project" tab. The one on the far right (the red gears). Clicking it will take you to the window that allows you to enter adjustments for every possible servo connection, real or virtual, for any board. It's that monster I'm having problems getting to actually do something after I use it to set up a profile for each of the two robots I'm working with. One on board 0 and one on board 1. It's a bit more difficult to use since there is no image with adjustment boxes for each servo shown. If I click "Load" while in that window, and choose the servo profile for board 0 and board 1 that I saved when I did the tweaks to each servo, the appropriate boxes are reloaded with the appropriate numbers for each board. Unfortunately, that information does not seem to be used to readjust each of the robots as happens when you load a single profile in the usual way, by using the "Load" option then the "Configure" (green gears) in the "Servo Profile" section. As soon as you click "Configure" the robot snaps to and the adjustments are re-applied.

So, at the moment, I don't see the use of the Advanced servo Profile. Perhaps there is something else that needs clicking to get the data to go to the robots.

Anyway, thanks again for your help.
#3  
Ya, EZ Robot is a powerful platform with loads of ways to adjust and tune everything from software to hardware. However "sometimes" the documentation is slight or non-existing on how to use some of these features turning your project into Non-EZ Robot (for that feature your working on anyway). I've been frustrated in the past when I come across an issue like this that I don't understand and can't find help on it. When that happens I feel like it wasn't meant for me to try to use it. It seemed like after shifting through tons of forum posts and looking through tutorials for that one feature or command that the only way was to school myself, experiment , and/or give up.

I do remember DJ saying that the advanced servo profiles were meant for servos of non-like manufactures or non-EZ Robot types of servos to get them to all work together. Of course this still doesn't answer your question or help you with using this tool. Sorry. Good luck. ;)
Hong Kong
#4  
I like to use "Advanced" servo Profile as it can do "ALL" the servos real and virtual, including those servos which do NOT appear in "normal" servo Profile as in "Configure".

Upon entering "Advanced" it shows the profile that the project is using, not necessary the positions the current states of all of the servos. Or you can re-load using "Load" to load a new set, but the servos do NOT move.

If you want to "change" the neutral (Calibrate Position) say 90 degree, or Offset (to fine tune the neutral position) to match what the project wants, just "move" or "click" them, then it will move to the position (say 90 degree +/- 3).

Be careful here, if say, the current position of servo D0 is 1 degree but the neutral is 90, it will move from 1 to 90 quickly depending on the speed of D0 was set. (and so are offset.)

Say, I have a Six, before entering "Advanced" I would execute "STAND", so all the servos are in their neutral position i.e. 90 degree.

Hope this help!
PRO
Synthiam
#5  
The servo profile includes adjustments for all boards. They are all included in one file. The files are not specific to the board.

The advanced servo profile is used often and has a use. The use perhaps does not accommodate your requirement - which does not imply it's useless. Much how a flathead screwdriver is not "useless" if the screw have flathead bits.

Perhaps you can shorten the example of what you're looking to do - so I can have a clearer understanding of the requirement to see if it's something that I can assist with.
PRO
Belgium
#6  
am gonna try this with two screens ,each has its own servo profile.
excample jd screen1 and roli screen2.
#7  
@ DJSures

Thank you for your response. Of course, when I said it was useless, I meant it's useless to me (at the moment). Let me break down what I am trying to do:

I am using one project to control two different types of robots. One controlled via board 0 and one via board 1. Basically that all works fine. I can use two AutoPosition controls to make them move as needed, one set to board 0 and the other to board 1. Again all works great. I can even make one cause the other to move by inserting Command Control statements in a script or directly in "Action" sequences.

The thing is I need to calibrate both robots in this one project via servo profiles.

In the normal sequence of events, using a single robot, I would use the "Load" option under "Servo Profile" to load up the appropriate offset settings for that robot. Then I would click the "Calibrate" option upon which the robot would immediately go to the calibrate position, including the offsets previously set up. Now all those offsets would be applied to that robot as it is programmed to make it's various moves. I shut down the Calibrate window and go on from there.

But I have two different robots. If I now click the "load" option in the "Servo Profile" again and choose the servo profile for the other robot, the values load, but only insofar as there servos in the same designation as the first robot. For example, both JD and Six have a D0 servo, so when loading up the Six servo profile (after I have loaded the profile for JD) the value for D0 will change to that needed for the Six. The image for the profile would still be for JD, however. Plus there are more servos for the Six that are not on JD so they don't show up at all. Even if they did, whatever shows up will be automatically routed to board 0 when the "Calibrate" option is clicked.

So, basically I can't use the usual calibrate procedure on the second robot. That is where I thought the "Advanced servo Profile" option could work out. And it does in that I can set the offsets for the robots on Boards 0 & 1 just fine, watching it adjust each as I click the plus and minus symbols. Once done, I save the combined profile.

If I then, at a later time, open the "Advanced servo Profile" window and reload the profile I created before, and try to use those settings to cause both robots to be set to their respective offsets, nothing happens. Unlike when I reload a profile in the usual way and the offsets are applied to the robot when I subsequently click "Calibrate." There seems to be no similar functioning button in the "Advanced servo Profile" window to cause the re-loaded offset settings to be applied to the robots. And that is my problem.
#8  
Wbs00001, I thought I had your email address, but I can't find it. I have an off-topic question for you, can you drop me a note? My email is in my profile.

Thanks.

Alan
PRO
Synthiam
#9  
The advanced calibrate edit does what you're referring to, at least from my understanding of what you're asking. Perhaps the confusion lies in that the advanced servo edit doesn't move the servos into a calibrate position?

Perhaps you also do not have an "init" script that initializes the position upon connection? Maybe that's what we're discussing?

I just did a Ted talk 3 days ago (Friday) where i controlled 5 robots from one project, all robots use a separate with Auto Position connected to a separate EZ-B, and servo profile using a WiiMote.
#10  
@DJSures
OK, let's back up and punt on this. :)

What I want to do is be able to fine tune a robot connected via Connection 1. The usual way only appears to work with Connection 0/Board 0.

First I connect the robot via Connection 1. Then I send it to it's calibrate stance, via a "CALIBRATE" frame in the related Auto Positioner. All is fine and it goes to the Calibrate position.

Then I click on the "Advanced" option, under "Servo Profile" the servo Fine Tune Profile Window pops up. I then click the tab "EZ-B #1."

From there I can click the plus and minus adjustments to fine tune the robot connected via Connection 1. As I do I can see that robot connected through Connection 1 move appropriately.

So, I get all the servos set up with the needed offset and save the whole thing by using the "Save" option in that window. All is well and I can go on to use the robot as normal.

When I bring up the project again on another occasion, I connect up the robot to Connection 1 and set it up in it's Calibrate position like before. Now I want to apply the offsets I had when I fine tuned it previously so I go to the "Advanced" option, under "Servo Profile" again and use the "Load" option to re-load the settings I had in there previously. That works fine and I see the same offsets as I had before when I click the "EZ-B #1" Tab.

Now here is my problem.

Nothing happens to the Robot on Connection 1. It does not move at all from it's calibrate position. It does not go to the offsets I set up before. If I click one of the offsets, either plus or minus, the related servo suddenly moves to that offset position. So I know there is some connection there. Thing is, simply loading up the previous values does not move the servos to their offset positions.

By comparison, when doing a normal calibration for Connection 0, nothing happens when the fine tuning values are first re-loaded either, but when subsequently clicking the "Calibrate" option, those values are transmitted to the robot connected to Connection 0 and the robot jerks into it's fine tuned position. There seems to be no similar button for sending the values to the robot in the "Advanced" window to Board 1.
#11  
Okay. The light may have FINALLY dawned on me. I don't know for sure, but tell me if I'm right on this.

When I did a fine tune on a robot via Connection 0, I would first load the previous values by selecting the appropriate .servo file. I then clicked "Calibrate" and the robot jerked into the offset positions (from it's calibrate stance).

It just occurred to me that it is not necessary to click calibrate every time. That's only necessary when you need to change some of the values, like when replacing a servo. Is that right?

So all I really needed to do is load the .servo file and move on. Forget clicking the "Calibrate" option every time.

Likewise, using the "Advanced" window to re-load the offsets for every board at once, simply re-loading the .servo file will do the trick. The fact then robot does not move when I do is not meaningful. No "Calibrate button is needed in that window since all you have to do is click the appropriate adjustment on the appropriate servo to adjust it.

Assuming all that is correct, there is still a problem as I see it. If you replace a servo on a robot connected to anything but Connection 0, and have to fine tune it, the other servos not being in their fine tuned position, will make it impossible to properly adjust the new servo since each one is related to the one it is connected to. To do it you have to click all the other servos in that servo chain (like the arm for example) to force them into their offset position. Click once on the plus, for instance, and then the minus for each servo to get it to move. That seems to be the only way to do it at the moment.

So, it would still be nice to have a "Calibrate" button for each board so the entire robot can go to it's fine tuned position, like one connected to Connection 0 can.
Hong Kong
#12  
@WBS,

Just take a look on the project "JD Multi-Board" which you uploaded.

In "Connection", one of the script on board 1:

ControlCommand("Ini Board 1t", ScriptStart)

which will never be executed as there is NOT a control "Ini Board 1t", but "Init Board 1"

In "Init Board 1", the line for #Neck:

SetServoMin(d1.1, 70)

upon execution, it will only catch error, as there is NOT a value d1.1, but 1.d1 to specify the port d1 in board 1.
#13  
@kaycekwan
Thank you for taking the time to find those errors. Apparently my cursor was between the i and t in "Init" when I added "Board 1". Having the name of the Init Board 1 script wrong in the call explains why I didn't get errors concerning the wrongly formatted servo statements. It never executed. All corrected now. Fortunately it didn't make any difference in the demonstration of the wildly gyrating servo action I was trying to show, but it's always good to have things working fully.

Thanks again.