| View previous topic :: View next topic |
| Author |
Message |
trevarthan
Joined: 17 Oct 2006 Posts: 42
|
Posted: Fri Dec 07, 2012 5:08 am Post subject: Super Giant Servos |
|
|
I almost tacked this onto the end of the OpenServo V4 thread, but then I thought better of it.
I've joined in the conversations here a bit over the years. I even bought some open servo V2s a few years ago (from ginge or robotjay, I don't remember) and got them working with a Hitec I bought for the purpose.
I'm a software developer, not a hardware developer. I daydreamed a lot about skeletal animation software back when I first discovered the project all of those years ago, but I ran into too many setbacks along the way. I found the OpenServo V2 a little difficult to use. Lack of connectors, lack of I2C on my computers, lack of hardware development background, etc. But I still got at least one of those boards running, and it was pretty awesome.
These days I mostly write iPhone, iPad, and Android apps, along with some Ruby on Rails websites. I write native Objective-C when I have to, but most of the time I find myself writing Javascript. I think it's a horrible language, but it's the most common denominator, so I grumble and do it anyway.
Just coming back here again has me day dreaming about an iPad robot animation studio. Maybe using Unity3d. I think Unity has an iPhone version these days.
Anyway, I skipped OpenServo V3 because I decided I needed larger servos to create the personal robots I envisioned. I didn't see an easy way to make that happen using open servo and my interest faded.
Recently, I thought I would check back into the robotics scene (I do this every six months or so) and see if anything had changed. Gah. Cheap bluetooth i2C bridges *still* do not exist [though multi-step adapters seem possible]. That's unfortunate.
However, the biggest change I see is in mobile computing power. It has just exploded. It's like it snuck up on me. My first experience with embedded Linux systems was a m0n0wall back in 2004. It was like the 90s all over again. CompactFlash cards were measured in megabytes, not gigabytes. Then in 2007, before the iPhone, I paid $800 for a Nokia N800, hoping to use it as an OpenServo "brain", despite it's lack of an accelerometer.
Fast forward to now. I recently ( a month ago ) bought a used HTC Incredible (Android phone) on Craigslist for just $60. It includes a camera, accelerometer, GPS, wifi, bluetooth, 3d gpu, etc. The touch screen sucks, but it would make an excellent robot brain. It's a beast compared to what was available 4 years ago, and it's dirt cheap. My wildest robot fantasies are within reach. Apps can do anything these days.
If you can't get Bluetooth to I2C working, or you prefer C or Python, I noticed this awesome little device called the Raspberry Pi. $35 for an embedded ARM based Linux board. No GPS, but I saw a lot of daughter boards with additional hardware. It looks like Pi revision B, version 2.0 features GPIO pins that will handle I2C nicely too.
So yeah, the robot "brain" is totally cheap these days.
That leaves the robot's body and the large format servo issue. I did some research. I found windshield wiper motor conversions [labor intensive] and the TONE PS-050. [Expensive $250.]
I see people implementing and re-implementing these DIY windshield wiper systems. They're ugly one-off hacks at best, but they're popular because they're relatively cheap.
I need 18 to 22 of these windshield wiper servos to realize my vision. I figure I need at least 3 or 4 just to play around.
Is there anything we can add to OpenServo V4 to make high power large format servos easier to build and/or retrofit using OpenServo?
Better yet, could we make a digital TONE PS-050 equivalent for $100? I bought a TIG welder a few months back. Between it, a lathe, a CNC machine, MakerBot, and OpenServo, I figure anything is possible.
Maybe we can even throw in support for ultrasonic traveling wave motors while we're at it? Just kidding.
What do you guys think? Am I really nosing the frontier here, or are large format motors where this whole thing is headed? |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Thu Dec 13, 2012 10:21 am Post subject: |
|
|
| I've haven't checked in on the forum for a while, but just got around to it. I've been interested in a larger powered device as well. I know Ginge is interested in the micro RC's. I also know there has been some talk about switching to an ARM platform as the STdiscovery is only $12 and includes a full blown IDE that allows you to step through code and such line by line. I'm OK with hardware design, and weaker with software. Do you think you can make the software go if we spin a piece of hardware? |
|
| Back to top |
|
 |
