This is a template page for top level Unit / Projects / Resources pages
Overview, Introduction & Prerequisites:
This is an Introduction Unit for my Links to the Differential Drive Robot, Neato/Roomba type vacuum Robots.Β There are links to AM, PM teams blog pages, and general inks useful to all the teams.
Prerequisites:
No explicit prerequisite course work, Electronics, Logic, or coding knowledge is required. Come as you are. π§ Β
Topics:
Neato... Roomba...
Hacking a Roomba type vacuum.Β Pulling their control board and take over Motors with our own Micro and Motor Controllers
Hijacking Neato through NeatoΒ USB port & API
How to be Awesome
I'm a huge supporter of Open Source and Creative Commons resources.Β This is another way of saying Free, Equitable and Accessible resources...Β π½οΈ π§ π° π ππ οΈ πΌοΈ - Want to Support Me on this endeavor?
Let's get started... Its going to be a wild, fun, awesome ride...
Web Site: WWW.STEAMCLOWN.ORG | Contact: TopClown@STEAMClown.org | LinkedIn: Jim Burnham | TikTok: STEAM Clown
Consider Supporting my Open Source STEAM Curriculum Development -- Patrion: Jim The STEAM ClownΒ | Amazon: Amazon Classroom Wishlist, Β
Note: TEACHERS!!!! If you are going to use any of these lessons or labs, please let me know.Β I would really like to understand how you are using this material.Β I want to know what works, what does not work, what would you like me to add, and how I can make it better.Β If you changed something, let me know, because it's probably a good idea and you should share it with me, so I can add it and share with everyone else.Β
This Module or lesson is how I teach in my class. Many of the lessons might be specific to my class, but you could probably adjust them for your class.Β I'll try to make them a neutral as I can, so they can be used in any Mathematics, Physics, Computer Science, or any other Engineering / Technology class.Β Let me know how I can make that better. I'll try to keep this unit current and relevant.Β Please let me know if any resource links are broken or not accessible.
Send me email at TopClown@STEAMClown.org Β You can also Join the STEAM Clown's Mailing List.Β If you want to Unsubscribe, click my Unsubscribe From Mailing List link
Author: Jim Burnham - TopClown@STEAMClown.org. License: Distributed as Open Source.Β
I would like to thank <Your Company or Organization Here> for their generous support of my classroom and curriculum development.Β <Your Company or Organization Here> has <Your value proposition, call to action, & related content and message>Β
(If you would like to sponsor this, or other Modules or presentation, please contact TopClown@STEAMClown.orgΒ or check out my "How To Help Page"
If you would like to sponsor other Curriculum Development, check out my "How To Help Page" or contactΒ TopClown@STEAMClown.orgΒ
No explicit prerequisite course work or coding knowledge is required, but students are expected to have a good understanding of basic computer principles.
Primer: Β "Aaron, I can imagine no way in which this thing could be considered anywhere remotely close to safe. All I know is I spent six hours in there and I'm still alive... You still want to do it?"
As with any activity, please make sure you are using appropriate safety equipment. Β If you are coding, writing, reading, or working a lab, make sure you stand up and stretch every hour or so,Β Please consider any safety issues connecting to a Raspberry Pi, Arduino, computers and other electronic equipment.
What can you do with a Neato/Roomba Vacuum?Β
This Lesson is coming soon - click here to be notified when it's available - Professional Development Newsletter
Mechatronics - <topic> - π Lesson Tutorial
Mechatronics - <topic> - π½οΈ Video / Podcast
Mechatronics - <topic> - π° Slide Presentation (Coming Soon)
Mechatronics - <topic> - LAB #1 - π οΈ LAB Activity
Mechatronics - <topic> - LAB #2 - π οΈ LAB Activity
Mechatronics - <topic> - LAB #3 - π οΈ LAB Activity
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
\
This Lesson is coming soon - click here to be notified when it's available - Professional Development Newsletter
Mechatronics - <topic> - π Lesson Tutorial
Mechatronics - <topic> - π½οΈ Video / Podcast
Mechatronics - <topic> - π° Slide Presentation (Coming Soon)
Mechatronics - <topic> - LAB #1 - π οΈ LAB Activity
Mechatronics - <topic> - LAB #2 - π οΈ LAB Activity
Mechatronics - <topic> - LAB #3 - π οΈ LAB Activity
If you are a teacher and want to connect and teach this Lesson or Module, discuss how I teach it, give me feedback, please contact me at TopClown@STEAMClown.orgΒ
To access this Lesson Plan and the Teacher collaboration area, you will have needed to connect with me so I can Share the content with you.Β Please go toΒ the Teachers & Partner Page, check out my Licensing and fill out my Collaboration and Curriculum Request Form.Β I'll review and then grant you access to the requested areas and lesson plans if they exist.
If you have questions or feedback on how I can make a presentation, lesson, lab better please give use my Feedback Form.
Iβll work on getting these in, but itβs the last thing I want to work on :-) When I have them updated, Iβll move to the top of the Lesson Plan.Β
NGSS: <list standard numbers>
California CTE Standards: <list standard numbers>
Related Instructional Objectives (SWBAT):Β <list standard numbers>
CCSS: nnn, RSIT: nnn, RLST: nnn, WS: nnn, WHSST: nnn, A-CED: nnn, ETS: nnnΒ <list standard numbers>
Main Standard:
Priority standards:
National Standards:
Reference Text Book - Basic College Mathematics with Early Integers 4th edition - Elayn Martin-Gay - University of New Orleans - Pearson
Reference Sites -Β
https://imgbin.com/png/ZJtzkYZZ/under-construction-png
Key: π° Slides / Audio π§ / π½οΈβΆοΈ Video/YouTube / π§βΆοΈπ½οΈ Audio/Video / β¨ Resources /Β πΌοΈ Tutorial / π Reading Activity / π Writing Activity / π π Reading/Writing / π Coding / π οΈ LAB Activity / π Quiz /Β π Review /Β βοΈ Mastery Check / βοΈ Sign Up /π Extra Credit / πΈοΈ Web Links / π©π½βππ§π½βππ§πΏβππ©βπ« Class / π΅οΈππ Certificate / ποΈ π Collecting Survey Data
/π§ Review / π¦Ύ Practice / πLevel Up /
ποΈπ¦π€π―Β π§
- π¦ Special Project -
Assignment Type: β Establishing (Minimum Standard) / βοΈ Developing (Digging Deeper) / π Aspiring (Putting It Together)
This is an β Establishing Assignment (Minimum Standard)Β - "Everyone Do" Assignment
This is an βοΈ Developing (Digging Deeper) - "Everyone Should Do, To Stretch" Assignment
This is an π Aspiring (Putting It Together)Β - "When you have done the β Establishing andβοΈ Developing" Assignment
π Formative Quiz - π Review
π Quiz -π Mastery Path
π Summative Quiz -βοΈ Skills Mastery Check
Quiz - verify that they are all listed as a "Formative", "Mastery Path", or "Summative"Β
π Formative Quiz - These are quizzes that the students can take a few times. I have them either set for unlimited times, or 3-5 times, where the final score is their average. The idea is that these Formative Quizzes are designed for students to learn and master a skill.Β while I want them to ger 100%, and when it's set to unlimited tries, the student should get 100% eventually.Β When the quiz is set to 3-5 tries with an average, then they should be prepared and should take the quiz seriously. I set the quiz to not show the right answer, but I do let them see their wrong answer.Β I also put the explanation of the right and wrong answer in the right and wrong answer prompt for each question.Β That way they can see why they got the answer wrong and learn from that experience.Β Β
8.1.0.3.2.4 - Python - Ch 3 - Functions - Quiz #2 -Built-In Functions - π Formative Quiz
π Quiz -π Mastery Path - These Mastery path quizzes are to be presented after the student has had a chance to do some labs and some Formative quizzes. Β The goal is to let students have 2 chances to take this quiz, and take the average of the 2 attempts.Β Based on the average, they will be presented with a Canvas Mastery Path, where they will have an option for take additional quiz and assignments to help with remediation.Β This will get them ready to take the Summative Quizzes.
8.1.0.3.3.1 -Β Python - Ch 3 - Functions - Mastery Quiz #1 - π Quiz -π Mastery Path
π Summative Quiz -βοΈ Skills Mastery Check - These Mastery path quizzes are to be presented after the student has had a chance to do some labs and some Formative quizzes. Β The goal is to let students have 2 chances to take this quiz, and take the average of the 2 attempts. That will be their final module/subject topic grade.
8.1.0.3.3.1 -Β Python - Ch 3 - Functions - Skills Mastery Check Quiz #1 - π Summative Quiz -βοΈ Skills Mastery Check