Bad Ram, or Is It?

Good Morning from my Robotics Lab! This is Shadow_8472, and today I’m solving Derpy’s derp once and for all (I hope)! Let’s get started!

Background

There’s seemingly always been something off about Derpy, even before I dubbed it DerpyChips. First it was a cheap hard drive shorting out. Every so often, the system would throw a power kernel error. I fixed it inadvertently while switching to a solid state drive when I installed Linux.

More recently, we got some new RAM to replace the sticks I borrowed for another computer, but then the system developed occasional twitching fits. It took a while, but I identified one of its four 4gb RAM modules as having a number of bad sectors. The others passed the testing tool. The twitching improved, but not entirely.

Long-Haul Diagnostics

I started using Derpy a little more heavily a bit under a month ago, and the twitching went from Discord twitching by randomly restarting to Kerbal Space Program crashing at least once every couple hours, though only during loading screens and conveniently always shortly after a save or autosave.

Sometimes my game would catch and I could properly close out before it quit with a note about core dumped. If I was unlucky, the even the mouse would freeze for minutes on end. Rebooting didn’t help.

With problem frequency rising into the barely diagnosable range, I decided to run Derpy’s RAM through a less formal test. I temporarily moved the suspect sticks to my Manjaro workstation, isolating them from an unknown number of possible causes. Both computers were pretty dusty, so I took them outside and hit them with the canned air. To keep things fair, I only installed three out of four known good RAM sticks into Derpy and stored the fourth in a drawer.

A Test in Question

Both systems were usably stable right away. Derpy’s fan especially wasn’t panting nearly so hard without a giant dust mat blocking the heat sink. But what if that was the problem all along? Dust in the computer is the perfect unstory. It was early enough in the week I would have sought out another topic.

I spent an afternoon of perfect stability on Derpy, then focused my efforts on passively testing the RAM with my main computer. 99% stability. I had a few audio glitches, but for all I knew, they were always there and I was just noticing them because I was expecting trouble.

Over the course of the week, more problems started showing up. Not many, not often, but KSP did eventually lag hard a couple times, and Discord restarted, switching screens while it was at it. I even had the whole system go unresponsive, even when trying to switch to the “real” terminals outside the graphical environment. One time in a week of testing, I was forced to reboot.

Takeaway

I wasn’t as intense with the RAM as I would have liked, but all things considered, I’m around 95-98% sure Derpy’s replacement RAM is no good. I’ll be interested in seeing about switching it out under warranty this coming week.

To get an idea of how irreproducible this error is on command, after a couple big crashes, I finally had the idea to keep the terminal I’ve been running KSP from up on my second monitor. The plain loading screen is a buzz of activity as the terminal dutifully posts entries in the log file. I was hoping to see its activity during a bad crash, but it wasn’t to be.

Final Question

I’ve narrowed down the problem to the part and prescribed a solution, but I still don’t understand the why. My best guess is that it’s degraded somehow since the test or else it’s weaker under extra heat. Why does my RAM glitch out the way it does?

Setting Up WordPress… 4 Years Late

Good Morning from my Robotics Lab! This is Shadow_8472, and today I am going into the long-overdue topic of managing my site. Let’s get started.

The Silent Years

For years now, I’ve used this site as a place where I write about anything vaguely computer related I’ve been doing. I aim for 300-2000 words depending on how rambely I get. It keeps me thinking. Occasionally I need to teach myself a new skill. If a week is too slow, I’ll add filler I hope will be informative and/or jabber about plans for whatever the next phase entails.

But before today, my audience has been silent through a fault of my own. I can’t receive feedback unless the person offering it knows me on another platform. That’s a problem. I should have fixed it long ago, but even getting one-way posting online was draining, to say the least, and I got busy with other topics.

Registration

I started work this week by viewing the site’s back end while logged out. Nowhere did I see a way to make an account. Back in the admin panel, I found the first important click: Settings -> General -> Membership has a checkbox called “Anyone can register.” I enabled it.

Immediately, the login page had a new option to make an account, and I tried to do so with an e-mail I have for making alt accounts. Something in the site suspected me of being a bot.

Several hours of pushing myself to investigate later, I disabled a bunch of plugins and made my account. With the help of my good friend, Commander Stryker, I narrowed the problematic plugin down to MOJO Marketplace when it was the only candidate disabled.

Spam Protection Without Captcha

While solving the “suspected bot” problem, this week, I found an option in a forums plugin to use a Captcha service to protect against bad bots spamming my site. Captcha tests are often used to present bots with a difficult challenge humans can pass without much trouble.