trevarthan
Joined: 17 Oct 2006 Posts: 42
|
Posted: Thu Dec 13, 2012 4:53 pm Post subject: |
|
|
| Absolutely. Also, if we can get to a cost estimate, I'd like to run an Adwords campaign to see how big the market is. We should be able to find out how much demand there is for the product without building a thing or writing any software. Would be a fascinating experiment. |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Thu Dec 13, 2012 11:25 pm Post subject: |
|
|
| What size motors where you thinking? Well really what size drivers? Should we plan for the same old AVR, or should we consider an ARM based STdiscovery platform? I'm tempted to make it a brain that connected with some kind of header that potentially connects to some kind of changeable boards. Such that a variety of drivers can have the same controls. I'm not too concerned about the market, I'm not in it for the $, also no complaints if you want to make a buck or two. I'm happy to help either way. |
|
| Back to top |
|
 |
trevarthan
Joined: 17 Oct 2006 Posts: 42
|
Posted: Fri Dec 14, 2012 1:01 am Post subject: |
|
|
I'm certainly not opposed to making money. People have to eat.
However, I'm more interested in making the technology readily available and easy to use. I doubt I'll be able to manufacture anything in economic quantities. I'm sure someone else will be better at that than me. (Sparkfun comes to mind)
For my purposes (a biped man sized robot), I think I'll need 4 times the power of a standard metal gear high power RC servo, with the same power to weight ratio.
Which motor fits that criteria? I have no idea. What are my choices? Where can I find a list of motors and their power outputs/weights?
I think ARM sounds good, especially if it's cheaper and easier to use.
| Quote: | | I'm tempted to make it a brain that connected with some kind of header that potentially connects to some kind of changeable boards. Such that a variety of drivers can have the same controls. |
I'm not really sure what you mean by this. Can you explain? |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Fri Dec 14, 2012 10:25 am Post subject: |
|
|
For larger devices space is a bit less critical, and flexibility will likely be something strongly desired. So instead of making a board that is specific to an application, which will have a more limited interest, perhaps we should start with a more broad approach. So I suggest something similar to a Arduino stack with a brain that connects to a device style add-on board. Perhaps an existing shield can also be found for motor driver control and motor position feed back. Even though this project would likely be easy to port to an Arduino platform, I would suggest the STDiscovery platform instead, found here.
http://www.mouser.com/new/stmicroelectronics/stm32discovery/
http://www.mouser.com/ProductDetail/Aries/04-003-173/?qs=kYCaYsuokbDi56RYUcOd53WdGkJVC2XrWHBfbDlnssI%3d
That platform offers pretty much the same things you get from the Arduino, but also offers line by line live debugging with break points and such. You an also use it as a programming interface for newly MFG'ed never been flashed before boards. Such that if you spin a custom board, you can use that above noted cable to program and live step through your code in a custom board.
The IDE is free an very powerful. It can be found here.
http://www.coocox.org/CooCox_CoIDE.htm
So I think the question is more of what motor to drive and can we find an existing sheild. If we can find an existing sheild, that could fast track the development. Here are a couple starting points I found in 10 seconds of google searching.
http://www.pololu.com/catalog/category/10
http://www.robotpower.com/products/MegaMoto_info.html
https://www.sparkfun.com/products/9815
This would allow you to get some hardware and fairly quickly start a porting and debugging something. Once I have a better idea of what capabilities we are looking for, I can spin a board that is a bit more specific to a particular application. I could also consider making an adapter board, such that you can plug this ST into an adapter and then use existing Arduino stuff. I wonder if an adapter board already exists. Perhaps that can be purchased as well. |
|
| Back to top |
|
 |
trevarthan
Joined: 17 Oct 2006 Posts: 42
|
Posted: Fri Dec 14, 2012 3:20 pm Post subject: |
|
|
I see where you're going with this now.
That megamoto looks good at $50 ea. This MOSFET based board has the same specs but costs more: https://www.sparkfun.com/products/10182
Could the megamoto be used with the $25 Arduino Leonard? https://www.sparkfun.com/products/11286
If so, I'd say that's ideal. $75 buys all of the tech hardware. Hopefully we can use USB for communication, which I think is a huge step up from I2C due to availability and plug-and-play. In addition, USB allows up to 127 devices, which is way more than I need. Not sure what the bandwidth implications will be with 22 USB servos, but I doubt it will be a problem.
That leaves $25 for motor, gears, wiring, a potentiometer, and a case, if you wanted to build a packaged deal, which is my goal. That might be a bit ambitious, but I'm willing to give it a shot.
I don't know what the advantage would be in a STM32Discovery over an Arduino Leonard, other than cost. Personally, I'd rather spend $15 extra. I think the Wiring / Processing combo Arduino uses sounds ideal. I've even got some Processing experience from another project.
In addition, Arduino already has Android USB support. All devices support ADB mode: http://labs.arduino.cc/ADK/ADB
And some devices support ADK mode for using the Android Accessory USB protocol. In this mode, the android device gets power from the arduino device via USB and has a bidirectional communication channel.
I think ADK is ideal, but I'll probably be more interested in ADB at first as it supports the most hardware.
What do you think? |
|
| Back to top |
|
 |
trevarthan
Joined: 17 Oct 2006 Posts: 42
|
Posted: Fri Dec 14, 2012 7:16 pm Post subject: |
|
|
Looks like banebots has a 15 amp 12v motor model rs555 for $6.25: http://banebots.com/pc/MOTOR-BRUSH/M5-RS555-12
No back shaft for mounting an encoder on that motor though.
They also sell their planetary gearbox P60 with various gear ratios for $60: http://banebots.com/c/P60K-S5
So, I could get 1800 oz-in torque at 121 rpm and weighing just over a pound for about $72.
Plus the arduino boards equals about $147. Not great, but not terrible either.
Just need to figure out how to track position. |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Sat Dec 15, 2012 12:35 am Post subject: |
|
|
Last I recall the best you have for diag with Arduino / AVR stuff is the USB serial port and printf statements. I'm fairly ignorant about AVR and Arduino stuff, so I could be wrong there. The ST stuff allows you to insert a break point and stop the processor then look at live registers, step through code ect. You can even step through the assembly if you want to. Either approach is good, but I think you get more diagnostics features with the ST. Also there are reasons why the ARM takes some 70% of the entire embedded market.
I'm not sure how to use the OS code with an Arduino hardware. I think you would have to do a significant porting effort. I seem to recall the first thing you'll have to do is to turn off most of the stuff that makes an Arduino an Arduino, then you'll have to figure out how to get this stuff to work. For example the Arduino boot loader and OS boot loader are different. I seem to recall the Arduino has a kind of underlying OS which will have to be either disabled or modified to allow the clock control used by the PID algo's. |
|
| Back to top |
|
 |
trevarthan
Joined: 17 Oct 2006 Posts: 42
|
Posted: Sat Dec 15, 2012 1:17 am Post subject: |
|
|
I guess I'm really old school for a 31 year old. I've used VIM and debugged everything with printf for over 10 years. I stopped using debuggers back in 98' when I realized my debugger wouldn't work with Direct3D code, and I never really looked back.
The thing about VIM and printf is that you'll never find an environment where you can't use them, and they always work exactly the same way on every platform. You just can't say the same about debuggers. You'll always find yourself disappointed because a debugger on one system will always be better than another. I switch platforms too often to learn them all, and I can do without the emotional grief. I really don't think it slows me down either.
I'm more concerned about my motor sizes (concerned they're too big) and trying to find a cheap way to make or source gears or timing belts so I can attach a potentiometer. Any ideas there? I don't have the money for a lathe right now.  |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Sat Dec 15, 2012 11:01 am Post subject: |
|
|
A VIM fellow you say, cool. I very mildly stepped over the EMAC's barrier, but never could get the key strokes down for VIM. My bro is a VIM guy as well. I've also tended to like the debuggers, as I often want to do things like look at the clock registers and the data of that point. The printf's put in a mild delay. If your good with the printf, it's not a big deal.
I would suggest considering the larger motors. It sounds like your device is quite large, remember that with a lever arm your torque requirements go really high. With a 2 to 3ft lever arm like an automotive torque wrench, you can get up to hundreds of foot lbs when powered by hand. I believe the motors your looking at are still measured in in-oz. So they might be quite a bit less powerful than you're thinking.
Also note that USB is a point to point device, so you'll need an individual wire for each motor. Also I seem to recall that you aren't supposed to go beyond something like 2ft, I think that 6ft is the absolute limit if everything is just perfect. However in a noisy environment like you'll have with motor currents, your not likely to be in the a perfect environment. I2C is nice in that you can daisy chain the devices, also it's fairly low impedance which helps with a noisy environmental. With a couple hundred ohms of impedance, it takes quite a bit of energy to couple into the communications wires and cause bad bits.
If I were considering a different communications approach, I'b be tempted to consider CAN, it's good for noisy environmental and quite low cost in terms of material costs. I might also consider the traditional RS485, but CAN is physically better, as can allows for faster transfer rates and is more tolerant of a variety of electrical issues. I don't think USB will play very nice in the long run. However the Arduino stuff is really a serial stream, that's buffered behind an on board USB chip, so as long as you use a serial stream, you're probably OK with changing the underlying tech. You can also start with USB, but will probably have to change it later on. |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Sat Dec 15, 2012 12:21 pm Post subject: |
|
|
| Might also be worth while to consider adding http://cq.cx/ladder.pl to such a software effort. |
|
| Back to top |
|
 |
