Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Bipedal Humanoid Robot – Embedded Control System

Embedded control architecture for a bipedal humanoid robot developed as part of a graduation project in Mechatronics Engineering.

This repository contains the embedded firmware and technical documentation for the distributed real-time control system responsible for actuator control, sensor acquisition, communication, and system diagnostics.

System Overview

The embedded system follows a hierarchical distributed control architecture that separates high-level computation from time-critical low-level control.

The system consists of:

  • NVIDIA Jetson Nano for high-level processing and ROS 2
  • STM32 Nucleo-F446RE gateway controller
  • STM32 Nucleo-F446RE left-leg controller
  • STM32 Nucleo-F446RE right-leg controller
  • FreeRTOS-based real-time firmware
  • Distributed actuator control
  • IMU acquisition and preprocessing
  • UART-based inter-controller communication
  • Custom communication protocol
  • Diagnostic and fault-handling services

Embedded Architecture

The Jetson Nano represents the high-level computing layer, while the scope of this repository focuses on the STM32-based embedded control layer

Time-critical functions are delegated to STM32 controllers running FreeRTOS.

Gateway Controller

The gateway controller is responsible for:

  • Communication with the NVIDIA Jetson Nano
  • Communication with the left and right leg controllers
  • IMU data acquisition
  • Sensor preprocessing
  • Upper-body actuator control
  • Command distribution
  • Feedback aggregation
  • System diagnostics

Lower-Limb Controllers

Two identical STM32 controllers are used for the left and right legs.

Each controller is responsible for:

  • Three Actuonix L16-P linear actuators
  • One RMD rotary actuator
  • Closed-loop actuator position control
  • Position feedback acquisition
  • Communication with the gateway controller
  • Local diagnostics

Real-Time System

The embedded firmware is implemented using FreeRTOS with preemptive priority-based scheduling.

The system uses different execution frequencies according to task criticality:

Function Frequency
Linear actuator control 1 kHz
Rotary actuator control 500 Hz
IMU acquisition 200 Hz
Inter-controller communication 100 Hz

Control

Closed-loop position control is implemented for the linear actuators.

Position feedback is obtained from the actuators' integrated potentiometers using the STM32 ADC peripherals.

A PID controller computes the required control effort, which is converted to PWM signals for the external motor drivers.

The RMD rotary actuators use their internal low-level control capabilities while the STM32 controllers manage command generation and feedback acquisition.

Communication

Communication between the Jetson Nano and gateway controller is performed using UART.

The gateway communicates independently with the two lower-limb controllers using dedicated UART channels.

A custom application-layer communication protocol is used for exchanging:

  • Actuator commands
  • Position feedback
  • Sensor measurements
  • Diagnostic data
  • System status

The protocol includes packet framing, payload information, checksum verification, and packet validation.

Software Architecture

The firmware follows a layered software architecture:

  1. Application Layer
  2. Service Layer
  3. FreeRTOS Middleware Layer
  4. Hardware Abstraction Layer

The implementation uses:

  • FreeRTOS tasks
  • Queues
  • Semaphores
  • Mutexes
  • Interrupts
  • DMA
  • UART
  • SPI
  • ADC
  • PWM
  • Timers
  • GPIO

My Contribution

My work focused on the embedded layer of the humanoid robot, including:

  • Distributed STM32 control architecture
  • FreeRTOS-based firmware
  • Actuator control and sensor acquisition
  • Inter-controller UART communication
  • Embedded communication protocol
  • Firmware debugging and hardware/software integration
  • System-level integration with the higher-level computing platform

Debugging and Validation

Firmware debugging was performed using ST-LINK over SWD/JTAG, including runtime inspection and step-by-step debugging of the STM32 firmware.

Hardware-level faults and electrical connections were diagnosed using a digital multimeter during system integration.

Repository Structure

.
├── code/
│   └── Embedded firmware
│
├── documentation/
│   └── Embedded system technical documentation
│
├── README.md
└── .gitignore

About

Embedded control system for a bipedal humanoid robot using STM32, FreeRTOS, distributed real-time control, sensor acquisition, communication, and actuator control.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages