Skip to content

Commit 55787b4

Browse files
authored
Project/anca stefania.maxim (#1237)
* Added index.md file, containing short project description Signed off: Anca-Stefania Maxim * added block schema * Update index.md * Added schematic * Added hardware pictures and logged my activity. * Added hardware pictures and logged my activity.
1 parent e8bf446 commit 55787b4

3 files changed

Lines changed: 9 additions & 78 deletions

File tree

website/versioned_docs/version-acs_cc/project/2026/anca_stefania.maxim/index.md

Lines changed: 8 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -31,83 +31,7 @@ The system is structured in four functional layers:
3131
- **Mapping Layer**: 32x32 occupancy grid updated through Bresenham ray casting — builds the probabilistic obstacle map
3232
- **Planning Layer**: frontier-based exploration + PID on heading — decides the next destination and controls movement
3333

34-
```mermaid
35-
flowchart TB
36-
subgraph PERCEPTION["1. Perception layer — acquires environment and motion data"]
37-
direction LR
38-
US["3x HC-SR04<br/>front, left, right<br/>TIM3 input capture<br/>60 ms between reads"]
39-
SERVO["SG90 servo<br/>scans front sensor<br/>5 angles: -60°..+60°<br/>PWM 50 Hz, 1-2 ms pulse"]
40-
IMU["MPU-6050<br/>gyro Z + accel<br/>I2C1 at 400 kHz<br/>addr 0x68"]
41-
ENC["2x Hall encoders<br/>TIM2 + TIM5<br/>quadrature mode<br/>80 counts/rev"]
42-
IR["2x IR sensors<br/>edge detection<br/>ADC1 channels 11+12"]
43-
end
44-
45-
subgraph LOCALIZATION["2. Localization layer — estimates pose (x, y, theta)"]
46-
direction LR
47-
ODOM_CALC["Wheel odometry<br/>delta_s = (left + right) / 2<br/>delta_theta = (right - left) / wheelbase<br/>x += delta_s * cos(theta)<br/>y += delta_s * sin(theta)"]
48-
COMP_FILTER["Complementary filter<br/>theta = 0.98 * (theta + gyro * dt)<br/>+ 0.02 * theta_odom<br/>reduces drift"]
49-
end
50-
51-
subgraph MAPPING["3. Mapping layer — builds 32x32 occupancy grid"]
52-
direction LR
53-
WORLD2GRID["World to grid<br/>cell_x = (world_x + 80) / 5<br/>cell_y = (world_y + 80) / 5<br/>5 cm per cell"]
54-
BRESENHAM["Bresenham ray casting<br/>from robot to obstacle<br/>marks free cells along ray<br/>marks obstacle at endpoint"]
55-
BAYES_UPDATE["Bayesian update<br/>log-odds per cell<br/>l = l + l_obs - l_prior<br/>clamp [0, 255]"]
56-
end
57-
58-
subgraph PLANNING["4. Planning layer — selects goal and drives motors"]
59-
direction LR
60-
FRONTIER_DETECT["Frontier detection<br/>find free cells adjacent<br/>to unknown cells<br/>Manhattan distance to closest"]
61-
PID_CTRL["PID heading controller<br/>error = goal_theta - theta<br/>output = Kp*err + Ki*int + Kd*der<br/>anti-windup on integral"]
62-
MOTOR_CMD["Motor commands<br/>L298N H-bridge<br/>PWM duty 0-100%<br/>direction via IN1-IN4"]
63-
end
64-
65-
subgraph OUTPUT["5. Output layer — visual feedback and PC telemetry"]
66-
direction LR
67-
LCD_RENDER["ST7735 LCD render<br/>SPI1 at 8 MHz<br/>128x160 px, 16-bit color<br/>grid + robot position"]
68-
WIFI_TX["ESP-01 WiFi<br/>USART3 at 115200 baud<br/>RLE-compressed grid<br/>2 Hz to PC"]
69-
STATUS_OUT["RGB LEDs + buzzer<br/>state indication<br/>event audio cues"]
70-
end
71-
72-
%% Perception flows into localization
73-
ENC ==> ODOM_CALC
74-
IMU ==> COMP_FILTER
75-
ODOM_CALC ==> COMP_FILTER
76-
77-
%% Perception flows into mapping
78-
SERVO -.->|sweep angle| US
79-
US ==> WORLD2GRID
80-
COMP_FILTER ==>|robot pose| WORLD2GRID
81-
WORLD2GRID ==> BRESENHAM
82-
BRESENHAM ==> BAYES_UPDATE
83-
84-
%% Mapping flows into planning
85-
BAYES_UPDATE ==>|grid state| FRONTIER_DETECT
86-
COMP_FILTER ==>|current pose| FRONTIER_DETECT
87-
FRONTIER_DETECT ==>|target heading| PID_CTRL
88-
COMP_FILTER ==>|current heading| PID_CTRL
89-
PID_CTRL ==> MOTOR_CMD
90-
91-
%% Output consumers
92-
BAYES_UPDATE ==> LCD_RENDER
93-
COMP_FILTER ==>|robot pose| LCD_RENDER
94-
BAYES_UPDATE ==> WIFI_TX
95-
IR ==> STATUS_OUT
96-
FRONTIER_DETECT ==>|exploration done?| STATUS_OUT
97-
98-
classDef perceptionStyle fill:#E6F1FB,stroke:#185FA5,stroke-width:1px,color:#042C53
99-
classDef localizationStyle fill:#FBEAF0,stroke:#993556,stroke-width:1px,color:#4B1528
100-
classDef mappingStyle fill:#FAECE7,stroke:#993C1D,stroke-width:1px,color:#4A1B0C
101-
classDef planningStyle fill:#FAEEDA,stroke:#854F0B,stroke-width:1px,color:#412402
102-
classDef outputStyle fill:#EAF3DE,stroke:#3B6D11,stroke-width:1px,color:#173404
103-
104-
class US,SERVO,IMU,ENC,IR perceptionStyle
105-
class ODOM_CALC,COMP_FILTER localizationStyle
106-
class WORLD2GRID,BRESENHAM,BAYES_UPDATE mappingStyle
107-
class FRONTIER_DETECT,PID_CTRL,MOTOR_CMD planningStyle
108-
class LCD_RENDER,WIFI_TX,STATUS_OUT outputStyle
109-
```
110-
34+
![Block Scheme](schema_bloc.svg)
11135

11236
### Processing Pipeline
11337

@@ -129,17 +53,23 @@ At each 100ms cycle, the system executes sequentially:
12953

13054
### Week 5 - 11 May
13155

56+
Decided upon hardware components and designed a block scheme with the hardware architecture I will built.
57+
13258
### Week 12 - 18 May
13359

60+
Asembled hardware components, tested each component (to verify its functionality) through simple tasks and finalized hardware implementation.
61+
13462
### Week 19 - 25 May
13563

13664
## Hardware
13765

13866
The robot is built on a 2WD chassis with two DC motors with Hall encoders for precise odometry. Three HC-SR04 ultrasonic sensors (front, left, right) mounted on an SG90 scanning servo provide obstacle detection. An MPU-6050 IMU handles heading correction, while two IR sensors detect floor edges. An ST7735 128x160 color LCD displays the live map, and an ESP8266 WiFi module streams data wirelessly to a PC. The system is powered by a 7.4V 2000mAh LiPo battery with an LM2596 voltage regulator.
13967

68+
![Hardware](masina_slam.webp)
69+
14070
### Schematics
14171

142-
Place your KiCAD or similar schematics here in SVG format.
72+
![Project Schematic](project_schematic.svg)
14373

14474
### Bill of Materials
14575

106 KB
Loading

website/versioned_docs/version-acs_cc/project/2026/anca_stefania.maxim/project_schematic.svg

Lines changed: 1 addition & 0 deletions
Loading

0 commit comments

Comments
 (0)