Unfortunately, these tests are obnoxious to solve at best and needlessly discriminate against the disabled at worst. As computer science advances, this approach necessarily gets more difficult to keep ahead of automatic solving. These days, Google has a near monopoly on this technology, but with their track record of grossly abusing privacy, I’d rather limit their active role in this blog to directing traffic here as I am able.

The other option is a similar, but service called hCaptcha. All I have to say right now is that recognized their logo from when I recently solved one of their challenges. They are a topic worthy of a future post, though not an immediate priority.

More interesting to me is the idea of a honeypot. Instead of inconveniencing humans and bots alike in a prove-you-are-human style test, honeypots lay traps invisible to [well behaved] humans [who aren’t poking around in the HTML] while most bots will happily give themselves away by interacting with them. Again, this is a late development, so if I learn more, it will need to be covered in another post.

Takeaway

There’s a lot more to running a WordPress Blog well than I’ve been doing. I’m far from over.

Final Question

At long last, you should finally be able to respond: Do you even try to answer Final Questions?

Unsteam Games

Good Morning from my Robotics Lab! This is Shadow_8472, and today I am doing a brief followup to my work on moving Kerbal Space Program (KSP) between computers. Let’s get started!

Author’s Note

My experience is with Linux. I make no claims about how Steam handles games in Windows. Furthermore: this post is for educational purposes only. Don’t take advantage of DRM-free games by pirating them. Make an effort your money goes to the legitimate owners of a game when playing.

Steam

Like many computer gamers since 2003, I have a Steam account and I have a number of games through the platform. It’s a nice way to make sure you don’t lose physical copies, and it adds a number of achievements for completionists to strive for.

But that doesn’t mean I have to like getting ads stuffed up my face every time I already know what I want to play, nor do I need to like the feeling of being watched as I play. I like the feeling of achievements, but for some games they’re unironically tacked on decades after release (I’m looking at you, Sonic CD). Finally, there’s that overhead from the client itself. Other than achievements or tracking how much of my life I’ve spent in what games, there are very few obvious reasons anyone might want Steam running in the background if it isn’t strictly necessary.

Home Cloud Saving

Admittedly, Steam does provide a few reasonable features you can’t easily get while cutting them out (assuming the game can even be started). User created content can be added through the Steam workshop. Some games’ multiplayer modes were made specifically to go through Steam’s servers. Saves can be automatically synchronized from one computer to another.

That last one is a feature I’ve managed to replicate, or otherwise have well underway. For single player games I can run without Steam, I’ve been able to use rsync to quickly copy progress from one computer to another. Last time I talked about it, I discovered it’s safest to always include as much of the respective file paths for the directories being synced.

By default, Steam will put games in ~/.steam/steam/steamapps/common/, but any game that doesn’t care if Steam is running should be happy running out of anywhere in the file system – just keep in mind Steam won’t update what it can’t see. This time, however, I’ve upped it a little. I moved my copy of KSP to a directory I called ~/Games/UnsteamGames/ and added two more titles from my collection I wish to synchronize together: Starbound and Stardew Valley. I had to reflect the changes in GoldenOakLibry, the network storage, but I also wrote simple scripts with the synchronization commands embedded.

I also addressed Steam updates. I have my preferred daily driver where I’m installing all my games from. On that machine, I used a symbolic link for each game I’m relocating.

Rsync is a powerful tool. Perhaps my next improvement will involve a hidden file my script ignores.

Takeaway

Rsync wasn’t the kindest to Starbound. The process kept hanging, and I have no idea why – I just know it wasn’t because of large file sizes as my research suggested as it was having issues when all I told it to copy was a directory with MIDI-like files or low-resolution sprites stored as PNG’s.

Final Question

What other games might I isolate and re-home for ease of synchronization?

My First (High Pressure) Pneumatic Artificial Muscle

Good Morning from my Robotics Lab! This is Shadow_8472 and today, I am assembling and testing my first prototype artificial muscle. Note that this is not a tutorial, but a work in progress; I’ll be making more elaborate updates when I finish each phase of prototyping. Let’s get started!

Initial Construction

In case you missed my last post on McKibben artificial muscles, I’m using some surgical tubing with a in a braided ASA plastic sleeve as the main body of my muscle. Starting out, I’m using a bicycle pump for my air supply and some old, mostly cotton string for holding the ends together. We cannibalized some old garden drip line for structure in the inflation end, and a screw on the other end.

Assembly started with cutting around 12 inches each of tubing and sleeve. The sleeve unravels like crazy when being stretched, so I melted one end with a candle lighter. The mouth was nice and tight, but it was stuck contracted. I fed tubing in the other end melted that end open. I inserted the two inch length of drip line and screw into their respective ends and tied them off.

