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.

Hardware

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

- Arbotix Commander: Arduino+XBee-based controller with buttons/joysticks for driving the robot.  Sold by Trossen Robotics.  Heavily modified, with a Wixel and OLED screen added.

- 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:

Some considerations in these parts:
- Can drive the wheel reverse, to unjam (rarely happens)
- Smaller drive wheel gives slower load rate, but reduces the counteracting torque from the weight of BBs being pushed up to the turret.
- This is Rev 2 of the design; it accommodates for holes already created in the body for Rev1 which used a...
Read more »