Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

GREENBOY — Autonomous ROS 2 Mower Robot

A research-oriented autonomous lawn mower robot platform integrating mobile robotics, embedded control, sensor fusion, LiDAR-based perception, differential/skid-steer drive control, and modular ROS 2 software.

ROS 2 Platform Languages Status


1. Project Overview

GREENBOY is an experimental autonomous mower robot designed as a practical research platform for outdoor mobile robotics. The goal is to build a compact robotic system capable of navigating a residential garden, estimating its own motion, perceiving obstacles, and controlling a cutting mechanism through a modular hardware/software architecture.

The project combines:

  • ROS 2-based robotic middleware for modular control, launch management, visualization, simulation, mapping, and navigation;
  • Raspberry Pi onboard computing for high-level autonomy and sensor processing;
  • Arduino/embedded motor control for low-level real-time actuation;
  • Differential/skid-steer locomotion suitable for compact tracked or multi-wheel platforms;
  • Wheel encoder feedback for odometry and velocity control;
  • 2D LiDAR and IMU sensing for perception, localization, mapping, and pose estimation;
  • Simulation and robot description files for testing the robot model before field deployment.

This repository is intended not only as source code, but also as a technical record of the system architecture behind an engineering prototype. It is suitable for demonstrating practical skills in robotics, embedded systems, ROS 2, mechatronics, control systems, and applied autonomous navigation.


2. Motivation

Autonomous lawn mowing is a representative real-world robotics problem because it combines several engineering challenges:

  • outdoor operation on uneven terrain;
  • low-cost sensing under imperfect environmental conditions;
  • robust low-speed motion control;
  • reliable odometry under wheel slip;
  • obstacle detection and avoidance;
  • safe interaction between navigation software and a rotating cutting mechanism;
  • mechanical constraints related to compact size, battery operation, waterproofing, and maintainability.

The scientific and engineering purpose of this project is to use a mower robot as a testbed for studying the interaction between mobile robot kinematics, embedded motor control, sensor fusion, SLAM/localization, and autonomous navigation in a constrained outdoor environment.


3. Main Objectives

The system is developed around the following objectives:

  1. Create a functional autonomous ground robot platform suitable for garden-scale navigation.
  2. Implement ROS 2-based modular software with separate packages for robot description, sensors, control, and navigation.
  3. Integrate low-level motor control through Arduino and serial communication.
  4. Use LiDAR, IMU, and encoder feedback for perception and localization.
  5. Support simulation-first development through URDF/Xacro, Gazebo/Gz, RViz, and navigation configuration files.
  6. Provide a scalable architecture where additional sensors, safety modules, and path-planning logic can be added later.
  7. Document the project clearly so it can be presented as a serious engineering and research prototype.

4. Project Status

This is an experimental research prototype, not a commercial or safety-certified mower.

Current repository scope:

  • ROS 2 workspace structure;
  • robot description and simulation package;
  • LiDAR package integration;
  • BNO08x/BNO085 IMU node integration;
  • differential-drive/Arduino control packages;
  • configuration files for RViz, EKF, SLAM, navigation, scan filtering, joystick control, and twist multiplexing;
  • launch files for robot bring-up, simulation, localization, navigation, camera, joystick, and RPLIDAR.

Planned or ongoing development areas:

  • full field validation on real grass;
  • robust perimeter/geofence logic;
  • improved cutting-system safety interlock;
  • waterproof enclosure and cable management;
  • automated mowing-pattern planner;
  • improved state estimation under wheel slip;
  • battery monitoring and docking/charging logic.

5. Repository Structure

Mower_robot/
├── src/
│   ├── my_bot/
│   │   ├── config/              # RViz, EKF, Nav2, SLAM, scan filter, joystick, controller configs
│   │   ├── description/         # URDF/Xacro robot model, sensors, ros2_control, Gazebo plugins
│   │   ├── launch/              # Robot, simulation, localization, navigation, joystick, camera launches
│   │   └── worlds/              # Gazebo/Gz worlds for simulation
│   │
│   ├── diffdrive_arduino/       # ros2_control hardware interface for Arduino differential drive
│   ├── serial_motor_demo/       # ROS 2 serial motor driver and GUI/debug utilities
│   ├── mower_control_ros2/      # ROS 2 package for interfacing with the mower Arduino controller
│   ├── sllidar_ros2/            # SLAMTEC/RPLIDAR ROS 2 integration
│   ├── BNO085-ROS2-Node/        # ROS 2-compatible BNO085 IMU node
│   ├── bno080_ros2/             # Additional BNO080 ROS 2 package
│   ├── serial/                  # Serial communication support
│   └── imu_node.py              # IMU-related Python node
└── .gitignore

