It took some trudging through tedious nuts-and-bolts work (occasionally literally) before we got to our next milestone: the first system integration test.
- Structural – the rocker-bogie suspension system assembled and can accept all six wheels.
- Mechanical – All six wheel assemblies and all four steering assemblies ready to install on structure.
- Electrical – all five RoboClaw modules installed on the rover chassis, with wiring harnesses built to connect all motors to their respective RoboClaw.
- Communication – All five RoboClaw connected together into a single serial command network, connected to a USB-serial bridge that will talk to the brain. (Ubuntu PC, Raspberry Pi, MacBook, anything.)
- Software – Ready to talk to all five RoboClaw modules and sending commands for rover mobility.
The integration test was intended to help expose problems, and it was very effectively at doing so! Some highlights:
- While all RoboClaw were correctly configured for advanced packet serial command and on the correct baud rate, they weren’t all properly communicating because they haven’t all be set into multi-unit mode. Toggling multi-unit mode is not something that we could do with buttons on the RoboClaw so we had to hook up the individual modules to update configuration.
- The RoboClaw motor encoder A/B are reversed between the two channels on the board, which resulted in some of our wheels running in opposite direction than the encoder expected. This meant reversing some of the motor drive power wires in order for the motor direction to agree with encoder direction.
- The control software responded to input events as fast as it could, which far outpaced the RoboClaw communication resulting in a backlog of commands. This backlog overflowed some communication queues causing crashes.
- Long-term fix: The server needs to throttle event response. We settled on a maximum rate of an event once every 50ms.
- Short-term fix: Create an alternate UI that only sends one command at a time to avoid the crunch.
After we worked through the issues big and small, we could run the motors with the rover lying on its back. It won’t be long before we’ll be able to drive the rover on its own wheels.