
A Crawler Robot Project Based on STM32 H7 and STM32 F4
This crawler robot is a multitasking platform with sensing, data processing, decision-making, and path-following functions managed by a closed-loop control system with high accuracy and fast response. I am the Team Leader of this ten-person Robot Project. My responsibilities include member recruitment, project management, software & hardware design, STM32 coding, control system design & implementation, 3D modeling & printing, and so on. I put the hardware library I coded and the control system I designed in this repository.
View Demo
·
Report
bug
·
Request
feature
Prerequisites | |
Languages & Tools | |
License | |
State |
Table of Contents
This robot is built from the ground up, and its main methods are defined before implementation. I designed the robot's code structure with Universal Modelling Language using ideas similar to object-oriented programming in C++, Python, and other languages (UML). Furthermore, because no tool exists to generate C code from a UML model, I created one using javascript that converts the model to C code that works well with the STM32's HAL.
I created this controller using Matlab and Simulink, and the C
code generated by the controller runs successfully on the STM32 board. The algorithm instructs the robot to follow the expected path precisely.
This model's screenshots and overview are shown below.
The code used to control each component is carefully coded and tested using an oscilloscope to monitor input and output signals. You can find these codes in the ./Hardware/
directory.
I designed an STM32 F411CEU6 board with Cadence and its Allegro PCB Designer to control the servo and motor with the control system.
By utilizing a linkage structure, the robot could easily drop a tennis ball into the basket as the task required. This structure has been meticulously calculated and modeled in Solidworks. Furthermore, to ensure that the components' installation does not conflict, I built the robot model using the data from the component documentation and the data I measured. After completing these steps, I ordered 3D printing with the corresponding files.
The experiments have well-formatted markdown notes generated as formal experiment notes with recorded details in a suitable format using the LaTex template I created and the Pandoc.
I managed this project using the project management tool OmniPlan
, and tools I created to ensure a direct link between the project plan and all of our team members. Our project's Gantt Chart is shown below.
I defined our code's style guide based on Google's C++ Style Guide to ensure the quality of code from each member. You can find this guide in ./Management/
directory. And the code is all managed with the GitHub Workflow.
Major Frameworks/Libraries |
|
![]() |
Renhong Zhang
Github: @renhong-zhang |
There are lots of ways to support me! I would be so happy if you give this repository a ⭐️ and tell your friends about this little corner of the Internet.
GNU General Public License version 3
Copyright © 2022-present, Renhong Zhang