6. System Architecture

The robot follows a layered architecture separating high-level autonomy from low-level actuation.

┌─────────────────────────────────────────────────────────────┐
│                     High-Level Autonomy                     │
│ ROS 2 / Nav2 / SLAM / RViz / Robot Description / Planning   │
│ Raspberry Pi onboard computer                               │
└───────────────────────┬─────────────────────────────────────┘
                        │ /cmd_vel, /scan, /imu, /odom, /tf
┌───────────────────────▼─────────────────────────────────────┐
│                  Middleware and Control Layer                │
│ twist_mux │ diff_drive_controller │ EKF │ scan filters       │
│ serial drivers │ ros2_control hardware interface             │
└───────────────────────┬─────────────────────────────────────┘
                        │ Serial / USB / GPIO / I2C
┌───────────────────────▼─────────────────────────────────────┐
│                    Embedded Control Layer                    │
│ Arduino motor controller │ encoder reading │ PWM generation  │
│ PID velocity control │ safety watchdogs                    │
└───────────────────────┬─────────────────────────────────────┘
                        │ Motor drivers / power electronics
┌───────────────────────▼─────────────────────────────────────┐
│                     Physical Robot Platform                  │
│ Differential/skid-steer drive │ cutting module │ battery     │
│ LiDAR │ IMU │ encoders │ optional camera/GPS/ToF sensors     │
└─────────────────────────────────────────────────────────────┘

The key design principle is modularity: each functional subsystem can be developed, tested, replaced, or upgraded independently.


7. Hardware Concept

The robot is designed as a compact outdoor mobile platform with tracked or skid-steer motion. The current prototype concept includes the following subsystems.

Subsystem Role
Raspberry Pi onboard computer Runs ROS 2, navigation, sensor processing, launch files, visualization support
Arduino-based controller Handles low-level motor control, encoder feedback, and direct actuator interfacing
DC gear motors with encoders Provide differential/skid-steer locomotion and odometry feedback
Motor drivers Convert control commands into motor power signals
2D LiDAR Provides planar obstacle detection, mapping, and navigation input
BNO080/BNO085 IMU Provides inertial measurements for orientation and state estimation
Battery pack with BMS Supplies the mobile platform and protects the energy system
Cutting motor/module Performs mowing operation, controlled separately from navigation
Optional sensors Camera, GPS, ToF sensors, bumper switches, lift/tilt sensors, current sensors

Target mechanical concept:

  • compact body suitable for home-garden operation;
  • differential/skid-steer mobility;
  • low center of gravity for stability;
  • modular sensor mounting;
  • serviceable cutting assembly;
  • protected electronics compartment.

8. Software Stack

The software stack is based on ROS 2 packages and embedded firmware concepts.

Layer Technologies / Components
Operating system Ubuntu Linux on Raspberry Pi
Middleware ROS 2
Build system colcon, ament_cmake, ament_python
Robot model URDF/Xacro
Visualization RViz
Simulation Gazebo/Gz worlds and plugins
Navigation Nav2-style configuration and launch structure
Mapping SLAM configuration files
State estimation EKF configuration using odometry and IMU data
Motor interface serial communication, ros2_control, differential drive controller
Sensor drivers SLAMTEC/RPLIDAR, BNO08x/BNO085 IMU nodes
Languages C++, Python, C, CMake

9. Motion Control and Kinematic Model

The robot is treated as a differential-drive or skid-steer mobile platform. For a simplified differential-drive model, the linear and angular velocities of the robot are:

v = r / 2 · (ω_R + ω_L)
ω = r / L · (ω_R - ω_L)

where:

  • v is the forward linear velocity of the robot;
  • ω is the yaw angular velocity;
  • r is the wheel or effective track radius;
  • L is the distance between the left and right drive contact lines;
  • ω_R and ω_L are the right and left wheel angular velocities.

In practice, skid-steer platforms experience slip, especially on grass. Therefore, encoder odometry alone is not sufficient for robust outdoor localization. This is why the system architecture includes IMU feedback, LiDAR-based mapping/localization, filtering, and future extension toward sensor fusion with GPS or visual data.

Low-level control is separated from high-level planning:

  1. ROS 2 navigation or teleoperation publishes velocity commands.
  2. The differential drive controller converts commands into wheel velocities.
  3. The serial/Arduino interface transfers motor commands to the embedded controller.
  4. The embedded controller applies PWM/PID logic and reads encoders.
  5. Encoder feedback is published back to ROS 2 for odometry estimation.

10. Perception, Localization, and Navigation

The perception stack is designed around the combination of LiDAR, IMU, and odometry.

LiDAR

The sllidar_ros2 package provides integration for SLAMTEC/RPLIDAR devices. The LiDAR data is used for:

  • obstacle detection;
  • occupancy grid mapping;
  • scan visualization in RViz;
  • input to SLAM and navigation algorithms.

IMU

The BNO08x/BNO085 IMU node publishes inertial information used for:

  • orientation estimation;
  • yaw-rate information;
  • improved localization stability;
  • future fusion with wheel odometry using an EKF.

Odometry

Wheel encoders provide relative motion estimates. Encoder odometry is useful for short-term motion tracking, but it must be corrected or fused with other sensors because grass, slopes, and turns can introduce slip.

Navigation

The repository includes navigation-related launch and configuration files. The intended pipeline is:

LiDAR scan + odometry + IMU
        ↓
SLAM / localization / EKF
        ↓
local and global costmaps
        ↓
path planning and obstacle avoidance
        ↓
/cmd_vel velocity command
        ↓
differential drive motor control

11. Safety Considerations

Because this project involves a mobile robot and a rotating cutting mechanism, safety must be treated as a core engineering requirement.

Minimum recommended safety layers:

  • physical emergency stop button;
  • independent blade enable/disable relay;
  • software watchdog for command timeout;
  • bumper or contact sensors;
  • tilt/lift detection;
  • current monitoring for stalled motors;
  • geofence or perimeter constraint;
  • child/pet exclusion during testing;
  • blade disabled during software debugging, mapping, and teleoperation tests;
  • supervised operation only until the system is thoroughly validated.

Important: This project is not certified as a commercial autonomous mower. It should be used only as an experimental platform under controlled conditions.


12. Installation

12.1 Create a ROS 2 workspace

mkdir -p ~/mower_ws/src
cd ~/mower_ws/src
git clone https://github.com/hevrosy/Mower_robot.git

Depending on your preferred workspace layout, you may either clone the whole repository and build from its root, or copy the internal packages from Mower_robot/src/ into your own ROS 2 workspace.

Example:

cd ~/mower_ws
rosdep update
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

To source the workspace automatically:

echo "source ~/mower_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

13. Example Launch Commands

Robot description

ros2 launch my_bot rsp.launch.py

Simulation

ros2 launch my_bot launch_sim.launch.py

Real robot bring-up

ros2 launch my_bot launch_robot.launch.py

RPLIDAR

ros2 launch my_bot rplidar.launch.py

or, depending on the LiDAR package configuration:

ros2 launch sllidar_ros2 view_sllidar_c1_launch.py

Localization

ros2 launch my_bot localization_launch.py

Navigation

ros2 launch my_bot navigation_launch.py

Joystick teleoperation

ros2 launch my_bot joystick.launch.py

Serial motor driver test

ros2 run serial_motor_demo driver --ros-args \
  -p encoder_cpr:=5850 \
  -p loop_rate:=30 \
  -p serial_port:=/dev/ttyUSB0 \
  -p baud_rate:=57600

Adjust encoder_cpr, serial port, wheel radius, track width, and PID settings according to the real hardware.


14. Calibration and Testing Workflow

Recommended development sequence:

  1. Mechanical validation

    • verify drive alignment;
    • check wheel/track tension;
    • test motor mounting and cutting module isolation.
  2. Low-level motor testing

    • run motors with the blade disabled;
    • verify encoder direction;
    • measure counts per revolution;
    • tune PID velocity loops.
  3. ROS 2 communication test

    • verify serial connection;
    • publish test velocity commands;
    • monitor /odom, /tf, and encoder topics.
  4. Sensor validation

    • verify LiDAR scan in RViz;
    • verify IMU orientation and frame alignment;
    • check timestamp consistency.
  5. Simulation test

    • run the robot model in simulation;
    • validate URDF/Xacro geometry and frames;
    • test navigation parameters without physical risk.
  6. Mapping and localization

    • create a test map;
    • validate scan matching;
    • tune EKF and costmap parameters.
  7. Outdoor supervised testing

    • start with blade disabled;
    • test slow teleoperation;
    • test obstacle detection;
    • validate emergency stop;
    • only then proceed to mowing tests.

