Links to the Differential Drive Robot AM, PM teams blog pages, and general inks useful to all the teams.
Neato Parts - Neato Drive Motors in STEAM Clown's Closet
3D Print Motor Mount - 4/13/2025
The following is a list of resources for each type of Neato Rover we have in class:
In this setup territorial and steps, we are going to follow the steps found in Camp Peve's
Currently all the NEATO tutorials indicate that Linux, specifically Ubuntu 22.04 or better be installed on the Laptop and Raspberry Pi.
Creating A Ubuntu Linux Workstation:
Is there Already A Neato Class "Craptop"?
Check with your instructor
There may already be a class "craptop" with the Neato Software installed.
Ubuntu 22.04.n (probably Ubuntu 22.04.4) and the ROS tools.
Do You Need To Build An Ubuntu Image?
Go to the Ubuntu software site and create a USB install image for a laptop. Currently Ubuntu 22.04.4 is the image used. Don't use Ubuntu 24.04
Then run this new Ubuntu Build script found on the STEAM Clown's Github (Neato) to install a bunch of useful stuff:
sudo wget -O Neato-Craptop-Ubuntu-Build.sh https://raw.githubusercontent.com/jimTheSTEAMClown/neatoRovers/main/Neato-Craptop-Ubuntu-Build.sh
sudo chmod 755 Neato-Craptop-Ubuntu-Build.sh
./Neato-Craptop-Ubuntu-Build.sh
Check out the Chapter 5 "Robot Operating System (ROS)" of this Homebrewed Robots PDF file
If not, check with your Instructor. When you have a USB image, install it on the "Craptop". When you boot, it will walk through an Ubuntu OS installation. Give your "craptop" a name like "Neato-N" , where "N" is the number of your rover, and the password can be the class password - Ask your Instructor!!!
Currently all the NEATO tutorials indicate that Linux, specifically Ubuntu 22.04 or better be installed on the Laptop and Raspberry Pi.
Creating A Ubuntu Linux Raspberry Pi:
Check out the Chapter 5 "Robot Operating System (ROS)" of this Homebrewed Robots PDF file
Go to the Raspberry Pi Image and create a SD card with Ubuntu 22.04.4 (Not 24.04)
When you have an SD card image, install it on the Raspberry Pi 4. When you boot, it will walk through an Ubuntu OS installation. Give your Rover a name like "Neato-Rover-N" , where "N" is the number of your rover, and the password can be the class password - Ask your Instructor!!!
When the Raspberry Pi is booted, open a terminal and run sudo apt update and sudo apt upgrade -y
Run a New Image Build Script:
sudo wget -O Neato-RaspberryPi-Ubuntu-Build.sh https://raw.githubusercontent.com/jimTheSTEAMClown/neatoRovers/main/Neato-RaspberryPi-Ubuntu-Build.sh
sudo chmod 755 Neato-RaspberryPi-Ubuntu-Build.sh
./Neato-RaspberryPi-Ubuntu-Build.sh
Sources - https://www.itpro.com/mobile/remote-access/368102/how-to-remote-desktop-into-ubuntu
Turn on VNC sharing on your Raspberry Pi Ubuntu system is straight forward.
Click on Ubuntu's main menu button (The Waffle)
Search for Settings, and open the app
Click on the 'Sharing' slider button at the top of the dialog screen
This will let you configure the Remote access.
Turn on the "Remote Desktop"
Enable Legacy VNC Protocol
Require a Password
Turn on "Remote Control"
Update the Password to be something that is NOT your actual Target System password.
Seems to work after a reboot. Also I had to update the VNC settings and then restart the VNC session to have the "Picture Quality" to be medium or high.
Sources - https://www.itpro.com/mobile/remote-access/368102/how-to-remote-desktop-into-ubuntu
Currently all the NEATO tutorials indicate that we install the ROS2 from https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html
See ".Do the ROS2 Desktop Install " on about page 118 of the doc https://camppeavy.com/articles/homebrewed_robots.pdf
The Linux commands to install are found in this shell script. I did run into an error the first time I installed it on the Linux CrapTop target.
Run a New Image Build Script:
sudo wget -O Neato-ROS-Build.sh https://raw.githubusercontent.com/jimTheSTEAMClown/neatoRovers/main/Neato-ROS-Build.sh
sudo chmod 755 Neato-ROS-Build.sh
./Neato-ROS-Build.sh
Neato All Series Documentation - https://support.neatorobotics.com/hc/en-us/articles/225369607-Neato-All-Series-Documentation#h_01F6HE7072RHK1CKK751353ES4
Camps Github - https://github.com/cpeavy2/botvac_node <-- this may be a good starting point.
Alright... I've updated my "cheat sheet" so... here's the 1, 2, 3, 4. I assume you have an Ubuntu workstation with ROS Kinetic installed: http://wiki.ros.org/kinetic/Installation/Ubuntu
After which install the intro_to_ros package: https://github.com/SV-ROS/intro_to_ros
One important thing I've discovered is the ".bashrc" file configuration... generally remark (#) out anything about the ROS environment and add the following 3 lines:
export ROS_MASTER_URI=http://robot:11311
export ROS_HOST=remote_computer:11311
source ~/catkin_ws/devel/setup.bash
Where "robot" is the Raspberry Pi (i.e. robot) and "remote_computer" is the name of your ROS host. IP addresses could be used. Oh! One more thing... I prefer to use the keyboard teleop package from the original TurtleBot: http://wiki.ros.org/teleop_twist_keyboard
So with remote workstation (ROS host) ready to go and the Pi booted and “pingable”… plug it into the robot (with the robot turned on). The first thing I do is start a "ping terminal" if I have problems anywhere down the line immediately go back to this window and make sure you have a "heartbeat".and
Next ssh to "robot" (i.e. ubuntu@robot) default password is “ubuntu”.
I generally (always) start a session with "sudo ntpdate pool.ntp.org" on both Pi and host. This synchronizes the computers. BTW you might want to install “ntpdate” and “minicom”.
Next change mode on Pi to get r/w access to the robot "sudo chmod 666 /dev/ttyACM0".
Next launch "roslaunch bv80bot_node bv80bot_base_only.launch" on robot (Raspberry Pi).*
Next launch "roslaunch bv80bot_node bv80bot_map_gui.launch" on the remote workstation (ROS host).
Finally launch "rosrun teleop_twist_keyboard teleop_twist_keyboard.py" if you've installed the TurtleBot's Teleop Keyboard. Now with “teleop_twist_keyboard” you should be able to drive around and make a map! Yay!
Drive around and make a map... try and end up where you started because the navigation stack will assume that starting position otherwise you’d have to estimate your pose.
After you've created your map open a new terminal window and change directories: "roscd neato_2dnav/maps". Save your map with "rosrun map_server map_saver"
After SAVING your map kill the gmapping (grid-mapping) window "<ctr> c" (the terminal window where you launched the mapping and GUI.
Then paste "roslaunch bv80bot_node bv80bot_nav_gui.launch" into that window. This will launch the map server, rviz, path-planner and localizer. Now with a little bit of luck you should be able to select "goal" click somewhere on the map and (as mentioned) with a little bit of luck the robot will navigate to that goal.
Congratulations!
Let me know if !@#$'s, ???'s or !!!'s.
Thanks,
Camp
* Note there seems to be a bug on line 119... if you get this error delete ", scan.intensities" and it will go away.
Another link from Camp on maybe a class - https://sites.google.com/site/comprobofall14/home
The Victor 883 speed controllers (Discontinued) - The Victor speed controllers are specifically engineered for robotic applications. The high current capacity, low voltage drop, and peak surge capacity make the Victor ideal for drive systems while its braking options and precise control meet the demanding needs of arms and lift systems. Technical Drawing
Found that the PWM control for the servo connection is basically CCW, Stopped, or CW in the range of servo values 87,95,98
Neato + ROS = Navigation - Servo Magazine - Article by Camp Peevy
Github - https://wiki.ros.org/neato_robot
maybe some Ubiquity Robotics stuff - https://github.com/UbiquityRobotics/ubiquity_main/blob/kinetic/README.md
Neato Developers - https://developers.neatorobotics.com/
Servo Magazine - Controlling Robots Over the Internet
\