Many low cost robotics projects tend to use stepper motors, as they are easy to use to create precision applications. Small robots are often made with hobby servos, which allow for some level of position control. However, neither give the developer full control. Stepper motors only provide open loop position control, and can miss steps under load with no easy way to detect it. Hobby servos tend to be "jerky" and also typically provide no feedback to their actual position.
This project aims to develop a low-cost design which can be used for closed-loop control of two micro-gearmotors. The current to the motors will also be monitored for current limiting and possible impedance control applications. It can be interfaced with over CAN bus, ensuring robustness and scalability in robotics applications.
So far, this motor controller is capable of speed, position, current, and open loop duty cycle control. It supports motion primitives - motion profiles calculated using onboard inverse kinematics for walking robots that offload a main controller. They are highly configurable, with a CAN ICD detailing the external interface. I have developed (somewhat) working demos of a stabilized wheeled inverted pendulum, robotic legs, crawling robot, and recorded motion playback.
This project is closely linked to my build of a walking robot.
Version 2 firmware available on GitHub.
- Control and Inverse Kinematics
- Current Control and Virtual Model/Impedance Control
- CAN Bus Network
- Design Update
- Hardware Revision and Dumb Demo
- Motion Primitives
- CAN ICD, Quadruped Prep, and Motion Playback
- Quadruped Walking and Gait Testing
- Revision 2.0: Microcontroller Upgrade
- Revision 2.0: Initial Testing
- Revision 2.0: CAN, Dual Motors, and Virtual Model Control