15. Engineering Challenges

The most important technical challenges in this project are:

  • encoder odometry drift on grass;
  • slip during skid-steer turns;
  • LiDAR reliability outdoors under changing light, dust, and vegetation;
  • sensor mounting vibration;
  • power noise from motors affecting logic electronics;
  • safe separation between the cutting system and navigation electronics;
  • waterproofing without overheating the electronics;
  • guaranteeing safe behavior when communication is lost;
  • designing a mowing pattern that covers the area efficiently without damaging plants or borders.

16. Roadmap

  • Add complete root-level documentation and diagrams.
  • Finalize hardware wiring diagrams.
  • Add Arduino firmware documentation.
  • Add blade safety relay and emergency stop documentation.
  • Add battery monitoring node.
  • Tune ros2_control and diff_drive_controller for the real robot.
  • Validate EKF odometry + IMU fusion.
  • Add outdoor SLAM/localization experiments.
  • Implement perimeter/geofence logic.
  • Add mowing coverage planner.
  • Add test videos, photos, and field results.
  • Add scientific evaluation: localization error, coverage percentage, path efficiency, runtime, and obstacle detection reliability.

17. Suggested Evaluation Metrics

For a research-style presentation, the system can be evaluated using:

Metric Purpose
Odometry drift Measures accumulated localization error
Path tracking error Measures motion-control accuracy
Coverage percentage Measures mowing completeness
Obstacle detection rate Measures perception reliability
Runtime per battery charge Measures energy efficiency
Communication latency Measures control-loop responsiveness
Emergency stop response time Measures safety-critical reaction
Slip ratio during turning Measures traction performance
Mapping consistency Measures SLAM quality

These metrics can turn the project from a hobby prototype into a documented engineering experiment.


18. LinkedIn Project Summary

GREENBOY is my experimental autonomous ROS 2 mower robot platform. The project combines embedded motor control, Raspberry Pi-based robotics, Arduino low-level actuation, LiDAR perception, IMU-based state estimation, differential-drive control, simulation, and navigation. The goal is to create a compact autonomous mower that can serve both as a practical garden robot and as a research platform for outdoor mobile robotics, sensor fusion, and safe autonomous navigation.

Key technologies: ROS 2, Raspberry Pi, Arduino, C++, Python, LiDAR, IMU, wheel encoders, Gazebo/Gz, RViz, Nav2-style navigation, differential drive control, embedded systems, and mechatronics.


19. Disclaimer

This project is under active development. It is intended for research, education, and experimental engineering work. Any real-world test involving motors or cutting blades must be performed with proper supervision, physical safety measures, and emergency stop functionality.


20. Author

Developed by hevrosy as an experimental robotics and mechatronics project.

GitHub: https://github.com/hevrosy/Mower_robot


Българска версия

GREENBOY — Автономен ROS 2 робот косачка

Научно-инженерен прототип на автономна роботизирана косачка, обединяващ мобилна роботика, вградени системи, сензорно сливане, LiDAR възприятие, диференциално/ skid-steer управление и модулна ROS 2 архитектура.

ROS 2 Platform Languages Status


1. Обзор на проекта

GREENBOY е експериментална автономна роботизирана косачка, разработвана като практическа платформа за изследване и демонстрация на мобилна роботика в реална външна среда. Целта на проекта е изграждане на компактен робот, способен да се движи в дворна среда, да оценява собственото си движение, да възприема препятствия и да управлява косещ механизъм чрез модулна хардуерно-софтуерна архитектура.

Проектът комбинира:

  • ROS 2 middleware за модулно управление, стартиране на възли, визуализация, симулация, картографиране и навигация;
  • Raspberry Pi бордови компютър за високонивова автономност и обработка на сензорни данни;
  • Arduino/embedded контролер за нискониво управление на задвижването;
  • диференциално / skid-steer задвижване, подходящо за компактна верижна или многоколесна платформа;
  • енкодери на моторите за одометрия и обратна връзка по скорост;
  • 2D LiDAR и IMU за възприятие, локализация, картографиране и оценка на ориентацията;
  • URDF/Xacro описание и симулация за тестване на модела преди реални полеви експерименти.

