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

CATPOO 2021 — Internal Structure

NOTE: This is a place for me to jot my thoughts regarding what my next robot will do. Expect many stealth edits.

See CATPOO 2021 — A New Beginning for an overview of the whole project.

Way back when, I designed that I wanted to learn how to create a circuit board from scratch. It was fun and I learned a lot. Unfortunately, one of the things that I learned was it takes forever to build proper circuits. It also costs a lot. For someone like myself who’s learning, it’s best to simply use some permaproto style Raspberry Pi HATs. Using 20mm standoffs and doubling up some stacking headers gives me plenty of space.

While this isn’t very space efficient, it still would fit inside of 4″ cube which is small enough for my purposes.

Layer Overview

  1. Raspberry Pi
    1. Nothing special here
    2. Leaning towards using the 20mm standoffs to allow more air flow over the CPU
  2. Motors 1 and 2
  3. Motors 3 and 4
  4. Sensors
    1. Not sure if I’m going to go with a simple ADC chip, or an Arduino for handling the range finders
    2. Might want to add GPS or environment sensors for shits and giggles down the road.

CATPOO 2021 — What Does It Do?

NOTE: This is a place for me to jot my thoughts regarding what my next robot will do. Expect many stealth edits.

See CATPOO 2021 — A New Beginning for an overview of the whole project.

I remember when I first started playing with robotics, I was always asked what my goals were. I never had a good answer for that. Here’s my thoughts on a better answer.

True Goals

The ultimate goal is to learn enough to consider a change of career. My ultimate dream would be to create affordable robotics kits for kids to built their own robots. I remember how much DJGPP and other free software projects helped me when I was starting out. Wouldn’t it be awesome to allow the next generation access to open source technology? Then I feel good for helping kids, while those kids can one day go on to create something more amazing than I could. Everyone wins.

To accomplish my goal, I’ve got vaguely defined constraints. Whatever I create shouldn’t cost more than $500 to recreate. I want to keep the price low enough that any parent can afford to give their kid(s) the tools necessary to learn the fundamentals. With economy of scale, I should be able to get that down to $100 if my idea pans out.

Functionality Related Goals

  1. Must have a web based UI that works with any browser
  2. Must be able to see in the dark
  3. Must use omnidirectional wheels for a holonomic drive
  4. Power input must be flexible as possible
  5. Should be lit up like a Christmas Tree

Remote Control

  1. I’m a web developer, so the UI will definitely be web based
  2. I’ve enjoyed using Bootsrap for years, so that’s definitely going in there
  3. Video should take up as much of the view as possible
  4. Putting the controls on top of the video worked in the past

Vision

  1. It must be able to see a black cat in pitch black darkness
  2. I’ve had trouble with getting low latency and good frame rates in the past
  3. Resolution doesn’t need to be very high, but should be at least as good as DVD (480p)
  4. The illuminator I have works okay with the all the NoIR cameras I’ve bought

Holonomic Drive

  1. I’m vacillating between 3 and 4 wheels
    • No matter what, still have 4 total stepper drivers wired up.
  2. IR illuminator must be effective at least 3 meters away from the robot

Power

  1. Getting at the battery was always annoying in previous designs, so make it easy to swap out batteries
  2. Using a beefy SPDT switch to allow switching quickly between internal and external worked really well in the past
  3. Don’t worry about designing any advanced charging circuitry

Christmas Tree Aesthetics

  1. Case should be as clear as possible to allow as much light out as possible
    • Engraving designs into the plexiglass might be a fun idea
  2. The 5″ touchscreen should be used for displaying as much internal information as possible
  3. Use power regulators with displays showing voltage will be helpful
  4. Stepper drivers should have LEDs to indicate the following:
    • Direction
    • Steps
    • Power (if I’m allowing the stepper drivers to be disabled)
  5. Power LED for Raspberry Pi
  6. LED to show whether power is coming from the battery or external

CATPOO 2021 — Power Supply

Note: This post is a work-in-progress and will be updated as requirements are fully fleshed out.

See CATPOO 2021 — A New Beginning for an overview of the whole project.

It’s about time I ruminate on power issues I’ve had in the past. In previous iterations, I cut a lot of corners with the power. Melted wires and malfunctioning steppers were the main issues I remembered facing. This brain dump will be help to avoid all the power issues in this next, final holonomic robot.

