Skip to content

94-psy/OpenNeato

OpenNeato

License: GPL v3 ROS 2 Python 3.12

Caution

PROJECT STATUS: SUSPENDED INDEFINITELY

This project has been put on hold indefinitely. During development and testing, several critical hardware and communication bottlenecks were encountered that prevent stable real-world usage:

  • Thermal Issues (Overheating): The Radxa Zero 3W experiences severe thermal throttling (reaching 85°C+) inside the enclosed robot chassis. Due to the extremely limited physical space, it is not possible to install an adequate heatsink or active cooling fan without major structural modifications to the robot.
  • Serial Connection Limitations: The proprietary serial interface of the Neato motherboard was designed for factory diagnostics, not real-time control. It cannot reliably handle the high-frequency data polling required for ROS 2 navigation, leading to frequent buffer overflows, micro-controller crashes, and connection drops.

The repository, codebase, and documentation will remain online and open-source for anyone who wishes to fork it, study it, or attempt to overcome these hardware limitations in the future.

OpenNeato is an open-source project designed to breathe new life into Neato robotic vacuums (specifically tested on the Neato D7) by replacing the proprietary logic board functions with a modern Single Board Computer (SBC) running ROS 2.

This project transforms your old vacuum into a smart, fully autonomous robot capable of advanced mapping, navigation, and web-based control, leveraging the power of the nav2 stack and a custom Python-based driver.

Hardware Requirements

To build your own OpenNeato, you will need:

  • Robot: Neato XV, Botvac, or D-Series (e.g., Neato D7 Connected).
  • SBC: Radxa Zero 3W (recommended) or Raspberry Pi Zero 2 W.
  • Power: Buck Converter (Step-down) to convert the robot's battery voltage (approx. 14V-16V) to 5V for the SBC.
  • Storage: High-endurance MicroSD Card (16GB+).
  • Connectivity: UART connection wires (TX/RX/GND) to interface the SBC with the Neato motherboard.

🚀 Getting Started (Zero to Hero)

1. Flash the Operating System

We recommend Ubuntu 24.04 Server (Joshua Riek's Rockchip build is currently the most stable for Radxa Zero 3W).

  1. Download the Image:
  2. Download the loader.bin:
    • rkdeveloptool (Look for rk356x_spl_loader_ddr1056_v1.12.109_no_check_todly.bin).
  3. Flash to eMMC (Radxa Zero 3W):
    • Hold the Maskrom button on the board while plugging it into your PC via USB.
    • Use BalenaEtcher for writing on a SD or rkdeveloptool to flash the .img file directly to the eMMC device.
  4. eMMC
    • Prepare the image (extract it)
    • (OPTIONAL) if the image is less than the eMMC, expand it (example for a 32GB eMMC):
    truncate -s 28G Radxa_Zero3_NPU_Ubuntu24.img
    sudo gdisk Radxa_Zero3_NPU_Ubuntu24.img
    • Press in order x (menu expert), e (relocate backup data structures to the end of the disk), w (write), Y

    • Resize the partition:

    sudo losetup -fP --show Radxa_Zero3_NPU_Ubuntu24.img
    • Note the result: should be somethink like /dev/loop0, now wh have to check which partition number we have to increase (look for an EXT4 partition and note the number)
    lsblk /dev/loop0
    • Suppose to use loop0p1
    sudo parted /dev/loop0 resizepart 1 100%
    sudo e2fsck -f -y /dev/loop0p1
    sudo resize2fs /dev/loop0p1
  5. WiFi Setup (headless setup)
    • Mount the image:
    mkdir -p radxa_mount
    sudo mount /dev/loop0p1 radxa_mount
    cd radxa_mount/etc/netplan/
    sudo nano 01-netcfg.yaml
    • Configure your network by copying and editing this file (you can configure more than one network):
    network:
      version: 2
      renderer: NetworkManager
      ethernets:
        eth0:
          dhcp4: true
          optional: true
      wifis:
        wlan0:
          dhcp4: true
          optional: true
          access-points:
            "WIFI_NAME":
              password: "WIFI_PASSWD"
            "WIFI2":
              password: "passwd2"
    • Save and exit CTRL + o and CTRL + x
      • Exit and umount:
    sudo chmod 600 01-netcfg.yaml
    cd ../../../
    sudo umount radxa_mount
    sudo losetup -D
  6. Flashing
    • Put the Radxa in Maskrom and then flash bin file and than the img (could take time)
    sudo rkdeveloptool db rk356x_spl_loader_ddr1056_v1.12.109_no_check_todly.bin
    sudo rkdeveloptool wl 0 Radxa_Zero3_NPU_Ubuntu24.img
    • Reboot
    sudo rkdeveloptool rd

Installation

The installation process has been fully automated to ensure a smooth setup on Ubuntu 24.04.

  1. Clone the Repository:

    git clone [https://github.com/94-psy/OpenNeato.git](https://github.com/94-psy/OpenNeato.git)
    cd OpenNeato
  2. Run the Installer:

    chmod +x installer/install.sh
    sudo ./installer/install.sh
  3. Follow the Interactive Menu: The script uses a whiptail interface. Select "Install / Update" to begin. The installer will automatically:

    • Install system dependencies (ROS 2, Python venv, etc.).
    • Set up permissions (dialout group).
    • Deploy the firmware and web interface to /opt/openneato.
    • Build the ROS 2 workspace.
    • Configure and start systemd services.

Once finished, the installer will display the IP address of your robot and the URL for the Web Dashboard.

How to Update (Deploy Pigro)

When new features or bug fixes are released, updating your robot is simple. The installation script is idempotent and handles updates automatically.

cd OpenNeato
git pull
sudo ./installer/install.sh

About

OpenNeato Open-source ROS 2 firmware for Neato D-Series robots (D3-D7). Replaces the original logic board features with a modern SBC (Radxa Zero 3W), enabling autonomous navigation, mapping, and web-based control via Nav2.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors