# ๐ค Team Inovatic
### World Robot Olympiad 2026
Future Engineers
Passionate about robotics, innovation, engineering, and STEM education.
Proudly representing **Inovatic Split**
---
## ๐Table of Contents
* [๐ฅ Team Members](#-team-members)
* [๐ฏ Coach](#-coach)
* [๐๏ธ Honorable Mention](#๏ธ-honorable-mention)
* [๐ About Inovatic & Mission](#-about-inovatic)
* [๐ง Initial Concept โ Open Challenge](#-initial-concept--open-challenge)
* [๐ค Robot Technical Documentation](#-robot-technical-documentation)
* [๐ธ Project Gallery](#-project-gallery)
* [๐งฑ Building Instructions](#-building-instructions)
* [๐ง Software Architecture โ Open Challenge](#-software-architecture--open-challenge)
## ๐ธ Team Photo
---
# ๐ฅ Team Members
## ๐งโ๐ป Josip Stepinac
| Information | Details |
|------------|---------|
| ๐ Age | 22 |
| ๐ College | PMF โ Faculty of Natural Sciences and Mathematics, University of Split |
### About Me
Hi! I am **Josip Stepinac**, and robotics has been a central part of my life and personal development for many years. I have participated in numerous WRO competitions and have spent the past five years actively teaching robotics and sharing my knowledge with others.
Through robotics, I have developed strong problem-solving skills, a structured engineering mindset, and a deep understanding of how theory connects with real-world applications. It has shaped not only my technical abilities, but also the way I approach learning, teamwork, and challenges.
This is my first year competing in this WRO category, and I see it as an important opportunity to step out of my comfort zone, explore new technologies, and continue growing both technically and personally.
---
## ๐งโ๐ป Ivan Stepinac
| Information | Details |
|------------|---------|
| ๐ Age | 20 |
| ๐ College | FESB โ Faculty of Electrical Engineering, Mechanical Engineering and Naval Architecture, University of Split |
### About Me
Hi! I am **Ivan Stepinac**, a software developer with a strong passion for technology, innovation, and problem-solving.
A significant part of my development comes from many years of involvement in robotics and participation in WRO competitions. Robotics has played a major role in shaping my mindset, technical skills, and approach to complex challenges.
Beyond software development, I enjoy creating innovative and useful projects that can make a positive impact. One of my recent projects, **ShowMe**, is a video call application that translates sign language into text, helping improve communication for deaf and hard-of-hearing individuals.
Whether I am developing software, working on robotics, or building new applications, I am always driven by learning and creating real-world impact.
---
## ๐งโ๐ป Vito Drnjeviฤ
| Information | Details |
|------------|---------|
| ๐ Age | 19 |
| ๐ College | FESB โ Faculty of Electrical Engineering, Mechanical Engineering and Naval Architecture, University of Split |
### About Me
Hi! I am **Vito Drnjeviฤ**, and this is my fourth season participating in the World Robot Olympiad.
After completing my final Robomission season, I decided to take on a new challenge and further expand my skills in robotics and programming. In addition to technology, I enjoy football, travelling, and exploring new experiences.
I am excited to work alongside my teammates and continue growing through engineering and innovation.
---
# ๐ฏ Coach
## ๐จโ๐ซ Jozo Pivac
### About Him
He is a dedicated and goal-oriented coach, university professor, and founder of the Inovatic association, with a strong focus on education, innovation, and long-term student development.
With a background in academia and hands-on experience in leading robotics and engineering teams, he combines theoretical knowledge with practical mentorship. His approach focuses on guiding students through real challenges, helping them develop technical skills, critical thinking, responsibility, and independence.
Over the years, he has played a key role in building and supporting teams within the Inovatic community, creating an environment where students can grow, experiment, and turn ideas into real engineering projects.
More than a coach, he is a mentor who connects education, research, and real-world application, shaping future engineers and innovators.
---
## ๐จโ๐ซ Gratitude to Our Coach
As a team, we are deeply grateful to our coach for his continuous support, guidance, and dedication throughout our entire robotics journey.
He has been with us since our earliest days in primary school, and has played a fundamental role in shaping who we are today. Over the years, he has helped us develop not only technical skills in robotics, engineering, and programming, but also discipline, teamwork, and a strong mindset for growth.
We are sincerely thankful for the opportunity he has given all three of us to experience robotics in a meaningful way and to contribute to the **Inovatic Split** community through knowledge and passion for technology.
---
# ๐๏ธ Honorable Mention
## ๐จโ๐ Vito Tonลกiฤ
### About Him
Vito Tonลกiฤ has shown exceptional enthusiasm for robotics and a strong interest in the WRO competition. As an active participant in our workshops, he consistently demonstrates curiosity, dedication, and a willingness to take on new challenges.
Despite being one of the younger students in the community, Vito has often contributed valuable ideas and shared his knowledge with older team members, helping them solve problems and improve their projects. His collaborative spirit, creativity, and eagerness to learn make him a positive influence within the team.
Through his passion for innovation and teamwork, Vito represents the values of the Inovatic community and has earned recognition as a promising young engineer and future competitor.
# ๐ About Inovatic
**Inovatic Split** is a STEM and robotics association dedicated to innovation, engineering, programming, and education.
Through workshops, projects, and competitions, Inovatic helps young people develop technical skills, creativity, and teamwork while preparing them for real-world challenges.
---
# ๐ Our Mission
As Team Inovatic, we are united by a passion for robotics, engineering, and innovation.
Our mission is to develop creative solutions, continuously improve our skills, and inspire others through STEM and robotics. Through WRO, we challenge ourselves to think critically, collaborate, and turn ideas into reality.
---
# ๐ง Initial Concept โ Open Challenge
At the beginning of our development process for the World Robot Olympiad Future Engineers Open Challenge, our team focused on designing a reliable and efficient method for recognizing upcoming turns on the track.
Our main goal was to improve autonomous navigation by enabling the robot to detect and react to turns in advance, ensuring smooth and stable movement throughout the run.
---
## ๐ฏ First Idea: Color-Based Turn Detection
Our initial concept was based on **colored guide lines placed before each turn**:
- ๐ Orange line โ Right turn
- ๐ต Blue line โ Left turn
A dedicated **color sensor** mounted close to the track would detect these markers in real time. Once detected, the robot would immediately prepare and execute the corresponding steering action.
### Advantages of this approach:
- Fast and simple color recognition
- Low computational complexity
- Clear separation of left/right decision logic
- Easy calibration during early testing
---
## ๐ก Supporting Navigation System
At the same time, our robot was equipped with **two side-mounted distance sensors**:
- Left sensor โ measures distance to left wall
- Right sensor โ measures distance to right wall
By comparing these values, the robot maintained proper centering on the track and corrected its position when drifting occurred. This ensured:
- Stable movement
- Reduced collisions
- Improved trajectory accuracy
---
## โ๏ธ Design Limitations & System Evaluation
As the system evolved, we carefully evaluated hardware constraints and system complexity.
We identified several limitations:
- Limited number of available sensor ports on the control hub
- High reliance on the camera system for visual processing
- Increased computational load when combining multiple active sensors
- Additional weight, wiring, and mechanical complexity
These factors could negatively impact system stability and overall performance during competition runs.
---
## ๐ Final Decision
After discussion with our mentor, we decided to **abandon the color-based navigation system** and focus on a more streamlined approach using:
- Camera-based perception
- Distance sensor-based centering and navigation
This decision improved:
- System efficiency
- Hardware simplicity
- Overall reliability
---
## ๐ Conclusion
Although this idea was not implemented in the final robot, it played an important role in our engineering process.
It helped us:
- Explore alternative navigation strategies
- Understand hardware limitations
- Improve system design thinking
- Learn the importance of optimization in robotics
Ultimately, this concept contributed significantly to the development of our final solution and our understanding of autonomous navigation systems.
---
## ๐ Final Idea: Distance-Based Navigation & Turn Detection
Our final approach for the Open Challenge is based on a **proportional centering system** that keeps the robot accurately aligned in the middle of the track.
This is achieved using **two side-mounted distance sensors**, where:
- The left sensor measures the distance to the left wall
- The right sensor measures the distance to the right wall
By continuously comparing and balancing these values, the robot maintains stable and proportional centering within the track.
In addition, **turn detection is also based on these same distance sensors**. Changes in measured distances are used to identify upcoming turns, allowing the robot to react in advance and adjust its trajectory smoothly and efficiently.
This approach provides a simplified, reliable, and tightly integrated navigation system that reduces hardware complexity while maintaining high accuracy and consistency during autonomous driving.
โ๏ธ Innovation โข Creativity โข Teamwork โข Excellence
### Team Inovatic | WRO 2026
---
# ๐ค Robot Technical Documentation
## ๐ Introduction
Our robot is based on a modified zCar-inspired chassis and uses Ackermann steering geometry. Originally, we considered converting a small toy car into an autonomous vehicle, but size limitations made it impossible to fit the required electronics and sensors. After researching existing RC car designs, we developed a simplified chassis optimized for the WRO Future Engineers challenge.

### Key Design Decisions
- Inspired by the zCar project
- Ackermann steering system
- Suspension removed to reduce complexity
- Raspberry Pi Zero W as the central controller
- Camera-based perception
- Ultrasonic wall-distance sensing
---
## ๐ฏ Robot Objectives
The robot is designed to:
- Drive autonomously between walls
- Maintain a centered position on the track
- Detect and avoid obstacles
- Control steering and propulsion independently
- Process camera data in real time
- Support future upgrades and expansion
---
## ๐๏ธ System Overview
The robot consists of four main subsystems:
1. Control System
2. Drive System
3. Sensor System
4. Computer Vision System
The Raspberry Pi Zero W acts as the central control unit connecting all subsystems.
---
## ๐ง Hardware Configuration
### ๐ฅ๏ธ Control Unit
**Raspberry Pi Zero W**
- 1 GHz ARM11 Processor
- 512 MB RAM
- WiโFi & Bluetooth Connectivity
- CSI Camera Interface
- GPIO Support for Sensors and Actuators
### ๐ท Camera
**JOY-IT RB Camera Module**
Used for:
- Obstacle Detection
- Environment Analysis
- OpenCV Image Processing
### ๐ Steering System
**SG90 Micro Servo**
- Controls front wheel steering
- PWM controlled via Raspberry Pi GPIO
### โก Drive System
**DC Motor + L293D Driver**
Functions:
- Speed Control
- Direction Control
- PWM-Based Motor Driving
### ๐ก Distance Sensors
Two ultrasonic sensors are mounted on the sides of the robot and are used for:
- Wall distance measurement
- Centering within the track
- Turn detection
---
## ๐๏ธ Mechanical Design
Main mechanical components:
- Ackermann steering front axle
- Servo steering linkage
- Rear drive axle
- Camera mount
- Battery compartment
- Sensor mounts
The robot belongs to the small autonomous vehicle category used in the WRO Future Engineers competition.
---
## ๐ Wiring Summary
| Component | Connection |
|------------|------------|
| Servo Signal | GPIO18 |
| Motor Driver IN1 | GPIO23 |
| Motor Driver IN2 | GPIO24 |
| Left Sensor TRIG | GPIO17 |
| Left Sensor ECHO | GPIO27 |
| Right Sensor TRIG | GPIO20 |
| Right Sensor ECHO | GPIO21 |
---
## ๐ Power System
The robot uses two independent power sources:
### Raspberry Pi System
Powered by:
- 5V / 3A Power Bank
Supplies:
- Raspberry Pi Zero W
- Camera
- Servo Motor
- Sensors
### Drive Motor
Powered separately through:
- L293D Motor Driver
- 9V Li-Ion Battery
This separation improves stability and reduces voltage drops during acceleration.
### Future Upgrade
Potential replacement of the power bank with:
- Waveshare UPS HAT
- DFRobot UPS HAT
---
## ๐ป Software Architecture
### Operating System
**Raspberry Pi OS Lite**
Reasons:
- Lightweight
- SSH-Friendly
- Low Memory Usage
### Programming Language
**Python**
Chosen because of:
- Excellent OpenCV Support
- Fast Development
- Existing Team Experience
### Main Libraries
- OpenCV
- Picamera2
- pigpio
- NumPy
The pigpio library significantly reduced servo jitter during testing.
---
## ๐ Expected Camera Performance
Using Raspberry Pi Zero W:
| Parameter | Value |
|------------|--------|
| Resolution | 320ร240 |
| Frame Rate | 5โ15 FPS |
| Reaction Time | 100โ250 ms |
Suitable for stable low-speed autonomous navigation.
---
## ๐ Future Improvements
Potential upgrades include:
- More powerful Raspberry Pi
- Higher-quality camera
- Wheel encoders
- IMU sensor
- Environment mapping
- Advanced computer vision algorithms
---
# ๐ Hardware Challenges & Architecture Update
Throughout the development process, our team encountered several hardware integration challenges while testing the initial prototype. These challenges highlighted the complexity of combining motor drivers, sensors, power systems, and computer vision hardware within a compact autonomous vehicle.
Rather than viewing these challenges as setbacks, we treated them as an opportunity to re-evaluate the overall system architecture and identify a more reliable long-term solution.
---
## โ ๏ธ Lessons Learned
During testing, we observed that integrating all sensing, control, and processing tasks directly on the Raspberry Pi increased system complexity and introduced additional hardware reliability concerns.
This experience provided valuable insights regarding:
- Power management
- Hardware reliability
- System modularity
- Maintainability
- Scalability for future upgrades
---
## ๐ก Updated Development Strategy
To improve reliability and accelerate development, we decided to redesign the system architecture by combining the strengths of both Raspberry Pi and LEGO SPIKE Prime.
The goal of this approach is to separate high-level decision-making from low-level hardware control.
---
## ๐๏ธ Hybrid Architecture
### ๐ฅ๏ธ Raspberry Pi
Responsible for:
- Camera integration
- Image acquisition
- OpenCV processing
- Environment analysis
- Obstacle detection
- Navigation decisions
### ๐งฑ LEGO SPIKE Prime
Responsible for:
- Motor control
- Steering control
- Sensor interfacing
- Real-time actuator execution
---
## ๐ Communication Between Systems
The Raspberry Pi and LEGO SPIKE will communicate continuously, allowing the exchange of:
- Steering commands
- Driving commands
- Sensor measurements
- Navigation data
This architecture enables the Raspberry Pi to focus entirely on perception and decision-making while LEGO SPIKE handles reliable hardware execution.
---
## ๐ Advantages of the New Approach
By combining both platforms, we benefit from the strengths of each system:
| Raspberry Pi | LEGO SPIKE |
|--------------|------------|
| Advanced computer vision | Reliable motor control |
| OpenCV support | Robust sensor integration |
| High computational power | Modular hardware platform |
| Future AI capabilities | Rapid prototyping |
Expected benefits include:
- Improved system stability
- Reduced hardware complexity
- Faster development cycles
- Easier testing and debugging
- Better scalability for future upgrades
---
# ๐ธ Project Gallery
# ๐งฑ Building Instructions
To ensure reproducibility and provide a complete overview of our robot design, detailed building instructions were created using Stud.io.
The instructions include:
- Complete chassis assembly
- Steering mechanism construction
- Sensor mounting positions
- Structural components
- Modular design elements
๐ **Building Instructions PDF:**
[ModelCar.pdf](ModelCar.pdf)
These instructions allow anyone to rebuild the mechanical structure of the robot and better understand the engineering decisions behind the design.
---
## ๐ฎ Future Development
The updated architecture creates a strong foundation for future enhancements such as:
- Advanced object detection
- Intelligent path planning
- Autonomous navigation improvements
- Machine learning integration
- Enhanced computer vision algorithms
This hybrid approach combines the computational capabilities of Raspberry Pi with the reliability and flexibility of LEGO SPIKE, creating a robust platform for future development and competition use.
---
# ๐ง Software Architecture โ Open Challenge
## ๐ 1. Drive System Initialization
Defines the drivetrain configuration and steering mechanism.
```python
left_motor = Motor(Port.F, Direction.COUNTERCLOCKWISE)
right_motor = Motor(Port.B, Direction.CLOCKWISE)
drive = DriveBase(
left_motor,
right_motor,
wheel_diameter=56,
axle_track=114
)
steering = Motor(Port.D)
steering.reset_angle(0)
```
## ๐ก 2. Sensor Configuration
Ultrasonic sensors are used for environmental awareness.
```python
left_sensor = UltrasonicSensor(Port.E)
right_sensor = UltrasonicSensor(Port.A)
```
## ๐งญ 3. State Variables
```python
target_heading = 0
last_error = 0
```
Purpose
- Stores desired robot orientation
- PID derivative memory
- Enables continuous heading correction across turns
## ๐ง 4. Utility Functions
Clamp Function (Safety Limiter)
```python
def clamp(v, mn, mx):
return max(mn, min(mx, v))
```
Purpose:
- Prevents excessive steering commands
- Ensures stable mechanical behavior
Angle Normalization
```python
def normalize(angle):
while angle > 180:
angle -= 360
while angle < -180:
angle += 360
return angle
```
Purpose:
- Keeps gyro values within stable range
- Prevents overflow drift issues
Sensor Filtering
```python
def filtered_distance(sensor):
total = 0
for i in range(5):
total += sensor.distance()
wait(3)
return total / 5
```
Purpose:
- Reduces ultrasonic noise
- Stabilizes wall detection
- Improves reliability of gap detection
## ๐ฏ 5. PID-Based Driving (Core Control Loop)
```python
def gyro_follow():
global last_error
heading = hub.imu.heading()
error = normalize(target_heading - heading)
derivative = error - last_error
steer = KP * error + KD * derivative
steer = clamp(steer, -MAX_STEER, MAX_STEER)
steering.run_target(500, steer, wait=False)
last_error = error
drive.drive(SPEED, 0)
```
## ๐ 6. Turn Logic (90ยฐ)
```python
def turn_left_90():
global target_heading, last_error
start = hub.imu.heading()
target = start - TURN_ANGLE
target_heading -= TURN_ANGLE
steering.run_target(300, -40, wait=False)
drive.drive(SPEED, 0)
while hub.imu.heading() > target:
wait(5)
steering.run_target(300, 0, wait=True)
last_error = 0
wait(150)
```
Purpose
- Executes controlled 90ยฐ left turn
- Updates global navigation reference
- Resets PID state after rotation
## ๐ฆ 7. Main Navigation Loop
```python
while True:
left_dist = filtered_distance(left_sensor)
right_dist = filtered_distance(right_sensor)
if filtered_distance(left_sensor) > 1500:
wait(100)
turn_left_90()
while filtered_distance(left_sensor) > 1500:
gyro_follow()
wait(10)
if filtered_distance(right_sensor) > 1500:
wait(100)
turn_right_90()
while filtered_distance(right_sensor) > 1500:
gyro_follow()
wait(10)
gyro_follow()
wait(10)
```
## ๐ง System Summary
| Component | Responsibility |
|----------|----------------|
| `gyro_follow()` | Continuous PID navigation |
| `turn_left_90()` | Left intersection handling |
| `turn_right_90()` | Right intersection handling |
| `filtered_distance()` | Sensor stabilization |
| Main loop | Decision engine |