I drew this picture in GIMP for my father’s benefit before construction, but it highlights a “green part” between the actual muscle and the bicycle pump (gray triangle). Note this was drawn before I added the screw on the solid end and the blue parts are painter’s tape that lasted about as long as it took to try taping the muscle to a ball inflation tip for the pump.

First Actuations

There was no way my chosen string was holding at pressures required to inflate the muscle, so we moved to zip ties. We also redesigned the adapter to use rubber tubing wrapped in duct tape to resist inflation. It happened anyway when the rubber expanded lengthwise as well as radially. After extending the tape just a little farther, I started pumping as the hiss of gas escaping the system made it difficult to focus on the pump’s pressure gauge.

We ran a number of tests, and over about 10 inches of workable muscle, the whole thing contracted to about 8.5 inches and expanded from 3/8 inch to 1/2 inch diameter – about as thick as the casing would go according to tests later on.

Development continued after the pictured state. We had some irreconcilable leaks with the zip ties and switched to more expensive pipe clamps while we dreamed of ordering some rubber tubing with a thinner wall. The Green Part was replaced again with more plastic tubing probably intended for water, and accordingly leaky at its adapter. Only the very tip is still rubber tubing, and that’s only to create a seal someone has to hold closed while the system is under pressure.

Speaking of pressure, every improvement raised the maximum possible pressure before something failed or was otherwise too loud to tolerate. We made several milestones, but eventually maxed out the pump at 150 PSI, though after I sealed the leaky connector with some proper sealant tape, air stopped escaping until 80 PSI, but when it started, it was painfully high in pitch.

Takeaway

My finger pads HURT after assembling that thing. It could be working with the braided plastic or messing with the pipe clamps, but I don’t see many of my materials being final picks. The contraction ratio is lacking, the tube is high pressure, and if I’m going to be using a lower pressure anyway, I might as well go back to zip ties.

Final Question

During testing, I kept going to higher pressures because I was operating under the hypothesis that there was more contraction to be had. The calipers said otherwise; manually squishing the casing off the spool it came on gave about the same diameter. I identified my false impression as coming from the fact that the woven casing came flattened out, and my mind wasn’t translating diameter and half circumference properly. What hypotheses have you discarded while working with something?

A Self-Guided Rsync Lesson

Good Morning from my Robotics Lab! This is Shadow_8472, and today I am following up on last week’s topic and actually bouncing the game Kerbal Space Program (KSP) back and forth across a couple computers. Let’s get started!

Project Introduction

KSP is a rocket simulator. Rsync is an advanced copy tool. I don’t understand rsync well enough to use it to its full potential, but this week I’m answering three questions in order: 1. Is the project possible? 2. Is the project feasible? 3. Is the project optimizable?

The goal is a smooth transition from one computer to another. When I need to move, I just save/quit my game, move to the other computer, and start/continue playing. To do this, I’m copying them to a network share they both have mounted, as a third workstation would make for a messy network trying to move it around ad-hawk.

Project Possibility

The main goal here is to get my game running on a different computer, regardless of how ugly the process looks or how long it takes, and ugly it looked and long it took! It’s understandable though. First time moving everything will be from scratch, but after that some noticeable speed up should take place because it should only need to copy the changes between files.

Besides taking longer than I’d consider feasible, my game also crashed, locking up Derpy, a workstation I want to play on. The window dressing appeared, but I coldn’t move my mouse or bring up a TTY terminal with CTRL+ALT+<Function keys 1-6>. I had an existing SSH (Secure Shell) connection, and the top command told me KSP was trying to run, even though I kept trying to shut it down with kill, even with sudo. I wasn’t even given an error. I stumbled across using a -9 flag for kill -9. That worked, but I have yet to understand why. Presumably it’s a little more strongly worded way to stop a program.

My exploration an hour or so later was interrupted by an unexpected success. My game launched, I took a rocket to orbit, confirmed it had enough dv to complete its mission, and I saved and quit.

Is the project possible? YES!

Project Feasibility

The next step was to go back and forth a few times. In my previous step, I had difficulty finding my game ended up inside my existing game directory instead of syncing to it. I did the same thing again my first attempt trying to retrieve it from Derpy, and it took just as long as the first time.

My second attempt started with a successful synchronization from Derpy to the network share with the inclusion of the –delete flag in case a file is ever removed. I errered on the side of caution and made a copy of my KSP directory inside another directory I called KSPLand. Good thing I did. The way I set up rsync, the second phase of copying wiped out my backup and stuffed the game directly into KSPLand instead of KSPLand/Kerbal\ Space\ Program/. I’m attributing this to oversight to trailing slashes at the end of file paths. I would have said I just had a lack of caution, but at least I didn’t wipe out my other games!

