We have already given a simplified overview of the system’s components, however this section contains a more detailed description of the Rover’s system. It will give you an understanding of how the system is built, the purpose of each component, as well as the tools needed to modify the system.
The Rover’s mechanical components are engineered for robust and reliable performance, catering to a variety of technical applications. Below is a detailed examination of its key mechanical elements.
The Rover is equipped with an advanced suspension system designed to maintain stability and smooth handling across diverse terrains. This system incorporates adjustable shocks and springs, allowing fine-tuning for optimal performance on different surfaces. The tunability of the suspension system makes it suitable for a wide range of research and prototyping applications, enabling customization to simulate various driving conditions.
The chassis of the Rover is constructed from high-grade aluminum, providing a balance between strength and lightweight properties. Its modular design facilitates easy modifications and upgrades, making it particularly advantageous in research and educational settings where frequent adjustments or replacements of components are necessary. The chassis serves as a robust foundation for all other components, ensuring both durability and longevity.
The Rover features a four-wheel-drive (4WD) gearbox that ensures even power distribution to all wheels, enhancing traction and control. This configuration allows the Rover to effectively navigate various driving conditions. The gearbox is designed for efficiency and durability, ensuring smooth power transmission from the motor to the wheels. Comprehensive understanding of the gearbox mechanics is essential for performing modifications or maintenance tasks.
The Rover utilizes an Ackermann steering mechanism to improve maneuverability by ensuring correct wheel alignment during turns. This system minimizes tire wear and enhances steering precision, making it critical for applications that demand precise control and handling. Adjusting the steering linkage and angles can fine-tune the Rover’s responsiveness, making it adaptable for various experimental setups.
The electromechanical components of the Rover are critical to its functionality and performance. This section provides a detailed examination of the Brushless DC (BLDC) motor, the Electronic Speed Controller (ESC), and the steering servo
The Rover is equipped with a high-performance BLDC motor, serving as the primary source of propulsion. BLDC motors are favored for their efficiency, reliability, and low maintenance requirements. Key attributes of the BLDC motor include a high power-to-weight ratio, delivering the necessary torque and speed for the Rover. Its efficient operation is characterized by reduced electrical and mechanical losses, ensuring optimal performance across a wide range of speeds and loads. The absence of brushes minimizes wear and tear, enhancing the motor’s durability. Additionally, the design of the BLDC motor allows for precise control of speed and torque, which is essential for research and prototyping applications.
The ESC is a pivotal component that manages the power supply to the BLDC motor. It interprets signals from the motor module and adjusts the motor’s speed accordingly. The ESC regulates the current and voltage supplied to the motor, ensuring stable and efficient operation. Integrated braking mechanisms within the ESC allow for controlled deceleration and stopping, which is crucial for safety and maneuverability. Furthermore, the ESC includes thermal protection features to prevent overheating, safeguarding both the motor and the ESC itself. Many ESCs offer programmable settings, allowing users to customize parameters such as throttle response, braking strength, and cutoff voltage for the LiPo battery.
The steering servo is responsible for the precise control of the Rover’s steering mechanism, converting electrical signals from the RC system into mechanical movements. It must provide sufficient torque to turn the wheels while maintaining quick response times for accurate steering. High-resolution servos ensure fine control over wheel angle adjustments, which is essential for precise maneuvering. Designed to withstand the stresses of steering, the servo is built for longevity and consistent performance. Some advanced servos include feedback mechanisms that provide positional data, enabling closed-loop control systems for enhanced accuracy.
The electronic architecture of the Rover is meticulously designed to ensure modularity, flexibility, and ease of use. This section provides an in-depth look at the electronic components and their configurations, explaining the background, concept, and practical implementation.
The Rover’s electronic components are based on a modular board architecture. Two boards combine to form an Electronic Control Unit (ECU). An ECU, when combined with a software application, is called a module. This approach allows a board providing a specific functionality to be reused to create different ECUs, which can then be used for various modules. The benefits of this architecture include:
At the heart of the Rover’s ECUs is the CPU board based on the STM32F302RE microcontroller. All of the Rover’s modules use this CPU board as a foundational building block, as it provides essential peripherals such as UART, CAN, and SWD interfaces. Additionally, it includes SPI flash memory for storing application data.
Currently, there are three different carrier boards available for the CPU board: the power board, the servo board, and the IO board.
By constructing ECUs from the various boards, we can create the modules that power the Rover. There are four modules in total:
To combine the mechanical, electromechanical and electronic components, the Rover’s system needs to be wired a certain way.. Below are the wiring diagrams for the Rover’s power connections, CAN connections and component connections.
The Rover’s software architecture is designed to be robust, flexible, and open for customization. By leveraging open-source tools and libraries such as the STM32F3 Hardware Abstraction Layer (HAL) and FreeRTOS, it provides a comprehensive framework for controlling and extending the Rover’s capabilities. Hosted on GitHub, the software is accessible for users to review, modify, and contribute to, ensuring transparency, fostering community collaboration, and accelerating development. The source code is available at https://github.com/CanEduDev/rover, where users can clone the repository, submit issues, and contribute through pull requests.
The software consists of firmware for the modules and integration tests. The firmware is written in the C language and tested using a combination of C for unit tests and Python programs for integration testing. There are also shell scripts for bootstrapping the build environment, running code formatting and linting, and performing static analysis of the code.
Each module has its own firmware, which consists of a bootloader and an application. The bootloader is the same for all firmware and provides firmware update functionality through CAN. The application provides the modules with their main functionality.
The firmware is built on the STM32F3 HAL and FreeRTOS libraries. STM32F3 HAL is a common library provided by STMicroelectronics that simplifies the configuration and control of the STM32F3 microcontroller. It abstracts the low-level hardware details and provides a standardized API for programming the CPU board. The HAL includes drivers for various peripherals, such as GPIO, I2C, SPI, and ADC.
FreeRTOS is a market-leading real-time operating system that manages the execution of tasks on the CPU board. It provides essential features such as task scheduling, inter-task communication, and timing services. Using FreeRTOS allows the Rover’s software to handle multiple concurrent processes efficiently, ensuring responsive and reliable operation.
As the various modules have a lot of hardware in common, there are software libraries for shared functionality. For instance, there is a library that handles CAN communication, libraries providing base system initialization functionality, and drivers for integrated circuits such as SPI flash. These libraries are utilized by both the bootloader application and the main application. This modular architecture enables ease of development and maintenance, allowing users to extend or modify the Rover’s functionality by updating specific drivers or application code without affecting the entire system.
The Rover’s control system is a Distributed Embedded Control System (DECS). A DECS is a control system composed of several modules, each with a dedicated control function, where the modules communicate with each other over a network. In the Rover’s case, the power module is responsible for power control, the servo module is responsible for steering, the motor module is responsible for the motor, and the RC module is responsible for radio communication. The modules exchange information over a CAN bus. For an excellent introduction to CAN, see Kvaser’s resources on the topic, such as the https://kvaser.com/can-protocol-tutorial/.
Not only does the CAN system allow the Rover’s modules to communicate internally, it is also exposed through the D-SUB connectors, allowing the user to gather information from the Rover’s system, control it directly, and configure the system to fit their needs. Most of the Rover’s settings can be adjusted through the CAN bus. It is possible to set a custom low-voltage cutoff limit, overcurrent limit, PWM frequency, servo voltage, and other parameters.
A common way to work with CAN systems is to use a CAN database (DBC) file, which is included in the Rover’s software. The DBC file defines all the CAN messages in the system as well as the signals contained in each message. Software that interfaces with the CAN system can use the DBC file to know which ID each message has, which node in the system sends it, and how to interpret the values in the message.
please provide email