I lead a university robotics team that needs PID controllers for four drive motors and two additional motors that are used in a secondary system. I would strongly prefer to buy pre-built PID controllers that provide just about any reasonable interface for setting PID constants, motor velocity and direction, as the controllers are not remotely central to the difficult, interesting problems we're trying to solve. To my astonishment, the Internet doesn't seem to be saturated with such controllers (talk about reinventing the wheel - hundreds of tutorials but almost no pre-built solutions! Did Willow Garage build their own PID controller for the PR2?!).

Does anyone have recommendations/experience, preferably pointers to such controllers?

I've Googled around quite a bit, and so far this is the best option I've found. It's a cape for a BeagleBone Black (which is the board we're using). The problem is that the Python library is not finished - it resets PID constants at every call, it doesn't support changing the direction of the motor, and it seems to only support setting motor power, not velocity, which gives me the impression that it's not actually using the PID controller at all.

Additional details:

  • The stall current of our drive motors is 6A. They are brushless DC motors with quadrature encoders. The secondary motors are much smaller, and we're building our own encoders for them.
  • Our code base is in Python, and we're running on a BeagleBone Black using the latest Debian image from Robert Nelson (that guy's awesome!). Our batteries provide 14.8V, and we already have 3.3V and 5V rails.
  • Our robot is fairly small, about 1x1x2 feet, and weighs about 9 pounds. This info is meant to give perspective with regard to scale.
  • $350 or so is the comfortable top range of what we could spend to get all 6 motors PID-controlled.

Any help would be greatly appreciated!

  • $\begingroup$ Sorry about the lack of up-votes so far, btw. I'll remedy that as soon as I get >=15 reputation. You all rock! $\endgroup$ – dfarrell07 Oct 31 '13 at 7:21
  • $\begingroup$ You're not really supposed to upvote answers to your own questions... Other people can and will do that to what they consider good answers. You can accept the answer you feel is the best one. $\endgroup$ – Guy Sirton Nov 6 '13 at 22:13
  • 1
    $\begingroup$ Can you cite a source for that? If I think an answer contributes, say by raising an important point that the "best answer" doesn't, I'm under the impression that it's proper to up-vote it. $\endgroup$ – dfarrell07 Nov 6 '13 at 23:33
  • $\begingroup$ It's my personal opinion. I guess I see upvotes as something I give really good answers in general, not something I use to reward people for answering my questions... It's not a big deal and looks like I'm in the minority: meta.stackexchange.com/questions/184291/… $\endgroup$ – Guy Sirton Nov 7 '13 at 4:01
  • $\begingroup$ What's really obvious though is that you have not accepted any answer yet and my comment was somewhat in that context (i.e. don't use upvote where you should be using accept). $\endgroup$ – Guy Sirton Nov 7 '13 at 4:06

Should be able to find something either here at Kb Drives or at GeckoDrive I think the "problem" is that very few hobbyists actually use servo drives for projects since steppers are simpler. As a result, most of the prebuilt stuff you will find is for industry, with prices to match. Geckodrive has a good reputation (never used them) and their prices are quite reasonable.

  • $\begingroup$ Thanks for the info! The Kb options seem way more heavy-duty than what we need, unless I'm missing something. I don't see any that take less than 115VDC input voltage. The GeckoDrive one is much closer, but its minimum power supply voltage is still 18VDC (still planning on passing that one off to the team to see if we can make it work). Also, thanks for the insight into why such drives aren't ubiquitous. $\endgroup$ – dfarrell07 Oct 30 '13 at 22:27
  • $\begingroup$ @dfarrell07: I think another factor is that most applications run brush-less motors at fairly high RPM and usually that means a higher bus voltage due to back-EMF. 6 motors for $350 is a pretty tight budget. I'd expect to pay that much for a single motor in a brushless servo application. $\endgroup$ – Guy Sirton Nov 6 '13 at 4:59
  • $\begingroup$ We already have four brush-less drive motors that exceed our needs, and they were $37 each. The two motors for the secondary system were about half that price. The 350 figure was meant to just apply to the controllers, if that wasn't clear. Thanks for the info regarding the high voltage specs! $\endgroup$ – dfarrell07 Nov 6 '13 at 23:41

These should work well: http://www.jrkerr.com/

Control via serial w/ tunable PID gains for position, velocity and acceleration. They also require a quadrature encoder signal, so you're good to go in that regard.

My boss has used these in previous robotics projects and vouches for them.

  • $\begingroup$ Thank you so much for the info! The PIC-SERVO SC 3PH seems like a pretty good fit, although the $240-per-motor price tag is quite a bit more than I expected (which you couldn't have known, I added price details). $\endgroup$ – dfarrell07 Oct 30 '13 at 22:38

Check http://www.pololu.com , they have few cheap options. If you want more reliable, more expensive solutions, then check http://www.copleycontrols.com . Both have solutions that meet your requirements, just find something that suits your budget.

There is another option that is used mainly for robotic drive, quite easy to setup, but it also allows you to drive motors individually, worth while looking at : www.robot-electronics.co.uk/htm/md49tech.htm

  • $\begingroup$ Thanks for your answer! I don't see any motor controllers for brushless DC motors from Pololu (which is a shame, because we've had awesome experiences with them). From what I understand, the two types can not be mixed, but correct me if I'm wrong. None of the Copley Controllers controllers seem to work at less than 20VDC, and the one from robot-electronics needs 25VDC. These are much closer to what we need, however. Thanks! $\endgroup$ – dfarrell07 Oct 31 '13 at 7:19
  • $\begingroup$ robot-electronics.co.uk/htm/md25tech.htm is the 12V alternative, it should do the job. Copley have modules that work with as low as 14 volts, you should check check their products for something that suits your motors. It really depends on what motors you have, and how you are planning to control them. I am very happy with the MD25 controlling one of my robots, and I have plenty of Copley control modules used to control stepper motors, and linear stages. Copley controls are, however, pretty expensive but very reliable and easy to tune (PID, current, position and velocity control). $\endgroup$ – blackcoder Nov 1 '13 at 0:50
  • $\begingroup$ The one you linked to there has a max 1A peak, as I mentioned, our motors need 6A peak. I see the 14VDC Copley one you're talking about now, the Stepnet Plus model. It may work. Again, our batteries are 14.8V. $\endgroup$ – dfarrell07 Nov 1 '13 at 20:13

Not the answer you're looking for? Browse other questions tagged or ask your own question.