Titan Rover is a rover designed and built by students of California State University, Fullerton.
For this year's iteration, I was tasked on reimplementing the robotic arm controls.
New additions to arm is the STM32F446RE microcontroller in place of the Pyboard.
More importantly than the hardware advantage, this microcontroller is programmed in C and C++ instead of a wrapper language.
Though, there is a hardware abstraction layer (HAL) developed by STM to quickly and easily bring up projects.
On top of the new microcontroller, we are incorporating FreeRTOS as a middleware.
This makes our system multi-threaded and even-driven instead of using a simple and inefficient superloop.
Also, we are overhauling the joint system to include: 4 stepper motors, 1 linear actuator, and 1 BLDC motor.
A CAN interface is used to communicate between the microcontroller and our main computer, the Jeton TX2.
CAN messages are relayed from the main computer to the microcontroller through the SocketCAN library and processed using ROS's topic system.
Afterwards, the microcontroller decodes these messages into actions for the each motor.
Auxiliary communication protocols are used between the microcontroller and the motor drivers, namely UART and PWM.
Also, attached to the stepper motors and BLDC motor are quadrature encoders to capture the position of the joint as feedback.
Future development on the Robotic Arm Controls System would be to leverage this feedback for PID control and Inverse-Kinematics.
The Titan Rover repository is private. Feel free to contact my email for information about Robotic Arm Controller branch of the code.