Хранилището е замислено не само като код, а и като техническа документация на архитектурата зад реален инженерно-научен прототип. Проектът е подходящ за представяне на умения в роботика, вградени системи, ROS 2, мехатроника, автоматично управление и автономна навигация.


2. Мотивация

Автономната косачка е представителен пример за реален проблем в роботиката, защото обединява няколко важни инженерни предизвикателства:

  • движение на открито върху неравен терен;
  • евтини сензори в неперфектни условия;
  • стабилно нискоскоростно управление;
  • надеждна одометрия при приплъзване;
  • откриване и избягване на препятствия;
  • безопасно взаимодействие между навигационен софтуер и въртящ се режещ механизъм;
  • механични ограничения, свързани с компактност, батерийно захранване, защита от влага и сервизируемост.

Научно-инженерната цел е роботът косачка да служи като тестова платформа за изследване на взаимодействието между кинематика на мобилни роботи, вградено управление на мотори, сензорно сливане, SLAM/локализация и автономна навигация в ограничена дворна среда.


3. Основни цели

Системата се разработва около следните цели:

  1. Изграждане на функционална автономна наземна роботизирана платформа за навигация в дворна среда.
  2. Реализация на модулен ROS 2 софтуер с отделни пакети за описание на робота, сензори, управление и навигация.
  3. Интеграция на нискониво управление на моторите чрез Arduino и серийна комуникация.
  4. Използване на LiDAR, IMU и енкодери за възприятие, локализация и обратна връзка.
  5. Simulation-first подход чрез URDF/Xacro, Gazebo/Gz, RViz и навигационни конфигурации.
  6. Мащабируема архитектура, позволяваща бъдещо добавяне на сензори, safety модули и алгоритми за покриване на площ.
  7. Ясна документация, подходяща за GitHub и професионално представяне в LinkedIn.

4. Статус на проекта

Това е експериментален научно-инженерен прототип, а не сертифицирана комерсиална автономна косачка.

Текущият обхват на хранилището включва:

  • ROS 2 workspace структура;
  • пакет за robot description и симулация;
  • интеграция на LiDAR пакет;
  • интеграция на BNO08x/BNO085 IMU възли;
  • пакети за differential-drive/Arduino управление;
  • конфигурации за RViz, EKF, SLAM, навигация, scan filtering, joystick control и twist multiplexing;
  • launch файлове за реален робот, симулация, локализация, навигация, камера, joystick и RPLIDAR.

Предстоящи или текущи направления за развитие:

  • пълна валидация върху реална тревна площ;
  • надеждна perimeter/geofence логика;
  • подобрен safety interlock за косещия механизъм;
  • влагоустойчив корпус и подредено окабеляване;
  • алгоритъм за систематично покриване на площта при косене;
  • по-добра оценка на състоянието при приплъзване;
  • мониторинг на батерията и бъдеща docking/charging логика.

5. Структура на хранилището

Mower_robot/
├── src/
│   ├── my_bot/
│   │   ├── config/              # RViz, EKF, Nav2, SLAM, scan filter, joystick, controller configs
│   │   ├── description/         # URDF/Xacro модел, сензори, ros2_control, Gazebo plugins
│   │   ├── launch/              # Стартиране на робот, симулация, локализация, навигация, joystick, камера
│   │   └── worlds/              # Gazebo/Gz среди за симулация
│   │
│   ├── diffdrive_arduino/       # ros2_control hardware interface за Arduino differential drive
│   ├── serial_motor_demo/       # ROS 2 serial motor driver и GUI/debug инструменти
│   ├── mower_control_ros2/      # ROS 2 пакет за интерфейс към Arduino контролера на косачката
│   ├── sllidar_ros2/            # SLAMTEC/RPLIDAR ROS 2 интеграция
│   ├── BNO085-ROS2-Node/        # ROS 2-compatible BNO085 IMU node
│   ├── bno080_ros2/             # Допълнителен BNO080 ROS 2 пакет
│   ├── serial/                  # Поддръжка за серийна комуникация
│   └── imu_node.py              # Python възел, свързан с IMU
└── .gitignore

6. Системна архитектура