trevarthan
Joined: 17 Oct 2006 Posts: 42
|
Posted: Sat Dec 15, 2012 3:35 pm Post subject: |
|
|
Is there a good primer for calculating torque with lever arms and such? I don't have an engineering background, but I'm good at math when I have to be.
I'd really rather design it all on paper before buying $60 gear boxes I don't need or can't use.
Regarding USB: I'm still researching the software implications of a USB network using Arduino. My understanding is that they are designed to be programmed via USB, but they rarely communicate via USB. Also, I think a shield may be required for the device acting as the host controller. I don't think the Uno and Leonardo support host mode on their USB port.
Android adds it's own limitations. Only recently has USB host mode been added (3.1), and I think only a subset of devices running 3.1 have hardware to support host mode.
One way around this is to add another Arduino board with a USB host shield. This Arduino would act like a "Spine", routing various commands to and from the "brain" and the servos, possibly even abstracting events to a higher level. I don't hate this idea, but it certainly adds another level of complexity to the software.
Ultimately, if I have to build a "spine" board anyway, there is nothing really preventing the use of I2C.
The only reason why I'm interested in USB is for plug and play purposes and universal availability. I think the ability to hot plug a limb is nice, because it makes the system a bit more idiot proof. Nobody wants to fry a $150 smart servo by plugging it in wrong. Also, the psychological effect of a USB communication bus might be pretty profound. "Oh, the servos use USB! That's so simple! Cool!"
I had forgotten about the distance limitations USB imposes. Thanks for pointing that out. I'll do some more research. Worst case, there is always Ethernet. Seems like serious overkill, but it's also ubiquitous and hot pluggable. I could probably advertise servo presence with a multicast or something. |
|
| Back to top |
|
 |
trevarthan
Joined: 17 Oct 2006 Posts: 42
|
Posted: Sat Dec 15, 2012 4:22 pm Post subject: |
|
|
More research regarding usb cable length limitations:
USB 1.1 low speed devices have cable length limits of 3 meters (9 ft).
USB 1.1 full speed devices have cable length limits of 5 meters (16 ft).
USB 2.0 hi speed devices have cable length limits of 5 meters (16 ft).
This post indicates USB 2.0 cable lengths are most applicable to the Arduino: http://arduino.cc/forum/index.php/topic,27226.0.html
Frankly, 9ft is more than enough for my needs. 16ft is way more than I need.
Electromagnetic motor interference may indeed be a problem with USB. I haven't had any luck proving or disproving that via google. |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Sat Dec 15, 2012 5:20 pm Post subject: |
|
|
About torque, it's fairly straight forward algebra, the question is how long and what force is required. Also remember most motors have the peak torque at 0RPM, so that's often what's reported. If you need RPM and toque, you'll either need more info, or you'll have to kind of guess how much extra torque you need. Some times you can find a torque vs RPM curve. Also also, don't forget the need for dynamic torque. Picture a 100 lb 2 foot diameter wheel. If you get the wheel spinning and your only maintaining the RPM you only need enough torque to overcome the friction. Which probably wouldn't be much. However to go from 0RPM to say 100RPM, you're going to need much more torque. http://en.wikipedia.org/wiki/Torque
So as a base line, if you expect a 2ft long arm and you expect it to need to support a 2lb force, you'll need 2ft * 2lb = 4ft-lb. If you measure in inches and ounces it's of course going to be different units. If it needs to move, you'll want more torque to overcome the inertia. |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|