Using the motor name as key seems a little wonky. Doesn't that mean that the "last one wins"? I think I expected something more like:

    stat.add(grizzly_msgs::nameFromDriveIndex(motor_num) + " undervoltage fault", (bool)(status & fault_def.FAULT_UNDERVOLTAGE));

Quite apart from that, though, I'm wondering if publishing this diagnostic info should be left up to the roboteq node itself—there's actually [already a script for it](https://github.com/g/roboteq/blob/master/roboteq_diagnostics/nodes/diagnostics_publisher#L88). I think I pictured the MotorsMonitor class as more serving to answer the question "is there anything the motor drivers are telling us which indicates a temporary or permanent fault status?"