Somehow, I was busier with life and work than I was during grad school, when I built my first two Mechs, so Numa 2 took me 3 years to finish. Major components of this work included:
- Converting the original Numa's C++ codebase into micropython (essentially python3.4)
- Customizing BB loader designs by others to achieve BB storage in the base, piped up to the turret
- This included using current based motor load detection, and LED + photoresistor detection of BB loading in order prevent the system from jamming itself
- Using Jupyter notebooks to evaluate the new (possibly better) leg designs, and validate walking gait code
As usual with mechs, during development, I tracked progress on this project over at the Trossen Robotics Forums.
Numa 2 uses the following electrical hardware, most of which is off-the-shelf components:
- 14 Dynamixel AX-12a servos
- Pololu micro metal gearbox motor (not sure what gear ratio): used for BB loading
- 2 Pololu VNH5019 Motor Driver carrier boards: drives BB loader motor and airsoft gun motor
- 1800 mAh 3S LiPo battery
- 3V laser diode, driven by a simple NPN (?) transistor and a GPIO: used for aiming
- Amber LED + photoresistor, driven by a simple NPN (?) transistor and a GPIO: BB loader stops running if BBs are detected
- XBee Series 1 plus carrier board: wireless communication with Arbotix Commander
- Analog camera + transmitter
The body of the robot is a combination of 1/32" carbon fiber plate, 3D printing, 1/32" polycarbonate, Dynamixel AX-12 brackets, and various fasteners, etc.
Switching to Micropython
Since I've started working on mechs, my real life work has moved me towards almost exclusively using Python. When I learned about Micropython, I wanted a project to use it on.
The first key step was to see if someone else had already gotten Dynamixel servos working with micropython. Luckily, the Hylands brothers saved me a lot of effort with their projects: Jon's uCee (github) and Dave's Bioloid library.
Then was the survey of what board to use. The biggest thing with mechs is that smaller boards are better. Initially I worked with the HydraBus board, but in 2017, I managed to fry the board, and couldn't get replacements at a reasonable price. At that point, I moved to the more conventional PyBoard - the reference board for using micropython.
Overall, micropython is great to work with. It aligns nicely with what I do at work, meaning that I have unit tests, mocks of hardware, plotting, and Jupyter notebooks. It has caused my C++ knowledge to get rusty, though.
Forced BB Loading
On my previous mechs, I handcrafted/tweaked a setup for feeding the airsoft gun(s) via gravity. This was mostly a passive approach, and depended on the jarring vibrations of the robot's walking to shake loose any jams in the BB supply.
For Numa 2, I wanted to try a forced BB loading setup, inspired by several robots built by R-Team members.
The majority of my loader is not visible on the assembled robot, as it is within the body of the robot. Here's some pictures showing its parts:
First, there's the 3D printed parts where BBs are fed into piping (not shown), as well as an elbow joint to convert to piping BBs vertically: