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.
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.
We recommend Ubuntu 24.04 Server (Joshua Riek's Rockchip build is currently the most stable for Radxa Zero 3W).
- Download the Image:
- Radxa Zero 3 NPU with Ubuntu 24.04 (Look for
Radxa_Zero3_NPU_Ubuntu24.img.xz).
- Radxa Zero 3 NPU with Ubuntu 24.04 (Look for
- Download the loader.bin:
- rkdeveloptool (Look for
rk356x_spl_loader_ddr1056_v1.12.109_no_check_todly.bin).
- rkdeveloptool (Look for
- 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
rkdeveloptoolto flash the.imgfile directly to the eMMC device.
- 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 anEXT4partition 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
- 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 + oandCTRL + x -
- Exit and umount:
sudo chmod 600 01-netcfg.yaml cd ../../../ sudo umount radxa_mount sudo losetup -D - 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
The installation process has been fully automated to ensure a smooth setup on Ubuntu 24.04.
-
Clone the Repository:
git clone [https://github.com/94-psy/OpenNeato.git](https://github.com/94-psy/OpenNeato.git) cd OpenNeato -
Run the Installer:
chmod +x installer/install.sh sudo ./installer/install.sh
-
Follow the Interactive Menu: The script uses a
whiptailinterface. 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
systemdservices.
Once finished, the installer will display the IP address of your robot and the URL for the Web Dashboard.
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