Роботът използва слоеста архитектура, разделяща високонивовата автономност от нисконивовото управление на актуаторите.

┌─────────────────────────────────────────────────────────────┐
│                    Високонивова автономност                 │
│ ROS 2 / Nav2 / SLAM / RViz / Robot Description / Planning   │
│ Raspberry Pi бордови компютър                               │
└───────────────────────┬─────────────────────────────────────┘
                        │ /cmd_vel, /scan, /imu, /odom, /tf
┌───────────────────────▼─────────────────────────────────────┐
│                 Middleware и слой за управление              │
│ twist_mux │ diff_drive_controller │ EKF │ scan filters       │
│ serial drivers │ ros2_control hardware interface             │
└───────────────────────┬─────────────────────────────────────┘
                        │ Serial / USB / GPIO / I2C
┌───────────────────────▼─────────────────────────────────────┐
│                    Вграден контролен слой                    │
│ Arduino motor controller │ encoder reading │ PWM generation  │
│ PID velocity control │ safety watchdogs                    │
└───────────────────────┬─────────────────────────────────────┘
                        │ Motor drivers / power electronics
┌───────────────────────▼─────────────────────────────────────┐
│                    Физическа роботизирана платформа          │
│ Differential/skid-steer drive │ cutting module │ battery     │
│ LiDAR │ IMU │ encoders │ optional camera/GPS/ToF sensors     │
└─────────────────────────────────────────────────────────────┘

Основният принцип е модулност: всеки функционален подсистемен блок може да бъде разработван, тестван, заменян или надграждан независимо.


7. Хардуерна концепция

Роботът е проектиран като компактна външна мобилна платформа с верижно или skid-steer движение. Концепцията включва следните подсистеми.

Подсистема Роля
Raspberry Pi бордови компютър Изпълнява ROS 2, навигация, обработка на сензори, launch файлове и визуализация
Arduino контролер Нискониво управление на мотори, енкодери и директни актуатори
DC редукторни мотори с енкодери Осигуряват движение и обратна връзка за одометрия
Драйвери за мотори Преобразуват управляващите команди в силови сигнали
2D LiDAR Използва се за препятствия, картографиране и навигация
BNO080/BNO085 IMU Измерва инерциални данни за ориентация и оценка на състоянието
Батериен пакет с BMS Захранва платформата и предпазва енергийната система
Режещ/косещ модул Извършва косенето, отделен от навигационното управление
Допълнителни сензори Камера, GPS, ToF сензори, bumper switches, lift/tilt sensors, current sensors

Целева механична концепция:

  • компактно тяло за дворна среда;
  • differential/skid-steer мобилност;
  • нисък център на тежестта;
  • модулно закрепване на сензори;
  • сервизируем косещ механизъм;
  • защитено отделение за електроника.

8. Софтуерен стек

Софтуерът е базиран на ROS 2 пакети и embedded firmware концепция.

Слой Технологии / компоненти
Операционна система Ubuntu Linux върху Raspberry Pi
Middleware ROS 2
Build system colcon, ament_cmake, ament_python
Robot model URDF/Xacro
Визуализация RViz
Симулация Gazebo/Gz worlds и plugins
Навигация Nav2-style конфигурация и launch структура
Картографиране SLAM конфигурационни файлове
Оценка на състоянието EKF конфигурация чрез одометрия и IMU
Интерфейс към моторите serial communication, ros2_control, differential drive controller
Сензорни драйвери SLAMTEC/RPLIDAR, BNO08x/BNO085 IMU nodes
Езици C++, Python, C, CMake

9. Управление на движението и кинематичен модел

Роботът се разглежда като differential-drive или skid-steer мобилна платформа. При опростен differential-drive модел линейната и ъгловата скорост са:

v = r / 2 · (ω_R + ω_L)
ω = r / L · (ω_R - ω_L)

където:

  • v е линейната скорост напред;
  • ω е ъгловата скорост около вертикалната ос;
  • r е радиусът на колелото или ефективният радиус на задвижващия контакт;
  • L е разстоянието между левия и десния задвижващ контакт;
  • ω_R и ω_L са ъгловите скорости на десния и левия двигател/колело.

При реална skid-steer платформа върху трева възниква приплъзване, особено при завой. Затова само енкодерната одометрия не е достатъчна за надеждна външна локализация. Архитектурата включва IMU, LiDAR-базирано картографиране/локализация, филтриране и възможност за бъдещо сензорно сливане с GPS или визуални данни.

