This article presents a modular software interface architecture for the motor controller in the GARP robotics platform. The design separates the system into three cooperating components—Communication Controller (CC), Speed Controller (SC), and Motor Controller (MC)—each with clear boundaries and responsibilities. These boundaries are defined to support modularity and accelerate future development. The design aims to […]
A CMake Strategy for the Pico C/C++ SDK
This article explores the challenges and strategies for adding support for CMake’s find_package() mechanism to packages that depend on the Raspberry Pi Pico C/C++ SDK. While the Pico SDK is designed for direct inclusion and does not export its library targets thereby barring directly adding find_package support, I want to support modular, reusable components that […]
A Hardware Abstraction Layer (HAL) for the Raspberry Pi Pico2/RP2350 for GARP Testing
In embedded systems development, tightly coupling application logic to hardware-specific APIs often yields fast initial progress but complicates testing, debugging, and future hardware upgrades. This article details the motivations, design decisions, and benefits of implementing a Hardware Abstraction Layer (HAL) for the GARP motor controllers, which communicate using CAN and are currently built around the […]
GARP Motor Selection
This article reviews the process used to identify the motor used in the GARP Alpha development stage. Primarily intended to support GARP integration and requirements refinement, design assumptions and speed and torque performance parameters are estimated based on two threshold and objective use cases. Adjacent factors such as encoder resolution, driver/ESC availability, and mounting are […]
GARP Motor Controller: Alpha
This article discusses the GARP’s Motor Controller Alpha implementation to include the integration of a COTS Raspberry Pi Pico 2 microcontroller board, CAN PiCowbell from Adafruit, and a custom SMD PCB. The software architecture is described and its primary components’ key functionalities are outlined. The PID controller software and hardware are discussed, including the motor […]