Past Power Problems

  • Previous designs considered power supply as an afterthought
  • Running all stepper motors off a single power supply proved problematic
    • The amount of current passing through would often surpass what the power supply was capable of
    • Microstepping would fail or become unreliable due to voltage irregularities
    • Even regular steps would cause problems
  • If I needed 1A max for a load, then I’d only have 1A max available
    • Designing power circuitry like I worked for Apple was a bad idea, as all that does is lead to overheating
    • Sometimes wires would melt or components would release the magic smoke from within

What’s Worked in the Past

  • Using a beefy SPDT switch to allow powering the robot externally or from battery proved helpful
    • Keeping the external and internal power physically separated avoided a lot of potential issues
    • It was very simple to troubleshoot power input issues as things were very simple
  • The battery should be easy to access and replace
    • At minimum, it should be easy to recharge.
    • Physically replacing it easily is a nice to have, especially when I show up with multiple fully-charged batteries

Strategies and Mitigation Plans for the Future

  • Have one single 12v main power rail that everything else connects to
    • There exist high powered buck boost voltage regulators that have more than enough
    • Going overkill on the main rail will leave me with more power than I know what to do with
      • I don’t want to have to remove functionality again due to lack of current
      • This will allow me to scale the robot up to whatever size I would like
    • From the main 12v rail, I’ll use a series of buck converters to get the proper voltage(s) required
  • Build and be prepared to handle lots of current (12V * 5A = 60W)
    • Once I get good, I can drop the power requirements.
    • Until then, assume the following padded numbers:
      • 5V × 5A for Raspberry Pi and peripherals
      • 4 motors * 2 coils/motor * (2.7V * 1A) for the motors
      • 5V * 1A padding for feature creep
      • Total power at worst: (5V*5A) + 4 * (2*2.7V*1A) + (5V * 1A) = 52W
      • My best guess of average power would be more like 35W
    • On battery power, it’s looking like I’ll be discharging around 1 to 2C maximum. I can’t find power ratings for the batteries that I have, but it’s looking like a lot of comparable ones are 25C, 50C or even higher.
  • Dedicated power regulator for Raspberry Pi and peripherals
  • Dedicated power regulators for pairs of motors
    • There will likely be 4 steppers with omni wheels attached.
    • Ideally, I’d want a separate power supply for each stepper motor and driver combo, but two per regulator should be good enough.
      • It’s definitely better than before
      • Have the front left motor and the back right motor on one power rail, and the front right and back left on another
        • Theory: hopefully this will cause power fluctuations to balance out
  • Have the IR illuminator draw right off the main 12v rail
    • I’d like to add a way to enable or disable this, to reduce power usage when it’s not necessary
      • It’s also nice for comparing IR versus no-IR
    • A physical switch seems like the obvious MVP, yet I’d like the ability to turn it off via software

Notes

  • Having an LED on all power rails
    • I want to be able to diagnose common issues from across the room

Diagrams and Illustrations

Rough power flow diagram
Rough layout of the robot’s back panel

CATPOO 2021 — A New Beginning

Note: This post is a work-in-progress and will be updated as requirements are fully fleshed out.

Way back when I started playing around with robotics and electronics years ago, the most important thing to me was having a good name for my robotics projects. I came up with Cat Antagonizing Tactical Platform Of Oppression (or CATPOO for short). With the hardest part done, I remembered following the KISS principle. Within a week, I had a working remote controlled robot. It had a wireless access point with a web based UI with streaming video from the robot’s perspective. It just worked, and was compatible with every phone and laptop thrown at it.

However, aesthetically it was a mess. Ever since then, I’ve been running into situations where I’ve gone way into the weeds chasing a particular look without any concern for functionality. I’ve finally become fed up with spending tons of time creating robots that look great, but are difficult to work on. I’m tired of having to spend 45 minutes tearing it down to swap out of a single part, or check a single solder point.

We’re going way back to my original design: a cube with 4 wheels. Once I get everything working well, then and only then, will I begin to care about aesthetics again.

Continued Reading

I was originally going to have one long and lengthy post about my goals, but decided it’d be easier for me to break up into smaller chunks. I’ll be adding to the following list as I continue fleshing out the project.

  1. CATPOO 2021 — What Does It Do?
  2. CATPOO 2021 — Power Supply
  3. CATPOO 2021 — Internal Structure

Bye-bye, Creeper Bot

Sometime back in late 2018 and early 2019, I had gotten very near completing my beautiful glow-in-the-dark robot. Concurrent to that, I had begun venturing out in the dating world. I ended up getting married to the beautiful woman who I was dating at the time. Unfortunately, my robot doesn’t care about that.

All it remembers is that it’s been ignored and that I still haven’t finished it.

This must be addressed.

Therefore, I started working on it again a couple months ago. I now want to do another dramatic redesign.

Why? Was anything broken? Major design flaw?

No. Of course not.

What’s changed is that I now have a laser cutter and a bunch of plexiglass.

Personal Cloud Software Pain Points

For the last few weeks, I’ve been evaluating using ownCloud for building my own personal cloud. The install process is more time consuming than it is difficult. Now that I’ve got my server up and running well, I’ve been putting it through the paces more. I’d be lying if I said that I wasn’t hitting a bit of resistance.

I did have second thoughts early on that maybe I should’ve gone with Nextcloud. Before panicking, I decided to read up more on Nextcloud. The issues that were extant in those reviews of Nextcloud’s software were more or less the same deal as ownCloud, but with slightly different caveats.

Same shit, different day.

So I’m good. Absolute worst case, Nextcloud provides a migration path from ownCloud if the need arises. No need to backtrack or start from scratch just yet.

Moving on, I found that the apps for my mobile devices were not $0. I didn’t like that. I was reluctant to pay for any apps to sync mobile devices with my new server. I’ve been burned in the past enough times, and I’m an open software zealot. I then quickly shut up once I found out that I could install all the necessary software for free, if I was willing to spend a couple hours setting up an Android build environment. Spending less than $10 total once for precompiled and continuously updated apps was obviously a fair deal.

The only problem not addressed by the ownCloud app was contact syncing. For the best experience with both contact and calendar syncing, go straight to DAVx5. It’s also free if you want to put in the time. Don’t do that and instead donate a few money units to dev team. It solved the issues that plagued me. Syncing contact information while avoiding unnecessary duplicates is actually a difficult problem to solve, and I’m grateful it’s been solved. I still clearly remember the Palm Pilot days. I ended up with numerous duplicate contacts. I still find those duplicates or other syncing error artifacts from that time in my address book to this very day. That was over a decade and many, many devices ago.

Speaking of, I should probably start clearing out my contacts. There are people in there who I’ve not talked to in many years, and there’s quite a few who have passed away. To those who I no longer talk to, I have no problem deleting their contact information. To those who are no longer here, I simply can’t delete. I cannot erase any evidence that they were here, now that they’re aren’t any longer.

Anyhoo, thanks to ownCloud, my shared files and contacts are now synced up.

Cannibalizing Servers

In an era inundated with plagues of thin-skinned people with too much free time, I feel it necessary to first state the obvious: I’m referring to removing serviceable parts for use in the repair of other equipment of the same kind. People eating other people is likely a micro-aggression by the time you’ve read this. This has been your trigger warning. #futureproof

— The Editorial Staff

It’s Time

Near the beginning of the year, I realized it was time for an upgrade. I had things largely figured out requirements wise, and was planned on pulling the trigger on purchasing everything in a couple weeks. I had priced out a reasonable video card that would do what I needed (PNY – XLR8 Gaming Single Fan NVIDIA GeForce GTX 1650 SUPER) for around $220. At time of writing, it’s now going for over $550 on Amazon. I saw similar video cards skyrocket during that time to nearly $1,000 dollars.

Oh shit…

My upgrade plans were suddenly in peril.

Don’t Panic

Knowing that panic is best to be avoided, I immediately forgot that advice. I ended up spending the next month or so battling the sort of defeatist ruminations our society has been so thoroughly plagued of as of late. I knew that panic buying expensive video cards was to be avoided, yet I knew not what to do. I waited for inspiration. Time then passed slowly and fast at the same time.

I spent a lot of time lamenting the lost of whole chains of computer and electronic stores such as RadioShack, CompUSA and Circuit City. (Technically RadioShack still exists, but it’s not what it once was.) I still don’t understand how it happened. When did it become so hard to get hardware? My old server reliably running for 10 years left me blindsided by how much the world changed. Compared to 20 years ago, it’s beyond my ability to understand.

This lead me to realize that I was becoming a greybeard. I’ve been programming, building computers, and whatnot for more than 20 years. I even have a bunch of gray hairs now (which I jokingly tell my wife are her fault). I’m a greybeard and I should be better than this. I owe it to my family and my wife to do better. It’s time to go level up past Gandalf.

Around that time I stumbled upon Micro Center. It reminded me much of what proper stores were like. I looked through their catalogue seeing the same thing I’ve seen everywhere else: sold out video cards.

Greybeard Plotkai

That’s when my new greybeard status kicked in. I’m not a victim. There has to be a better way to look at this problem. Do they sell the computers with the components I need inside them? Are the motherboards in them still a standard size? Will this fit in my existing 4U server case?

As it turns out, yes they do, yes they are, and barely yes on that last one.

Hell, even Costco has desktop computers with NVIDIA 1650/1660s in them for reasonable prices. If a 1660 costs $700, that $900 barebones kit with a 1660 is looking mighty nice. There is no law against turning a gaming rig into a proper server. I was already going to need a new motherboard, RAM, CPU, and other things. Why not get 80% of the way there with 20% of the money? Find a good deal, add $100 of RAM, and BAM! You’ve got yourself a server.

It’d have been nice to think of this earlier. Hell, I watched Moneyball. I should’ve seen this coming.

Conclusion

And that, my friends, is how I was able to upgrade my server within budget.

In our next episode, I’ll explore more about where I’m going with cloud software now that I have the metal. It’s down to ownCloud and Nextcloud.

In possibly a future sidebar, I’ll explain how convincing your wife to spend a whole day in the car hunting for computer parts is easier than you might expect. Sell the trip as an opportunity to try out a new restaurant in a new city. Buy tickets to a local art museum. By the time you get to “and let’s stop by Micro Center for 15 minutes” she’ll already be sold.

Personal Cloud Requirements Gathering

To distract myself from excruciating pain while paining for a dental procedure, I figured I’d go over what an ideal end state for my personal cloud would look like. Let’s start by looking at what devices I’ll need to be worried about as head of IT in my household.

Devices to Support

DeviceOperating SystemStorage Space (GB)Notes
Pixel 2 XLAndroid64GBMost of this photos/videos taken w/ the camera app that I need off the phone
Old Samsung tabletAndroid32GB (estimate)Possibly going to be retired soon. Screen isn’t easy to read and it’s not fast enough to keep up with software bloat.
iPhone ?iOS128GB (estimate)Wife’s cat and flower photo collections must be treated with equal importance to financial records
iPadiOS256G (estimate)Used for audio books and researching supplies and materials for remodeling
Macbook AirMacOS256GB (estimate)Floater laptop that shouldn’t have much on it
Macbook ProMacOS512GB (estimate)Important information and video editing
Custom 4U serverLinux8TBThis will be the server handling the cloud. It is the one that needs to be greater than all the other devices attached. Can’t be larger than 8TB at the moment due to that costing too much to backup w/ current hardware.
Dell XPSLinux256GBFloater laptop for serious software engineers who also value battery life
System76 Serval WSLinux1TBUltimate badass laptop with a cooling system louder than jet engine with matching power
This table doesn’t include devices that don’t nee to be synced up with the cloud. All the Raspberry Pis don’t need complicated backup and syncing.

Observations

  1. All systems are *nix systems. That affects nothing, but does make me happy.
  2. I’ll need, at minimum, 6TB to handle everything as is. I’ll therefore want 8TB in the server for allow for growth.
    • Going above 8TB gets expensive, as single external drives larger than that are very expensive. Having two 8TB drives to rotate through is much more affordable.
    • I can always add another 4TB drive to the RAID for a total of 12TB down the road. I’ll have to reconsider my backup plans potentially.
    • This should keep me covered on space for a few years. Will definitely need to upgrade within 5 years, but no sooner than 2 years.
  3. This will create a lot of network traffic
    • I was considering splitting the home network into multiple isolated networks:
      • Private network for me and my wife
      • Guest Network for friends and family
      • IoT, Smart TVs, and other devices with histories of atrocious security
    • Doing this ahead of time would definitely be feature creep for the “build my own cloud” project.
    • Might just put the guests on the same network as the IoT, as neither are to be trusted.
    • I’ve got a Raspberry Pi or two laying around for building a custom router

Conclusion

My goal is to get this new system up and running before 2021Q2. However, hardware is becoming harder to get one’s hands on. That’s why I expect this to take some time. I’m also expecting my tax return won’t be arriving before beginning of March.

Long Awaited Server Upgrade

https://pixabay.com/photos/calculating-machine-calculator-370777/

An Upgrade Is In Order

My current server is running a Intel(R) Core(TM) i3-2100 CPU. Based on archeological evidence and carbon dating, experts estimate that it is around 10 years of age. It’s had minor upgrades over the years with a respectable 4 × 2TB drives setup in RAID5 for 6TB usable. However, it’s simply too long in the tooth. It’s been working flawlessly for so long, I seem to have taken it for granted.

I really only thought about it when I’d occasionally have to reboot it every couple months. Looking at it that way, I almost feel bad putting out such a long running workhorse to pasture.

End of the day, I should feel proud that I built a system that worked near flawlessly for a decade.

Mission accomplished. What’s the next mission?

Requirements

I’ve become a simple man when it comes to servers. All it takes me is half a dozen cores, heaps of memory, and terabytes of space to be happy. I’m wondering how much the hardware game has changed since I last went down this road. I’m hoping I’ll be left with the end result of a reliable workhorse for many years.

Off the top of head, here are requirements, typical workloads, and tasks the server will encounter:

  • Building the personal cloud that spawned this thread
  • Storing over 9,000 new photos and videos daily from my wife’s phone of our 8 month old cat.
  • Video stabilization and other processing of grainy VHS home movies
  • Secure storage of personal documents
  • 3D scanner processing
  • Minecraft server
  • Git repo to avoid relying on Github too much

Here’s what I’m thinking will be sufficient:

Parts List

Total: $1,000 estimated

Conclusion

If I can get 5 years out of this build, I’ll be happy. There’s a leap year in there. That’s a savings of $0.0003 per day. Cost of ownership should be around $0.55/day ($1,000 / (5 × 365 + 1)).

Virtual Homesteading

For a few years now, I’ve been gotten complacent and lazy due to Google’s services. Free space on someone else’s server was too tempting, regardless of privacy concerns. It’s time I do something about it by creating my personal cloud for my household. This is a big enough undertaking that I might as well write down my thoughts in this blog.

Requirements

  • Automatic syncing of photos from our mobile devices
    • Apps will need to be available for both iOS and Android
  • Easily securely share files with third parties
  • Works well with syncing large files
  • Zero external dependencies
  • Back up and restore procedure in place
    • Automatic syncing of all data to an offsite location
    • Offsite backup should be encrypted
    • Incremental backups to external hard drives

Known Unknowns

  • How to test the backup and restore procedure?
  • How to sync the backups to an external location?
    • Probably looking at a Raspberry Pi based solution with an 8TB external hard drive.
    • Looking at around $250 for both.

Evaluating Options

The above requirements hint at me needing two main pieces of software. I can’t only worry about the cloud software. If my server dies, I’ll need a rock solid plan for restoring from a backup.

It’s also been maybe 6 years since I’ve done a major upgrade to my server. At this point, I’m thinking of replacing everything except the case. I like my giant black rock sitting on the shelf, and it’s got plenty of space for loading up drives.

On cloud software front, I’m a bit torn between Nextcloud and ownCloud. I’m leaning towards ownCloud because the documentation seems a bit nicer. There aren’t really any other viable options for open source software that I’ve been able to find.

The backups remain a mystery to me. Up until now, I’ve been using a Raspberry Pi based computer and SyncThing to automate partial backups. That’s not going to work well. I also don’t want to have to use a GUI to backup. Currently I’m leaning towards using BorgBackup. It seems pretty feature rich.

Closing Thoughts

The general plan of attack will be:

  • Upgrade server hardware with bare install of OS (do not immediately start copying files back!)
  • Create backup and restore procedure, and test that it works
  • Install and configure ownCloud
  • Reload all the terabytes of old data into the new cloud
  • Set up my phone to sync with my new cloud to disentangle myself with Google as much as possible

Thinking each of those deserves its own post, so we’ll leave it there for now.