Attempt 2.1 went much more smoothly. I compared the exact commands and eliminated the offending slash. I briefly got confused looking through my real game directory and saw one of those recursive copies. This back and forth is mentally exhausting, but it eventually went through.

Rsync Sandbox

At this point, I backed out and made a directory where I can practice rsync without it taking half an hour to reset. In it, I made two directories representing my two workstations. In each of those, I made a notKSP directory with files named after the numbers 1-10 as well as an “innocent” game directory I didn’t want messed with.I lined up a dozen possible variations controlling for my file path ending in path/notKSP is followed by nothing, a /, or /* as well as my destination’s path, path/, path/notKSP, and path/notKSP/. I made a chart by using the –dry run flag. About half of them appeared to work, but to my surprise, the actual runs didn’t match up.

All my source path/notKSP/* got the data over, but nothing was ever deleted. Also, trailing /’s on the destination directory didn’t affect my results. The frustrating part is that I had four commands (two if I ignore destination trailing /’s) give me exactly what I want, and they’re each a single / each away from an unsatisfactory command: rsync -avh –delete source/notKSP/ destination/ will add notKSP to destination and make sure it’s the same while rsync -avh –delete source/notKSP destination/ will make sure the final directory in destination/ contains notKSP and nothing else.

In my opinion, the safest form of using rsync is rsync -avh –delete source/notKSP/ destination/notKSP/ because if I mess it up and forget the trailing /, I end up with Russian nesting directories and have to fish a freshly created copy out of the directory it was supposed to update. Furthermore, tab to complete prefers to add those trailing / characters [unless an extended directory name is present] and I can specify an alternate directory name for the destination should I choose as I discovered while conducting another test in my rsync sandbox.

Project Feasibility Cont.

For how useful the –delete flag is for rsync, it oddly doesn’t have a single-character shortcut. Otherwise, I would have written about implementing it here. There exists a –del alias, but I’ll pass for now.

With a properly calibrated rsync command, I ran a dry-run to the network share from my tower to the network share. Where I previously had a wall of text detailing all game files being compared, I now only had a few files –many of which were deleting a test game I had purposely planted for later deletion– totaling to a mere 1.69 megabytes as opposed to the 3 gigabytes of the full game. Even over Wi-Fi, I was done in seconds.

Is the project feasible? YES!

Project Optimizeability

As long as the possibility remains that a single character can blow a hand-entered command, I won’t be comfortable. The plan from here is to curate a set of four commands and plant them in scripts so I don’t have to retype them each time. One thing is for sure: I’ll be keeping the container directories until I have my scripts working.

I’ll probably set each one up in a script and use the appropriate one when I need it. A more complex script might automatically pull any changes from the NAS when I start and push them when I’m done. Once feature creep sets in, I might as well add checks for if the share is down, or if I even need to sync at all. It might even be useful to add a hidden file next to the directory in the share to track who has the game open and error out if I try to open it twice. But then again, those are all dreams. I’d only go to that extent if/when I give the same treatment to my other entries in my offline/LAN compatible Steam library.

Is the project optimizable? The sky’s the limit, and I don’t have a rocket.

Takeaway

As I worked, I learned a bit more about the command line. For example, I discovered how much easier it is working with multiple terminals in the same window. I also learned that ls will let you peer into multiple directories at once. When a directory is deleted and a backup restored, the normally useless command cd . will update your terminal from trying to look at the deleted directory to the new one. I was able to work on my rsync commands in one terminal, view results in another, and use a third one to reset between trials. With a little working, I got my two accessory terminals down to a single line each with a little help from the && operator to run multiple commands at once.

Final Question

While working on the verification step, I was running out of time to post and declared victory a little prematurely. I had trouble with my rsync NAS to Derpy dry run looking like a full loadout. Something I did goofed the metadata. Have you ever declared victory early?

Package Loop

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am aiming to rig Kerbal Space Program (KSP) to run across two Linux computers. Let’s get Started!

Intended Target

KSP is one of those games I find myself coming back to every so often. In case you’ve survived the past decade without hearing about KSP, it’s a game where you design rockets using an assortment of parts and fly your kerbals on them to explore their solar system. There are no goals except the ones you set for yourself. With the final major update now released, I’m going to give it another go at an interplanetary game.

But it would sure be nice if I weren’t tied to a single computer while playing. Steam offers a cloud save option, but I’d rather not be needlessly broadcasting my play time for a single-player or Local Area Network (LAN) experience. I picked up a little shell scripting for auto clicking in another game, so I figured I’d stretch the skill a little farther. For this project, I will be using Derpy Chips and my daily driver without a fancy name.

KSP updated nicely on my tower, but when I went to install the game on Derpy, Steam was nowhere to be found aside from a broken icon and a couple other Steam games I might try pulling this trick with in the future. My system was bugging me to update, so I went sudo aptitude update and sudo aptitude upgrade. It didn’t update correctly.

Running in Circles

I spent around three days trying different combinations I knew. Both Aptitude and Apt-get were stumped. The errors recommended I try running some more aggressive commands to fix installs, but I kept ending back at the same broken state.

Taking a closer look at the errors themselves, it appeared a whole host of locale packages were to be replaced with one inclusive one. Each and every one of them, as well as others appeared to reference some variant of libc6.

Not good.

Libc6 is a C language library. C is important as one of the first programming languages with a little abstraction for easier human readability while still being close enough to the hardware for amazing optimizations. You take out LibC, things start breaking fast.

I tried putting the upgrade off some more, but my package manager wasn’t having any of it. It insisted I fix the problem before installing or removing anything.

All this time, I was reaching out to the Engineer Man Discord. I got a few links on stuff to do, like a number of commands to do in sequence in case a particular log was getting in the way, but it always came back to my Libc6 version being wrong.

Progress and Repair

I of course was looking stuff up on my own, and I managed to find Libc6 was “half-installed.” My best guess is that a month or two ago, I had a partial upgrade. I didn’t think much of it at the time because I wasn’t relegated to an Xorg forsaken command line like all my other major system meltdowns normally worthy of a repair shop visit.

I made some progress when I used dpkg to uninstall a package I was otherwise interested in removing from the system anyway. According to localhost, the Discord user who solved my snafu (special thanks), I was caught in a dependency loop. Basically, when apt-get is either installing or trying to fix an install of package A , it wants to see package B or something like it before adding it to the list of satisfied packages, but if package B wants to see A or similar before it’s happy, there’s trouble. My trouble was that in order to fix the AB circle with apt-get or aptitude, I needed to first fix the AB cycle preventing me from solving it. Dpkg is too dumb to care about package dependencies, so it will happily ignore any logic bombs you’re setting (or defusing) for yourself.

Takeaway

I don’t understand the fix, sadly. I am still thankful Derpy is running again. I went ahead and installed KSP there, but the game file structure is so complicated, I’m just going to be copying the whole thing over to GoldenOakLibry, the network storage, using rsync. After going back and forth a few times to make sure everything is working as expected, I will write a set of scripts for further automation.

I will follow up if anything interesting happens on the implementation proper.

Final Question

Have you ever fudged a personal cloud?

Anatomy of the McKibben Artificial Muscle

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am ordering materials for the artificial muscle I’m going to be working with for a while. Let’s get started!

The McKibben Artificial Muscle

In my research this week, I learned the pneumatic muscle I’ve chosen to start prototyping with is in fact called a McKibben Muscle. An inner sleeve is typically made out of rubber. A fluid –usually air– is pumped in through an endcap. The sleeve expands radially, a woven outer casing translates that outwards expansion to a lengthwise contraction.

I’ve seen several tutorials on how to make these muscles online. The greatest design freedom is in the endcaps. They can be as simple as a clamp or complex enough to need a 3D printer. Their functions are to hold the inner sleeve and outer casing together, seal them off while still allowing air in and out within the greater pneumatic system, and provide mounting points to work on.

Materials Shopping

The most important part is the outer casing. I will be using cable management sleeving like what protects the cords coming off the power supply in my main computer tower. Squish them, and they expand: same principle in reverse of the muscle. I remember at least a couple sources saying to use nylon, but a little shopping yielded a selection of tubes made from polyethylene terephthalate (PET).

Tubing is almost as important as the casing. As long as it keeps air inside the muscle, it should work for all I know right now. I talked about it with my father while walking the dogs, and we figure longer-term durability will be best served by a rubber tube a bit thicker than a balloon, but not so thick it’s near difficult to inflate.

We’ve talked about an air source. Compressors are loud and bulky. Lower end models lack a tank for storing pressure, which I will need for anything resembling a decent response time. We also briefly considered getting a SCUBA tank, but those run more than a compressor and most certainly cost to refill. Whichever option we end up buying, this will be the most expensive part.

We’ve only baerly started brainstorming endcaps. My father proposed using a nut and a pipe clamp for one end, but I’m having trouble imagining how that will look while trying to attach a mount point. Perhaps some PVC piping will be involved after a trip to a hardware store. I can have a T pipe with a plug for a mount point across from the muscle and an adapter to the air supply coming off the tail.

Takeaway

The main consideration for buying parts at my stage is matching size. It won’t do to have an inner tube that barely fits in the expanded profile of the sleeve.

As noted above, it would seem everyone showing off their air-powered muscles has a slightly different design depending on his or her available tools. I don’t have access to a machine shop, so I won’t be modifying any metal parts. Neither is my 3D printer working right now: printed parts will need to wait.

I’m excited to start testing.

Final Question

What variables do you expect will affect the quality of my McKibben muscle design?

Removing Backgrounds With GIMP

Good Morning from my Robotics Lab! This is Shadow_8472, and today I am editing pictures for my church’s photo directory. Let’s get started!

My Background

I first learned the basics of photo manipulation in high school using Photoshop. Pictures can be split apart, remixed with other pictures or original (hand drawn) elements with a wide variety of tools, and sent back out for use elsewhere. The whole operation is organized in a series of layers with their won operations.

Photoshop is not a bad program, but ever since Adobe moved their product to a subscription model, service has have improved for people who use their products consistantly. But for people like me who only need it once every few years and at a moment’s notice, monthly or yearly payments are a terrible investment. I own an old copy of Photoshop, but even then the liscence is a pain to move from computer to computer — and if memory serves, it’I’m limited to the total number of computers it can ever rest on.

GIMP (GNU Image Manipulation Program) is a comparable, free and open source alternative. And in true Linux fashion, it focuses on a small core feature set to serve the vast majority of users’ needs while specialized functionality can be added with extensions. Contrast that with Photoshop loading every tool imaginable for everyone who won’t use but a quarter of them at most. In short: Photoshop has more polish, but GIMP is easier on system resources.

Selecting and Removing a Background

My church produces a photo directory every few years. Families grow, and pictures need updating. I was given a number of pictures and was expected to remove their backgrounds or else turn them white. Photoshop’s tool of choice would have been the quick select tool, but GIMP won’t have a perfect counterpart for this simple tool until GIMP 3.0. Instead, I taught myself the foreground select tool, which I would describe as resistant to learning by trial and error.

The foreground select tool has multiple phases. In GIMP 2.10 specifically, you start with a selection loop, overestimating your subject. You can use line segments or hand drawn boarders, whichever you deem most reasonable at the time. Endpoints are freely adjustable once you’ve closed the loop.

Hitting Enter will put you in phase 2. Here, the whole picture takes on a blue tint (The color is adjustable, but I didn’t learn how). The goal here is to paint in your clear foreground, heavily tinted background, and a lightly tinted buffer between them called “unknown” or “unknown pixels.” Tool options let you switch between what zone you’re painting.

Here, more than anywhere else, it’s particularly picky about keeping on task. I lost about two hours total because I did something just a little too unrelated and the foreground select tool sent me back to phase 1 with no way to undo. It is best to save other tasks in the workflow for later, like adding an alpha (transparency color) channel or duplicating/hiding the original picture layer for quick reference.

Phase 3 will “[calculate] the alpha value of unknown pixels” referring to your boarder zone. It provides a preview of exactly what you’re selecting and lets you make further adjustments, but it will recalculate everything each paintbrush stroke you make. I recommend finding the small dialogue box that lets you disable the preview, effectively reverting to the more economical phase 2. By going back and forth between these two phases, you can tell where the algorithm understands your selection and where it needs more help. Hitting one enter while in phase 3 will finalize your selection.

Training Family

One of the more rewarding parts of this experience was teaching my father this tool, though there were unique challenges. At one point, he was having frustrations getting the tool to cooperate. I had worked with this tool using two or three computers, but his description of what was happening sounded alien to my experiences.

I took a look at his workflow, and GIMP was skipping straight from what I’m calling phase 1 to phase 3, forcing him to use long strokes or face tons of extra recalculation time. Long story short, while I was trying to make his tool icons larger, I found he was on GIMP 2.8, the latest available in the Linux Mint repositories. The GIMP download page directed me to a GIMP 2.10 flatpack installer. The system still prefers GIMP 2.8 when unspecified, but he figured out how to proceed, so that’s a tech support topic for another day.

Color to Black and White

Later on, the software for the directory was making some pictures way too dark. Photoshop has a layer filter for this exact use case with six sliders to adjust different color ranges. GIMP doesn’t include any layer filters, but I was able to make a crude approximation of this tool. Just know there may be a better way to do this and I don’t know it — plugin or otherwise.

To make the perfect black and white version of a color picture, I would start by adding a white background and merging layers if necessary. Next, I menued over to an option to decompose the color channels to a new document. With each layer in grayscale, I added another white background and used Color to Alpha on the red, green, and blue color channel layers. I then adjusted the opacity of each layer until I had a result I was happy with.

Each picture was its own challenge. Most times, I would have one layer carrying most of the data while reducing the other two dramatically. Too little color data, and the picture would fade. Too much, and it would go dark. I targeted a mix where the picture would pop and my eye would relax a little while looking at it.

Takeaway

Both GIMP and Photoshop are wonderful pieces of software in their own rights. I’ve had a class on Photoshop, so of course I’m going to find it easier to navigate that program, even if it’s been years. Despite my slim requirements of advanced photo editing, GIMP’s slim feature set slimmed out a feature or two I miss.

Final Question

Have you taught yourself both Photoshop and GIMP? Which is harder to learn?

The Economy of Scale in Robotics

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am following up on last week’s post, covering my brief corrispondance with Artimus Robotics. Let’s get started!

I first approached Artimus through their site’s Contact Us page [1], where I provided some details about my project – a quadrupedal robot system aimed at hobbyists.

Sticker Shock

The next day, I received an email from Andrew Morton representing Artimus. “Our actuators start at $2,995 and it is another $1,995 for the rest of the kit (kit total starts at $4,990) [2].” He then directed me to the Application Assistant where I could provide more details about my application.

Ouch. I thought HASEL actuators were supposed to be made from relatively low-cost materials. But yeah, I understand: they have the research to pay for, they’re making everything to order, and it’s going to be more durable than something I assemble at home; and that’s just the costs I know about.

Lower Speccs

HASEL actuators reportedly compare relatively well to human skeletal muscle on several metrics [3]. I don’t need that level of performance. I’m also looking at potentially several dozen tiny muscles that only need a few pounds of pulling force. While it would be nice to see my robot galloping, jumping, and dancing, I’ll settle for standing up and walking around obsticles. Getting up and down stairs will be a luxury to strive for.

In all reality, I won’t need my eventual full strength actuators (I’m just going to call them muscles or artificial muscles for the remainder of this post) the moment I have my first fully assembled prototype – certanly not until I have the kinematics worked out. On the other hand, it’s not a bad idea to buy what you’ll need near the end with the idea that you’re not blowing money on as much intermediary equipment.

I went ahead and went through the Application Assistant. The form asked several important questions. What motion does my proposed actuator make? How much, hard, and fast does it move? How long should it last? What kind of space will it be installed in? How presicely controlled does it need to be? Will it need to be self-sensing? What are the most important characteristics you’re controlling for [1]? I answered as best I could, but I found myself leaving the form mostly blank or full of “TBD.”

I came to the last page where it asks for an overall description. I will also take this moment to note that I did not retain a copy of my exact wording, and none was ever echoed back to me. (If there’s one complaint I have with my experience, that would be it). I found myself weaving in most of the information I had put in different note fields, so I compiled it here and tidyed up on the other pages. I also expressed my concern at the up front cost, asking if they offered something like a junior developer’s kit for small scale projects.

Important Questions Without Answers

Hi [Shadow],

Thank you for providing the application details. Do you have a force or stroke specification for the actuators? These are the primary specs used to size an actuator. No problem if you don't have those yet as you're welcome to purchase a standard actuator development kit for preliminary testing to better understand the technology and your needs. I think that is the best path given the complexity of your project. 

We don't have any lower-budget actuators, just our standard actuators that start at $2995 or $4990 for the development kit. Please let me know if you would like a formal quote.

Thank you,

Andrew Morton [1]

At this point, I was coming to terms with the realization that Artimus will be out of my price range until I’m much deeper into prototyping. Even then, I may have a tough time keeping my unnofficial $5,000 goal unless the price comes down.

My reply ballparked my figures: a 20 inch robot, muscles ranging 1-4 inches long, 5-10 pounds of pulling force each, and the whole unit anywhere between 5-20 pounds [4]. Total guesswork on my part. But the focus was more on how my pockets weren’t that deep. I thanked Andrew for his time.

I still hope to work with Artimus in the future, even if it’s for my scaled up version.

Andrew got back to me in a third and final email, probably saving face as much as I was. As I suspected, they’re oriented around industrial clients right now, and smaller clients will be served well once economy of scale kicks in [1].

Takeaway

Going forward, it looks like homemade muscles will dominate my development process until I’m ready for something professionally assembled; my first prototypes may very well end up being powered by pneumatics. They won’t be untethered, but at least I can find the figures I need and get back in touch with Artimus when I’m ready.

Final Question

What artificial muscle technology would you recommend as an analogue for HASEL?

Works Cited

[1] Artimus Robotics. Accessed: June 29, 2021. Available: https://www.artimusrobotics.com.

[2] A. Morton. “Artimus Robotics Actuators” Personal emails (June 30-July 2, 2021).

[3] P. Rothemund, N. Kellaris, S. Mitchell, E. Acome, and C. Keplinger “HASEL Artificial Muscles for a New Generation of Lifelike Robots—Recent Progress and Future Opportunities” Nov. 2020 Advanced Materials vol. 33, issue 19, May 13, 2021 Available: https://onlinelibrary.wiley.com/doi/10.1002/adma.202003375. [Accessed: June 6, 2021]

[4] S. 8472. “Re: Artimus Robotics Actuators” Personal email (July 1, 2021)

Contacting an Author

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am writing in to the authors of the paper on HASEL artificial muscles (hereby referred to as the “HASEL paper” in this post)[1] I covered recently. Let’s get started!

How to Present Myself?

The HASEL paper was dense. I probably understood around 80-90% of it if I’m being generous. It’s an exciting, new technology, but I’m left with questions – questions that might send me looking elsewhere for parts if things don’t work out. I’m writing in.

But how do I present myself? I’m not representing some big company with a finished design; I’m a computer blogger with a dream at best and a wannabe entrepreneur at worst. I have a negligible following, I’ve never bothered to make sure my comments section works, and the default potted cactus theme from 2017 is still staring anyone down who visits.

At the same time, I’m more serious than a random Joe trying to look a little deeper into a novel idea before moving on. I dare say I’m more serious than the average hobbyist looking for a challenging project because I’m already thinking past the “it’s done, that was fun” stage. I want to see my robot out in the world, helping people.

The Letter

To the authors of HASEL Artificial Muscles for a New Generation of Lifelike Robots—Recent Progress and Future Opportunities or whomever it may concern:

I am a computer blogger with three and a half years experience working with Linux. I am presently conceptualizing an untethered robotic system primarily aimed at adept to expert hobbyists. I’ve read your paper, and I believe HASEL actuators show enough promise to warrant serious consideration for my project.

My goal for a version 1.0 is to produce an 18-20 inch tall quadrupedal social robot that doesn’t reach out to the Internet for its basic functions, like speech. By open sourcing the design, users can more easily service their robots and customize them to add character. Adventurous users could assemble their own units from kits containing pre-made artificial muscles, custom circuit boards, and –optionally– 3D printed bones or other parts they can otherwise manufacture at home.

If successful, I dream of the platform being upscaled as large as a miniature horse and serving in a similar capacity to service animals for people with disabilities. If the price can be kept in check, it may even be competitive against the cost of training a new companion animal every number of years. Where an animal might carry a general information card, a robot with an onboard conversation engine could communicate pertinent information in the case of a personal crisis: “My handler is fine. Please leave him alone until he sits up,” “Help! My handler requires XYZ assistance, but is unable to speak.”

A strong point of HASEL actuators I was drawn towards was the possibility of rapid prototyping techniques, but a notable part of the draw vanishes if I cannot prototype shell shapes out of my home lab – even if I expect to need professionally manufactured muscles as I move out of early testing and eventually into release/production. Do you have or plan to make any instructional material on how to develop a schematic which Artimus Robotics can manufacture?

My biggest concern is the operational voltage reported in the paper. Some strategies were proposed to mitigate risk, but are recent developments enough to lower the voltage for a product as described above? If not, do you expect the next 5-10 years will bring sufficient progress?

Shadow_8472
letsbuildroboticswithshadow8472.com

As of writing, I have not sent this letter in e-mail form or otherwise. Only when I sat down to start my write up did I think to instead contact Artimus Robotics (I just realized it’s spelled different than the Greek goddess so no help from spell check). Their site [2] even has a contact page I only laid eyes on last minute as I went to dig up an e-mail address I remember seeing in the HASEL paper.

Takeaway

While attending university, I tried contacting the man behind another exciting robotics technology for a research paper. No response. I don’t want a repeat, and they’ve presented a better method to facilitate first contact. It’s just the information in my now open letter will need to be spread out for the different format. I’ll do a follow up soon if things work out.

Final Question

Have you ever tried writing in to a company?

Works Cited/Mentioned

[1] P. Rothemund, N. Kellaris, S. Mitchell, E. Acome, and C. Keplinger “HASEL Artificial Muscles for a New Generation of Lifelike Robots—Recent Progress and Future Opportunities” Nov. 2020 Advanced Materials vol. 33, issue 19, May 13, 2021 Available: https://onlinelibrary.wiley.com/doi/10.1002/adma.202003375. [Accessed: June 6, 2021]

[2] Artimus Robotics. Accessed: June 28, 2021. Available: https://www.artimusrobotics.com.