Skip to main content
Tim-Doerzbacher.comTim-Doerzbacher.com

CATPOO 2021 — It’s Built!

It’s Alive! (Again!)

I’m proud to report that my newest robot iteration has been built. Look at it in all its glory:

So far, all I’ve been able to verify that the basic system is working as intended. The LCD screen is working great. The power consumption is rather low at idle (assuming the IR illuminator isn’t triggered). The I2C bus is showing that the 4 channel ADC is working, as is the accelerometer. The camera is also working well.

Next Steps

Now that the basics are all verified as operational, it’s time to start testing things further.

Things Left To Test

  1. Test the 4 channel ADC circuit
  2. Test the accelerometer circuit
  3. Test the stepper motors

Things Left To Implement

In short, everything needs to be implemented. In no particular order, here’s what I have planned for the next few weekends:

  • Write proof of concept code to read in the values from the ADC
  • Simple movement test program to have the robot perform a predetermined routine to test out the wheels
    • The movements, if done properly, should cause the robot to return to its original location
    • Use some sort of cat and kata pun in the name. pookata? catkata? catkatapoo?
  • Create a console (i.e. ncurses) based application to expose the robots internal state in a top like fashion
    • This will mainly be a great way for me to ssh in and screen -r to see what’s going on inside the robot.
    • It doesn’t have to be pretty, but it should be at least look as nice as htop or glances.
    • Should show the current acceleration state of all the motors, ranges finder values, and temperature
  • UI/UX mockups and design
    • For the range finders, I want something not precise but intuitive to understand. Maybe fade in red on the edges of the screen? Front side is the top of the screen, and so forth? As the range is shorted, fade in a red hue like an injury indicator from Black Ops Zombies? Visually it might read as “not having space” equals “robot pain”. I’m ok with that. Hell, lean into it. Make the robot attempt to always maximize the distance between it and everything else.
    • A configuration page would be necessary
      • This would mostly be related to configuring network settings on the fly away from home.
    • What differences would there be between the UI on the back of the robot, and what you’d see in the browser?
      • Should disallow changing system or network settings over mobile
      • Could display CPU utilization and not on mobile? I’d be ok with having as much debugging shown in the mobile app actually… something like out of old school Terminator movie vision.
  • Actually implement the mobile interface
    • I’d like to use ReactJS with the interface, as I’d like the option to port it to a mobile app later
    • Should work well on desktop and mobile

End Goal

The initial version will focus on allowing easy remote control via any web browser that can connect to its built-in Wifi hotspot. The user interface should be simple and intuitive. Within 5 seconds of loading the website, my wife should be able to use it to chase the cats around in the dark.

Once I’ve gotten that far, the sky’s the limit from there. I could start learning about AI, and pursue making the robot autonomous. I could instead focus on making it as small and energy efficient as possible. What about making them as cheap as possible, so that I could have a swarm? Lastly, I could instead focus on making it able to navigate outside or in water.

In whatever path I choose, I’ll be able to reuse large amounts of code and object models. I’m looking forward to that.