Разделението между високонивово и нискониво управление е следното:

  1. ROS 2 навигация или teleoperation публикува velocity commands.
  2. Differential drive controller преобразува командите в скорости на ляв/десен мотор.
  3. Serial/Arduino интерфейсът предава командите към embedded контролера.
  4. Embedded контролерът прилага PWM/PID управление и чете енкодерите.
  5. Обратната връзка от енкодерите се връща към ROS 2 за одометрия.

10. Възприятие, локализация и навигация

Сензорният стек е изграден около комбинация от LiDAR, IMU и одометрия.

LiDAR

Пакетът sllidar_ros2 осигурява интеграция на SLAMTEC/RPLIDAR устройства. LiDAR данните се използват за:

  • откриване на препятствия;
  • occupancy grid картографиране;
  • визуализация на scan данни в RViz;
  • вход за SLAM и навигационни алгоритми.

IMU

BNO08x/BNO085 IMU възелът публикува инерциални данни, използвани за:

  • оценка на ориентацията;
  • yaw-rate информация;
  • по-стабилна локализация;
  • бъдещо сливане с одометрия чрез EKF.

Одометрия

Енкодерите дават относителна оценка на движението. Тя е полезна за краткосрочно проследяване, но трябва да бъде коригирана или слята с други сензори, защото трева, наклони и завои могат да доведат до приплъзване.

Навигация

Хранилището съдържа launch и configuration файлове за навигация. Предвиденият pipeline е:

LiDAR scan + odometry + IMU
        ↓
SLAM / localization / EKF
        ↓
local and global costmaps
        ↓
path planning and obstacle avoidance
        ↓
/cmd_vel velocity command
        ↓
differential drive motor control

11. Safety съображения

Тъй като проектът включва мобилен робот и въртящ се режещ механизъм, безопасността трябва да бъде основно инженерно изискване.

Минимални препоръчителни safety слоеве:

  • физически emergency stop бутон;
  • независимо реле за enable/disable на режещия механизъм;
  • software watchdog при загуба на команди;
  • bumper/contact сензори;
  • tilt/lift detection;
  • мониторинг на ток при блокирали мотори;
  • geofence или perimeter ограничение;
  • забрана за присъствие на деца/домашни любимци по време на тестове;
  • изключен нож при debug, mapping и teleoperation тестове;
  • работа само под наблюдение до пълна валидация.

Важно: Проектът не е сертифицирана комерсиална косачка. Трябва да се използва само като експериментална платформа в контролирана среда.


12. Инсталация

12.1 Създаване на ROS 2 workspace

mkdir -p ~/mower_ws/src
cd ~/mower_ws/src
git clone https://github.com/hevrosy/Mower_robot.git

Според предпочитания workspace layout може да се build-не цялото хранилище или да се копират вътрешните пакети от Mower_robot/src/ в отделен ROS 2 workspace.

Пример:

cd ~/mower_ws
rosdep update
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bash

Автоматично source-ване на workspace:

echo "source ~/mower_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

13. Примерни launch команди

Robot description

ros2 launch my_bot rsp.launch.py

Симулация

ros2 launch my_bot launch_sim.launch.py

Стартиране на реалния робот

ros2 launch my_bot launch_robot.launch.py

RPLIDAR

ros2 launch my_bot rplidar.launch.py

или според конфигурацията на LiDAR пакета:

ros2 launch sllidar_ros2 view_sllidar_c1_launch.py

Локализация

ros2 launch my_bot localization_launch.py

Навигация

ros2 launch my_bot navigation_launch.py

Joystick teleoperation

ros2 launch my_bot joystick.launch.py

Тест на serial motor driver

ros2 run serial_motor_demo driver --ros-args \
  -p encoder_cpr:=5850 \
  -p loop_rate:=30 \
  -p serial_port:=/dev/ttyUSB0 \
  -p baud_rate:=57600

Параметрите encoder_cpr, serial port, wheel radius, track width и PID settings трябва да се настроят според реалния хардуер.


14. Калибрация и тестов workflow

