Asked — Edited
Resolved Resolved by CochranRobotics!

Programming Architecture

I have yet to buy my first one and am curious about the programming model. I can't tell if you write programs that run on the device, or run on a host that talks to the device, or both.

And I'm not sure what the platform is. It looks like a lot more powerful than an Arduino (which is slow and low memory), but I saw some post that made me think otherwise.

I want to write my own code that runs on the device and that supports my own interface to my own host where I control many other types of devices. How possible is it? Or, to do the more complicated moves do I have to use the GUI tools?


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  

This will help you the most - here is the open source package UniversalBot: http://synthiam.com/Products/ARC

With UniversalBot, all of the commands are provided in code examples.

As for a loaner robot, sadly we do not have spare units even for ourselves. We have a backlog of EZ-B's and robot orders due to purchase demand. Our manufacturing facility is working long hours to catch up - meanwhile, we are looking for new facilities which can help us scale.

MeaowMeaow looks like it will be a fun project:)

#10  

This thread is great! Direct answers about the programming innards. I'm copying it all into a file for later reference.

Perhaps now would be a good time to ask I question I had asked before but did not get an answer to. As I understand it, the values representing the position of the servos are simply stored in ARC based on whatever position command was sent last. When a GetServo() instruction is sent, all you are doing is reading the stored value in ARC and not a value directly from ezb. Therefore no communications with the ezb is needed to execute that function. Basically there is no way currently to verify the actual mechanical position of the servos.

The question is concerning the getting of the values from the digital and ADC ports. Are those values recieved directly from the ezb when calling a function such as GetDigital(), or GetADC()? It would seem to me they would have to be directly from the ezb, but wadda I know. Thanks.

#11  

That answer really depends on the type of servo. If digital servos are used, no, you cant read the position of the pot inside of the servo. This logic is all run off of the controller board in the servo. You send a signal that tells the servo what position to move and the controller board inside the servo then moves until the pot inside the servo has reached that location.

If you used a motor with the pot connected to an analog port, you would be able to do this but you would be bypassing the controller board in the servo.

Digital ports only return back high/low logic. Analog ports can return back variable data. This limits what you are able to read from the port.

#12  

There are other solutions to this also. For example, you could connect a pot to an analog port and have it monitor the position of the servo, but then you would be getting the information from the analog port and not from the servo itself.

PRO
Synthiam
#13  

WBS, the LEARN section is a valuable resource for information. It can be accessed by pressing the menu labelled LEARN from the top of this website. That section will show you the percentage of courses that you have completed so you may keep track of your progress.

There is an activity specifically on How Servos Work. A servo is a one way communication. The EZ-B can never know the position of a servo by asking it. The EZ-B only knows the position of a servo because it is telling it. And the EZ-B only knows how to control the position of a servo from ARC. So therefore, the answer to your question is always ARC.

For more information, use google to research how a servo works and view our activity tutorial: https://synthiam.com/Tutorials/Lesson/48?courseId=6

#14  

@WBS00001 I get what David is saying.... if you want absolute position of a typical hobby servo just open it up connect 3 wires to the pot and run it to the analog port of the ezb... To be honest not sure why you would want to, though... I trust my servos to move to their correct position and 99.99% of the time they do... Unless the servo is faulty or restricted somehow they will move to the position they were told to.... You could use dynamixel as they will provide position feedback....

#15  

I totally agree Richard. Not really suggesting it, but more trying to show the difference between analog and digital I guess.

#16  

@David.... You know after the fact I wish I had paralleled the external pot wires of my inMoov's large servos and ran them to the analog ports of the ezb.... I mean since I had the servo open anyway.... That way I would have 100% servo position confirmation....

By the way dude... you are freakishly, seriously smart.... Thanks this is awesome info....:)

@WBS00001 To sum it up servos in general are one way communication (unless you hack them or use dynamixels) regardless of what microcontroller or robotic platform is controlling them...