ROS2 Jazzy Mower Project

Hello everyone,

My name is Vito Ammirata and I am a robotics enthusiast developing a project called SmartMower: a fully autonomous robotic lawnmower, based on ROS 2.

Project Goal

The goal is to create a DIY grass-cutting system that is robust, economical, and fully customizable. Key features I intend to implement include:

  • Autonomous Mapping and Localization: Using sensors to map the working area (the lawn) and localize the robot within it without the use of boundary wires.

  • Navigation and Path Planning: Implementing motion planning algorithms to ensure efficient and complete coverage of the area.

  • Obstacle Detection and Safety: Using sensors (such as ultrasonic sensors and a camera) to detect obstacles and implementing the necessary safety logic.

  • Hardware Integration: Developing ROS 2 nodes to manage actuators (wheel and blade motors) and sensors.

Current Status and Technology

The project is currently in the initial/prototyping phase, and the architecture is based on:

  • Operating System: ROS 2 Jazzy Jalisco.

  • Main Libraries: I am evaluating/using the Navigation Stack (Nav2) for navigation and localization.

  • Hardware: The main hardware includes a Raspberry Pi 5 and a Raspberry Pico, ultrasonic sensors, bumpers, a monocular camera, IMU, GNSS GPS, and single encoders on Brushless motors (5-wire).

You can find the source code and the current project structure on the GitHub repository: https://github.com/evlas/smartmower

Request for Help and Feedback

I would appreciate receiving feedback from the ROS community on some critical aspects of the project:

  1. ROS 2 Architecture: What are the recommended patterns or best practices for managing the control logic of a mobile robot from scratch (I am currently using a State Machine)?

  2. Nav2 and Mapping: Does anyone have experience adapting Nav2 for semi-structured outdoor environments like a lawn, where the ground is not always flat and “walls” may not be clearly defined?

  3. ROS 2 Jazzy: Are there any particular issues or specific opportunities with the Jazzy version that I should consider right away for this type of embedded application?

Any advice, constructive criticism, or offer of collaboration (especially on Python/C++ code and Nav2 integration) is highly welcome!

Thank you in advance for your time and support.

Best regards,

Vito Ammirata

1 Like

I’m in the same place as you, subscribing for the comments to see what experienced folks have to say

Hi Vito,
Your project is pretty interesting. I would advise to translate the Readme in English if you are looking for collaborator or reviews, it will be easier to find help. How are you communicating with between the Raspberry PI 5 and the pico ?
Jazzy is the last LTS so it is a good choice for your project!