Am I in the Right Place to be Learning?

Hello everyone,

I found Lynxmotion’s webiste a LONG time ago and bookmarked it because I was interested in robotics. Well, I finally have a little bit of $$ to play with to start learning. I need advise though to make sure I am heading in the right direction. I have quite a few questions, so please bear with me here.

I am very interested in servo control and other robot control that can be used for automation. Eventually, I would like to get into larger arms that use the same concept as the Lynx arms, but on a larger scale. I can see me building something to lift components with weights on the order of 500-700 lbs…

Obviously, I will need new, bigger structure, and more powerful servos. I may use electric linear servo motors, servo controlled hydraulics, or a combination of both. I don’t see needing more than 8-10 axes, nor do I need super accurate control, but I do see the potential for various feedbacks (feedback sensors external of the servo itself to eliminate effects gear backlash, structure deflection, bearing/bushing wear, etc.).

So, the big question is, should I start with a Lynx 5 or 6 series arm, or do I need to search elsewhere? Is the SSC-32 capable of controlling large servos? What about reading external inputs? This could be a conflict, because what is it controlling, the servo drive/controller, or the actual motor??..

Correct me if I am wrong, but from what I have gathered, the SSC-32 simply provides PWM signals to servo motor controllers. Based on this, it seems I could use an infinitely large servo as long as its controller required PWM input. BUT, if this is the case, what is the advantage of the SSC-32 over a Basic Stamp or something similar?

The biggest advantage I see at the moment is the RIOS software that would allow me to “teach” the arm motions that it would repeat. It would also provide a dummy interface to program input to output actions. Maybe I am wrong here…

So, to recap all of my ramblining, this is what I am asking about:

  1. Based on my desire to quickly move to larger, more robust arms, is the SSC-32 what I need to use to learn and expand with, or am I better off with another solution. If something different, what do you suggest?
  2. Is the SSC-32 simply a bunch of PWM outputs? If so, how does this differ from a Basic Stamp or something similar?
  3. Is the RIOS a software that provides a dummy interface to create code for repeatable motions and input/output actions? I can see where it would be extremely useful to manually control the arm to get its motion down to perfect, then flip a switch it to automatically repeat.

Thanks for your help; I look forward to hearing from all of you!

The success of what you want to do depends a lot on your current mechanical, electrical, and programming skills. Keep in mind that the ssc-32 is designed for controlling hobby level servos. Some general thoughts on your questions:

  1. Large arms are generally way outside the hobby relm. But if one really wanted to, with some creative thinking and a minimum amount of extra equipment, one could probably use an ssc-32 to operate an excavator like in the bottom pix.

  2. In addition to hobby servo PWM output, the ssc-32 also has the capability for digital output and analog/digital input. This additional I/O capability would be needed for larger scale projects. A certain level of computer programming would be needed to make use of these additional capabilities.

  3. I don’t have RIOS, so I can’t speak to its capabilitys. I would think it would need extended I/O capabilities for use in larger projects.

I suggest you purchase a ssc-32 and several servos (a 1/4 scale and a couple of Hitec HS-422) to start learning and understanding their method of operation and capabilities. As always, read…, read…, read.

findstone.com/img/rs404excavator.jpg

Zoomkat,

Thank you for the quick reply. It sounds like I would eventually move to a different system if I plan to use larger servos. Based on that, do you believe I would be better off to start with a more industrial friendly system, or start with lynx?

To answer you question about my technical background, I am a mechanical engineer and currently deisgn custom hydraulic cylinders. So, my mechanical background is there. Electrical and programming skills are stronger than most mechanical engineers, but I am certainly not a electrical engineer or computer scientist. While I do build some simple circuits and program some really simple stuff, I do not consider myself to be even a beginner programmer or circuit builder.

I would love to build something just ilke the Lynx6, but scaled up. I don’t have one yet, but from my understanding of its accuracy, it would be fine and its DOF are fine, I just need more physical capacity.

Thanks again!

You don’t say how much $$$ you are willing to spend, and I am assume this is a hobby project and not for commercial use. That being said, you might start with the below trencher and outfit it for computer control. 1/4 scale servos could probably push/pull the hydraulic valve levers (if too stiff, remove the internal centering springs in the levers). Put a pot at each joint to determine the arm position by outputting a variable voltage (like the pot in a servo). Read the pot position with the analog inputs on the ssc-32. Make a simple computer program that queries the voltage input to the ssc-32 and reads the position output returned from the ssc-32. Based on the current pot position, send the 1/4 scale servo a position to make the arm move in the desired direction. When the pot output voltage is at the desired position value, send a command to the servo to return the lever to the neutral position. Just an idea on a place to start for a larger hydraulic actuated arm.

harborfreight.com/cpi/ctaf/d … mber=93167

one of the biggest problems with using an ssc-32 on systems where a lack of safety could really hurt someone is there are no interlocks integrated into the ssc-32. if you start controlling real hydraulic actuators with hobby / entertainment / toy controllers you need to seriously make certain you have other safety interlock provisions in place. I am not saying don’t use the ssc-32 for this type of application, I am saying if you choose to then you need to make sure you look at the project at a systems level when it comes to safety and plan accordingly. :wink:

Thanks for the information guys.

Zoomkat,

The link you offered is a little bigger than what I would want as far as span, but the concept still holds. Rather than using servo motors to drive levers thouhg, I would purchase servo valves to eliminate that mechanical connection and extra components. I would also install linear transducers into the cylinders themselves (we do this all the time at work for our customers). They have various ouput options and are very reliable. Unlike potentiometers, there are no parts that touch each other, so there is nothing to wear, similar to an encoder or hall sensor. This would be for the end product though, not a prototype.

EddieB,

You make a good point about safety. For now, I don’t care as I am just playing for now. This is certainly something to consider for the real machine (which I don’t even know what it is yet, haha).

However, maybe I should clarify what I am looking for and clarify my question. For now, I plan to build a Lynx 5 or 6 for educational reasons. My primary concern is learning this software and then find out that if I move to something bigger, the SSC-32 is not capable of doing what I need and then have basically start over. Even if the SSC-32 isn’t expandable/powerful enough for my end product, I would still be happy if what I learned with the SSC-32 could be carried over to industrial control.

What i want to carry over is codeing, sensor selection, and sensor implimentation. The concepts I already have as far as feedback, powered motion, mechanical linkages, etc are good. What I currently DO NOT know is how to code them, what sensors are available, and how to implement them into my system.

That being said, do you belive the SSC-32 is a good starting point, or do you think I would be better off to find a true inudrial control system to learn with? I know I won’t have 100% crossover from the hobby world to the industrial world, but I’d rather not learn 2 systems…

Hey blakrapter,

I’m a student in Robotics & Automation at college right now and am in my final year (finish in August).

There is a lot that transfers over from hobby robotics to industrial… but it’s not usually the programming language you learn. It’s the broader concepts that transfer.

Most industrial applications use PLCs (Programmable Logic Controllers) which are horribly confusing unless you’re really smart or you take a class on them. There is some information on the net for them, but it’s sparse and since there are several different brands each with their own language structure… there’s little hope of learning how to use one unless you want to take some night school (plus they’re expensive, at a couple thousand dollars each, plus software licenses). They are really great from controlling I/O, sensors, actuators, motors, etc. They are really annoying for programming intelligence. A PLC does I/O really well, but not much else. That being said, anything a PLC can do, a micro-controller can do as well plus a whole lot more.

Micro-controllers are what the SSC32 is. The SSC32 (from my understanding) has firmware (a program) that takes whatever string of characters you send it and then sends output signals to servo motors. To program a micro-controller, you’d need to know what computer languages a given micro-controller can understand. Sometimes they have a proprietary language, but there are several out there that can understand C code. Basically if you learn C you can transfer those skills to just about any other language you want, you just have to learn a new syntax (structures are almost always the same). Programming a micro-controller is called “embedded programming” since it’s generally programmed once and rarely touched except to fix bugs.

The next level up is what you do to send those strings of characters to the SSC32 board. For example, I haven’t got a clue what the SSC32 program looks like, but the manual tells me what kinds of commands it accepts. It accepts ASCII character strings that terminate with a character 13 (an enter) using a serial cable. A serial cable connects from my computer’s comport to the SSC32 board. Now, to control my robot I wrote a program (in C) that first opens a connection with the com port (“COM1”) sets it up to 115,200 baud rate and all that jazz. Then all the rest of my program does is manipulate character strings, cutting them up, pasting them together (concatenating) and finally tacking a char(13) to the end of them and then writing that to the com port. I didn’t need to understand how the SSC32 board works to be able to do that, I just needed to know what the program embedded on the board would interpret.

Now, that’s the kinda stuff you’ll have to learn every time you start a new project. First how to establish communications, serial cable, wires, is it digital or analogue, do I have to interface a PLC with a PC… etc. Once communications are established, what is the expected input for a desired output. The SSC32 board expects a command to look like “#0 P1234 S100char(13)” the char(13) is a non-displayable character. The number following # tells it what motor you want to command, the number after the P tells you the pulse you want, the number after the S tells it what speed to set it at and finally the char(13) tells the board that you’re done sending the command and that it can execute it immediately. All that is determined by whatever program is on the board. Without the board, the servo itself would determine what command is required. Instead of character strings, it would be PWM (Pulse Width Modulation) which at the moment, I don’t know how to send directly from a PC. I’d have to research that.

If you were to buy an industrial robot, it would probably come with it’s own language/software. The manual would tell you want kinds of things it understands like loops, goto, if-then-else statements and that sorta stuff, but if you know a programming language like C already, then you already know the structures and it’s just a matter of learning the new syntax. An industrial robot is likely to come with several inputs and outputs which are literally just wires that you can either read a voltage from or send a voltage to. Generally 5VDC or 24VDC are signal voltages (VDC = Voltage Direct Current). So if you were using a PLC, you would wire PLC outputs to Robot Inputs (and vice versa) and you have communication. In the PLC program you would read inputs from sensors and based on multiple signals, send an output signal to the robot. The robot would read that input signal and based on its program, act on those signals. For example, a part present sensor tells the PLC that a part is ready, the PLC then tells the Robot that a part is ready. The robot then runs a sequence to pick up that part and place it somewhere else. The robot then tells the PLC it’s completed it’s task. In some cases a sensor may be directly attached to a robot input, but a PLC is usually used as a middle-man because it may control and coordinate the sequence of an entire assembly line and not just that robot.

Oh and also note, that the purchased industrial robot is most likely controlled by an embedded chip (micro-controller). A purchased robot just saves you from having to physically build the robot, wire it, and create a program to work out how to turn on-off motors directly or open/close valves etc. It takes away that very low level of complexity so that all you have to do is program the robot to move from point A to point B, not how much each motor needs to move in unison so that it move in a straight line from A to B.

here’s an example with the SSC32

say the servo is currently at Pulse 500
you send the command: “#0 P1000 S100”

The above moves servo 0 to position(pulse) 1000 at a rate of 100 pulses per second.

if the servo started at Pulse 500, then it would take 5 seconds to complete the move. Now you didn’t have to explicitly send each command every 1/100th of a second ie:
#0 P501
#0 P502
#0 P503

#0 P998
#0 P999
#0 P1000

because the micro-controller knew how to interpret S100. If you intend to build you own robot, then you’ll also have to deal with these low level type of commands whether you put them on a micro-controller or incorporate them into an executable program on your PC.

The nice thing about something like a purchased robot is the ability to teach points (something I haven’t figured out how to program yet on my SES Arm, if it’s even possible). Basically most industrial robots, will allow you to first “Home” the robot which is kinda like zeroing a vernier… it just lets the robot know where it is and all its movements for that session will be referenced from it’s home position. Then to “teach” a point, you physically/manually move the robot to where you want (while all joints are limp) and then you freeze it (the joint stay where you move them, but become stiff) and then you save that position as a point. The robot records the positions of all its motors/servos and you can tell it to move to Point1 for example at any future date and it will go to the exact position you put it in before. Otherwise you have to explicitly tell it how far to move in the X,Y,Z planes… and in a lower level scenario you’d have tell each motor/servo where to be so that the tip of the robot ends up in the right spot (something I’m programming my SES Arm to do right now).

I didn’t specifically answer all the questions you had, but I just am relating my experience with what I’ve learned in my course and what I’m applying to this robot at the moment.

conestogac.on.ca/fulltime/pr … 92c&v=0801

Reading the class descriptions may give you an idea where you might want to start based on your current knowledge.

Also, these labs along with the powerpoint slides for notes would be a fantastic way to learn C programming without paying $3,700 a year in tuition :slight_smile: I’d also suggest downloading everything before the end of August because it’ll be reset most likely for next semester or in January.
conestogac.on.ca/~cdobson/

Also google is your friend for finding new functions in C. A dozen “if statements” just won’t cut it forever in the more complex programs, so you’ll have to learn the “switch/case statement”, also atoi and itoa are useful to know exist… I only recently learned how to use malloc. To find new functions to use, your best option is to just look at all the functions names in a given library and see if any of them fit the task you need to accomplish
Here’s a good resource:
cplusplus.com/reference/clibrary/cstdio/
Frequently functions you write start really big and then after many hours of head-scratching and debugging, it gets smaller and smaller… possibly even being replaced by a standard function already contained in the library you included and had no idea existed when you started.

The program I’m writing for the SES Arm will be posted at a later date when I finish it. I’ll also be posting all the versions it went through.