Препоръчителна последователност на разработка:

  1. Механична валидация

    • проверка на геометрията на задвижването;
    • проверка на опъна на веригите/колелата;
    • проверка на закрепването на моторите и изолацията на косещия модул.
  2. Нискониво тестване на моторите

    • тест на моторите с изключен нож;
    • проверка на посоката на енкодерите;
    • измерване на counts per revolution;
    • PID tuning на velocity loops.
  3. ROS 2 комуникационен тест

    • проверка на serial връзката;
    • публикуване на тестови velocity команди;
    • наблюдение на /odom, /tf и encoder topics.
  4. Проверка на сензорите

    • визуализация на LiDAR scan в RViz;
    • проверка на IMU ориентация и frame alignment;
    • проверка на timestamp consistency.
  5. Симулационен тест

    • стартиране на модела в симулация;
    • проверка на URDF/Xacro геометрията и frames;
    • тест на навигационни параметри без риск за реалния робот.
  6. Картографиране и локализация

    • създаване на тестова карта;
    • проверка на scan matching;
    • настройка на EKF и costmap параметри.
  7. Полеви тестове под наблюдение

    • начало с изключен нож;
    • бавна teleoperation проверка;
    • тест за препятствия;
    • проверка на emergency stop;
    • едва след това — тестове с косене.

15. Инженерни предизвикателства

Най-важните технически предизвикателства са:

  • drift на енкодерната одометрия върху трева;
  • приплъзване при skid-steer завой;
  • надеждност на LiDAR навън при променлива светлина, прах и растителност;
  • вибрации върху сензорните монтажи;
  • електрически шум от моторите към логическата електроника;
  • безопасно разделение между режещата система и навигационната електроника;
  • влагоустойчивост без прегряване;
  • гарантирано безопасно поведение при загуба на комуникация;
  • алгоритъм за ефективно покриване на площта без повреждане на растения и бордюри.

16. Roadmap

  • Добавяне на пълна root-level документация и диаграми.
  • Финализиране на wiring diagrams.
  • Документация на Arduino firmware.
  • Документация на blade safety relay и emergency stop.
  • Добавяне на battery monitoring node.
  • Настройка на ros2_control и diff_drive_controller за реалния робот.
  • Валидация на EKF odometry + IMU fusion.
  • Outdoor SLAM/localization експерименти.
  • Реализация на perimeter/geofence логика.
  • Алгоритъм за mowing coverage planning.
  • Добавяне на видеа, снимки и резултати от полеви тестове.
  • Научна оценка: localization error, coverage percentage, path efficiency, runtime и obstacle detection reliability.

17. Предложени метрики за оценка

За научно-инженерно представяне системата може да се оценява чрез:

Метрика Цел
Odometry drift Измерва натрупаната грешка в локализацията
Path tracking error Оценява точността на управлението
Coverage percentage Оценява пълнотата на косене
Obstacle detection rate Оценява надеждността на възприятието
Runtime per battery charge Оценява енергийната ефективност
Communication latency Оценява бързодействието на control loop
Emergency stop response time Оценява safety реакцията
Slip ratio during turning Оценява сцеплението и механиката
Mapping consistency Оценява качеството на SLAM

Тези метрики превръщат проекта от хоби прототип в документиран инженерно-научен експеримент.


18. LinkedIn резюме

GREENBOY е моя експериментална автономна ROS 2 роботизирана косачка. Проектът комбинира embedded motor control, Raspberry Pi базирана роботика, Arduino нискониво управление, LiDAR възприятие, IMU-базирана оценка на състоянието, differential-drive control, симулация и навигация. Целта е създаване на компактен автономен робот, който може да служи както като практична градинска платформа, така и като научно-инженерен тестбед за външна мобилна роботика, сензорно сливане и безопасна автономна навигация.

Ключови технологии: ROS 2, Raspberry Pi, Arduino, C++, Python, LiDAR, IMU, wheel encoders, Gazebo/Gz, RViz, Nav2-style navigation, differential drive control, embedded systems и mechatronics.


19. Disclaimer

Проектът е в активна разработка. Предназначен е за научно-образователни и експериментални инженерни цели. Всеки реален тест с мотори или режещ механизъм трябва да се извършва с надзор, физически safety мерки и работещ emergency stop.


20. Автор

Разработен от hevrosy като експериментален проект по роботика и мехатроника.

GitHub: https://github.com/hevrosy/Mower_robot

About

ROS 2 autonomous tracked mower robot platform with differential drive, LiDAR, IMU, encoder feedback, Nav2/SLAM configuration and embedded motor-control integration.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages