Hello there,
I’d be glad if someone could help me out with some advice…
I am an absolute beginner when it comes to robotics and electronics, but I have an upcoming project, where I have to make a Lynxmotion AL5D arm perform a looped sequence. It’s for an art exhibition, so it’s going to have to run every day, all day, for 3 months. And it has to be very simple to be started every morning, when the exhibition opens.
Since I have no experience with Python, I’d like to use the easy Flowarm PLTW (or Servo Sequence Utility) software that came with the arm to create this sequence. I was planning on using a Raspberry Pi (3b), hidden inside the pedestal. As far as I know, you can’t install the complete Windows OS on a Raspberry?
So, here are my questions:
If I install Windows 10 iot on the Raspberry, will Flowarm be able to run on that?
If not, is there another way to make Flowarm work on my Raspberry?
If it DOES work, is there an autostart function in Flowarm that immediately starts my sequence as soon as the raspberry is launched?
I tried Virtual Box and Wine on a Mac to see whether you can control the AL5D via Flowarm from that. It didn’t work. The same for Servo Sequencer Utility. Both softwares were running, but they did not connect to the SSC-32U / AL5D.
As you can see, I’m a complete novice. Please don’t judge me!
I’d be grateful for any kind of advice…
Ps: So again, here’s what I need:
To start the whole movement of the robotic arm has to be super easy.
Then, once it’s running, it has to just simply do the same movement over and over again. Looping all day.
And I can’t use a (normal) PC for that. It has to be run from a microcontroller like Raspberry, Arduino or something else.
Whatever works.
Please find below answers to your comments & questions in a in-line format:
I am happy to help!
Since you are a beginner, I recommend you have a quick look at the blog article series “How to Make a Robot”. The 10 lessons cover most of the basics of robotics so it should give you a better understanding of your projects and how to realize it successfully.
Of course, if anything is unclear or you have more questions, feel free to post again on the forum!
When you mention “all day”, I assume you mean like a 8-12 hour day? Please note that the Lynxmotion AL5 robotic arm series are made with hobbyist grade RC servomotors. Therefore, they cannot run continuously; the motors needs breaks to cool down between uses so as to not damaged them.
As a general rule, most motors have something called a “rated duty cycle”. This defines how long the motor can be active for over time.
We have much data for the AL5D from its use in schools .Typically, it can be safely used for ~20 mins under nominal payload (< 100 g) without risk to the motors. Of course, after such a long, continuous use you would need to leave a long enough break where the servomotors can cool down fully to use it again. Alternatively, other users setup their AL5 so that it does a task and then goes limp (i.e.: takes a break). This way, the servomotors never get very warm and you can resume faster.
The simplicity of starting your setup will really depend on how well you integrate all the parts together. If done properly, it can be as simple as powering the device (i.e.: flick a switch!).
You can certainly do that. It should be noted that FlowArm (and the Servo Sequencer Utility) only work under Windows. At current time, we have confirmed it to work for all versions from Windows XP up to Windows 10.
I did not play around too much with the Windows “OS” for RPi. From what I understand, it can only run Universal Windows Apps. It should be noted that the software used to create FlowArm and Servo Sequencer Utility is not compatible with the UWP and therefore cannot run Windows 10 IoT Core.
As mentioned above, this would most likely not work since FlowArm/FlowBotics Studio are not compatible with Windows 10 IoT Core and UWP.
Not that I know of. The parent software of FlowArm, FlowBotics Studio is made of C++ that targets many libraries that are Windows only and/or Windows specific. Therefore, there is no easy way to run it outside of regular desktop/laptop Windows installations. I also tried to run it under Wine under some Linux distros but without success. Some wrappers are missing for required libraries at this time. That being said, Wine would not work on RPi either (* ok, not entirely true, but not trivial/limited and therefore not very helpful for this situation)…
By default FlowArm always play the home sequence. If you made this your starting sequence and changed its decision frame (the last one) to an infinite loop you would most likely get something that works well.
If you cannot connect to the SSC-32U/AL5D, there are multiple possible reasons. The most common is that only the USB cable was connected but the power was not turned on. Please note that the SSC-32U does not receive power from the USB other than for showing up as an interface on the host computer. To power the electronics, 6 V DC must be applied to the VS1 screw terminal on the SSC-32U (using the provided power supply with the AL5D).
Another reason may be that you simply did not share the USB port detected by your host OS to your guest OS/virtual machine. You can find plenty of info on how to share a FTDI VCP in VirtualBox online, such as with an online search like this one.
No worries! While you may be a novice at robotics, RPi programming, etc. you certainly are not at communicating your ideas, learning and experimenting! All the basics required to learn new skills!
I strongly recommend that you use either the RPi or an Arduino to do what you are trying to achieve. Even better, we have sample code for both to get your started quickly. You can find example code for controlling the arm with a RPi using Python here. There is also an example for using an Arduino-compatible board to control the SSC-32U here.
Alternatively you can simply connect an Arduino-compatible board directly to the servomotors (Only the signal pin! You would still need a separate 6 V DC power source [such as the one that comes with the AL5D] for the VCC/GND pins of the servomotors.) and use that to control it.
We have a few Arduino code examples available here. One of them even has an example of having the arm run through a pre-defined sequence! Have a look here.
As for having it start easily (and quickly) I’d recommend going for Arduino instead of RPi. Not only is it more likely that it will be easier for you to make it work (code, sequence, etc.), it also is easier to ensure it runs at power-up as expected and it has basically 0 start-up time where as the RPi is more complex and therefore takes much longer to boot up and will require more knowledge to get it to run properly.
Thank you so much for your elaborate reply, scharette!
By the help of a friend, I managed to control the AL5D via Python script. So I don’t need the Flowarm Software anymore, which makes a lot of things much easier…
I hadn’t thought of the possibility of servos overheating. Thank you!
I now programmed the arm to perform one movement, lasting about half a minute… then going to “rest” for one minute. Do you think that is enough to prevent the servos from overheating? And yes, it’s supposed to run 8 hours a day, 6 days a week, for 2 months! Do you think the AL5D will last that long???
To make it “rest”, I set its position to as flat as possible (to what it was when it came in the box (assembled version))… But I can still sometimes hear one of the servos…
Is there a (python) command where I can tell the AL5D to go completely limp for a certain amount of time? Just to make sure that all the servos get a break for one minute… And then pick up the looped sequence again afterwards?
FlowArm PLTW is primarily used to teach students about robotics in an assembly line context. While it can be used for other cases, it is not necessarily always the best choice as you’ve noticed.
Most people don’t think of it to be honest. Most toys and other devices that use such servomotors actually get saved by batteries running out (and thus don’t need to mention it). Overheating is much more likely with an AL5D since the power supply is wired to AC (not batteries) and therefore never runs out!
That may be enough. It really depends on what the task is, the overall temperature of the area, airflow available, etc. If the arm if lifting a very small payload (or none at all), it most likely would be enough.
While an appropriately chosen rest period and proper environment where heat can escape will ensure the servomotors do not overheat, please not that they are still hobby-grade servomotors and therefore are not meant to be used continuously. During those two months you will most likely cause them more wear than most people do in years of use.
Your display duration is ~384 hours powered (8 hours x 6 days x 8 weeks) with a duty a duty cycle of 1/3 or ~33% => 128 hours of use. Most robot arms are used in educational contexts where they get maybe a few hours of use a week!
Therefore, it is not unreasonable to expect that one or more servomotors may fail at some point. Unfortunately, it is quite difficult to know when or if it will happen. My best recommendation is to have some spare servomotors in case something happens. Even better would be to have a second arm completely assembled and ready to go for easy swap while the other is being repaired.
This means the servomotor is still trying to hold a position, which is normal, since you gave it one to go too!
To make a motor idle (still powered but not “holding” / heating up), simply send it position 0. For example, if you were trying to make channel 3 go limp (powered but not holding), you’d send something like #3P0 (where represents the return carriage character). This will cause the control signal to go to a digital “low” or “0”. Most RC servomotors on the market require a special control signal pulse that is sent every 20 ms. If they do not detect that, they go limp. By setting the pulse to “low”, you are effectively turning off the control signal pulse and therefore making the servomotor go limp.
After the 1 minute break simply go through your sequence again as normal.
Also, I think I forgot to link to it last time, but here’s the SSC-32U manual. This is a great resource to get a better understanding of how it works. In your case, you may interested in specifically pages 24-26 which detail the commands and how to work with them. By using group commands (more than one servo at once) you can ensure smoother motions of the entire arm at once. You can also use the S or T parameter to control the speed or duration of a move (group or single motor).
Another point to note is the gripper. The way the gripper works does not allow to use the full range of motion of the RC servomotor (500µs - 2500 µs) without damaging the motor. This is because of the gripper’s mechanical structure. Therefore, I recommend that you be more careful with that one and if you move it to its two extreme positions (fully open and fully close) to be sure to not go too far in either direction.
Sincerely,
P.-S.: Feel free to post (here or a new topic) about your project and maybe share some pictures/videos of it? I’m certain the RobotShop community would be curious to see what it all looks like when it is up and running (and even the building process!).
Dear Scharette,
Again, thank you for your quick and insightful reply! (Your answers are amazing!)
So, my project is pretty much running as I want it. I’m glad I figured it all out!
But there are some minor things I’m still not too sure of…
Do the servos need to be oiled once in a while? If so, how often? / which part exactly? / what kind of oil?
As I told you in earlier messages, I programmed the AL5D to go limp every minute (it works for 40 sec, then rests for 80 sec)
and I set the raspberry to shut down after 8 hours (when the museum closes). They are going to shut off the electricity for the night, and power it back on the next morning - here comes my problem:
I noticed that, if you bring back power to the AL5D after it’s been shut off, it jerks for half a second - causing the gripper to open slightly. But I need it to hold something (a tiny stick, of sorts) the whole time. So as soon as the AL5D is switched on, it drops the stick.
Is there anything I can do about that? To prevent it from “jerking”, or prevent it from opening the gripper… or some other way to just make sure that it won’t drop the stick?
I quite glad you find them helpful! I’m building up a knowledge base from these answers that seem the most helpful so they can be aggregated in one place for easy access. I’ll most likely add this topic to it, then!
Very good! There’s nothing quite like the feeling of completing such a project! As mentioned before, feel free to share some picture or videos. of the project! I am certain I am not the only curious one concerning it.
In theory they should have all the grease (not oil) they need. That being said, your motors will face an unusual amount of use compared to what they were designed for. If you do start hearing “grinding” like noises inside it may indicate the need for more grease. Since we do not have the specifics on the grease type the safest bet is typically to open the servo, remove all the gears, clean them (with grease removal solvent) and then re-grease them with an appropriate grease. You can most likely find the removal liquid and proper grease with some online searches.
We typically do not recommend to our customers to do this, though. While doable, it is a messy process and a wrong re-assembly could potentially damage or prevent proper working of your servomotors. If you do face such issues it may be simple to just replace the servomotors (or buy some replacement in advance for quick turn around).
If you still wish to go ahead with this, look for some videos (such as this one) that shows how to do it and hopefully links to proper grease, etc. We do not currently sell RC servomotor grease.
The very first thing that happens on power-up is that the servos will go to a default position. Since these RC servomotors have no position feedback, they’ll try to go wherever you tell them too with the SSC-32U but may go to an intermediate position in between. Also, on power-up, most RC servomotors do cause a bit of a jerk, which can cause a small amount of motion (always in the same direction)
I see two simple options to this:
De-assemble and re-assemble your gripper so that the servo center is in the exact position where it is holding your stick. Make sure to only send 1500 µs so that it always stays in that position. Also, since the “jerk motion” should always be in the same direction (CW or CCW), reverse the direction of the servomotor (how you place it in the gripper) by 180° so that it jerks towards holding more instead of releasing your stick.
Set the position so that it holds the stick and disconnect the servomotor of the gripper from the SSC-32U. If if does not need to drop the stick and it does not place pressure against anything else then you don’t need to power it at all! If the stick doesn’t hold well still or moves a bit during motions, simply use some glue to hold it in the gripper!