Programming a Pi to Deter Cats: Part 2.01 (Robot Ethics Monologue)

Good Morning from my Robotics Lab! This is Shadow_8472, and I don’t feel like I have much progress this week. Let’s get Started!

I continued with the tutorial I started last week, and kept running into walls. I wanted a Hello World program up and running to show for this week’s post, but that simply isn’t happening unless I don’t generate enough text and brute force it within the next couple hours.

I suppose I could try sorting out my feelings about robot cruelty instead.

Several years ago, I did a paper about future mistreatment of robots. The gist was basically since animal abuse is strongly tied to human abuse, and the brain handles some robots more like people than even animals, there should be some form of legal protection for lifelike robots by the time they come into common use. Robots themselves might not need the protection, but people around would-be robot users would benefit from fewer abusers.

On the other hand, now that I know a little more about the prototyping process, I now know that a little more care would need to go into defining “abuse” lest the industry suffer.

I recently listened to a story where one of the characters was discovered to be a robot after a set of shelves fell on and damaged a limb. When her older sister questioned their parents, they said they found her in a dumpster, and didn’t show any sign of knowing she was artificial.

In the above story, there could be any number of reasons a lifelike robot could end up in a dumpster. She could have ended up there as an abandoned prototype, or even for having anomalous code that produced true emotions in a line of worker robots and someone smuggled her out instead of secretly destroying or reprogramming her. Or, she simply could have outlived her usefulness to her previous owner and they wiped her memory as they abandoned her.

In pretty much any case, under today’s laws, robots are treated like stuff, though social pressure has forced robotics company Boston Dynamics to stop showing footage of debugging their robots’ balance programs.

Where then, should the line be drawn, if it should even be drawn? The strongest opposing argument would be for the people who could stop at abusing robots so they don’t go on to people and buy legal victims who can easily have the memory erased. And without going off on a long sting of research, I don’t think I could answer which way would lead to fewer living victims.

For me, if asked to draw the line right now, I’d go easy on “abuse” cases performed in a professional context, as well as robots not designed or modified to relate as an artificial person. Digital assistants are a bit fuzzy here. They are often bound as part of modern operating systems, though I try to limit their scope for privacy concerns, thereby “neglecting” them.

Final Question: Should there be any laws against mistreatment of robots, and if so, how would you weave such a law so it stops the potentially harmful stuff while permitting ethical ore even necessary forms of “abuse”?

Programming a Pi to Deter Cats: Part 2

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am moving along towards a feline safety program for my Raspberry Pi. Let’s get started!

For starters, I was even having doubts if my Pi was even powerful enough for computer vision applications. A quick search gives plenty of harry tutorials on how to install it. I’m following one here: LINK. I’m on the Raspberry Pi 3B+, and word has it the Pi 2 was pioneering the field for its kin.

I also watched some tutorials to get an idea of how OpenCV works, and I think it should track the cabinets and counter. If it tracks something moving on the counter and there is no occlusion (nothing is blocking) of the cabinets, register a hit. On a hit, save a picture for future evaluation, and sound the alarm to get the cat off the counter if it’s a strong enough hit.

I started installing OpenCV, but I ran into some issues. First of all, I am very glad I went it to that workshop I’ve mentioned before, because the tutorial just gives me wall of text. It helps to have someone knowledgeable to take a look at things when they stop working. It also would have helped if I had seen the troubleshooting section before I went and searched for one particular error I came across and ended up on another tutorial for the same thing.

Conditions were challenging. the mouse was crazy sensitive, and if I didn’t select and copy with the mouse, I ran the risk of typos in the keyboard. In the end, I believe I got a virtual box for Python 3 to run computer vision, but I ran out of time there.

At the beginning of my post, I mentioned feline safety. It turns out, my father spotted him walking on the stove top, and I really don’t want him getting burned, let alone the health risk.

Final Question: Have you ever used automated deterrents on animals?

When Not to Fully Backup a Device

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I was going to do an image of my phone without using Root and voiding the warranty, but things have changed, and I want to go into why. Let’s get started!

Modern Smartphones are essentially pocket computers powerful enough to run a program pretending to be a state-of-the-art desktop from around 15-20 years ago. It used to be you had full access to everything when you tethered a device to a Desktop. I used that once to backup my first ever tablet and restore it after some work. Much to the annoyance of more than a few power users, around 7-10 years ago, it became standard practice to lock end-users out of the admin level actions under pain of voiding the warranty or even breaking the law, depending on the device and year.

I sort of understand the reasoning, but I wouldn’t mind a future where I cannot have warranty work done when anything I’ve ever done on the software side of would logically have had no affect on the intended work: for example, if I crack a screen (I tend to end up with the no-ask warranty policy), they would be well within their rights to take it in, plug in their diagnostic equipment, and leisurely return my phone if it tells them it’s ever been rooted.

I’ve had my Galaxy S7 Edge for a while now, and shortly after I got it, it developed a narrow, pink stripe down the right side of the screen. From my experiences and research back then, between a third and half of similar phones have this defect. As I understand it, the warranty was written in a way that encouraged you to keep the phone for a while before doing anything, so it’s been a couple years. This week, I decided I had had enough.

As a side note, since I’ve gotten my tablet, I haven’t been playing games on my phone as much. The one I’m still playing, though, recently got an update, where they started up what look like weekly events with grand prizes if you complete enough challenges. The first event, I played that event a lot. I put more time than I think was reasonable, and I still only got half way up the progressively longer ranks, just short of most of the prizes that are actually worth it. Of course, I could always spend the special currency linked to real money, but that trickles in way too slowly for normal gameplay, and I have zero cash for f2p games, lest I open Pandora’s box. In short, I lost interest because I felt cheated by a disguised pay to win system.

A couple weeks ago, that game would have been enough to give me the drive to make an image of my phone. According to my research, it would have taken a Desktop debugger and some other low-level commands, but there does not seem to exist a currently maintained GUI for what I wanted to do. Now? Now I’ll be happy just grabbing what I can and abandoning my game files hidden behind a wall of admin access.

Final Question: What laws about technology would you change if you had the opportunity?

Programming a Pi to Deter Cats: Part 1

Good Morning from my Robotics Lab! This is Shadow_8472, and today, and likely for the next couple weeks, I am studying up on how computer vision software works so I can get started on the software to convey a message to my feline friend about venturing in places he isn’t welcome. Let’s get Started!

I decided a long time ago that I wanted to explore the free and open source option OpenCV for this project. From what I can tell, I will need to play around with OpenCV on my desktop first to get a feel of how to use it.

As of the time of writing, I believe my workflow will start with getting OpenCV onto a Linux desktop. After I’m comfortable with how it works, I can try running it on the Pi. Depending on how well the Pi takes it, I will develop the actual program on either my PacMan Ghost case, Blinkie Pie, or my Ubuntu server tower, Derpy Chips. A period of testing will involve Blinkie watching the forbidden area and logging suspicious activity: basically anything that moves, and narrow that down to naughty cat behavior. While that’s happening, I need to develop an audio turret.

My mother actually found a dog training device that emits high frequencies, and the cats aren’t too fond of it either. I’ve already tried taking it apart, and it’s so cheap, getting into the case for tinkering will mean a new case. My goal for this phase is to get the Blinkie to turn the nasty sounds on from a remote desktop.

Once I have my cat identification program working reliably, I can connect it to the frequency generator and set it loose. For the first few days and weeks, I’ll want to monitor it and evaluate its results by looking at pictures from suspect incidents. I’m looking forward to obedient cats.

Final Question: Have you worked with Neural Nets on Computer Vision problems before?

Operation: Relocate Desktop

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am more than a tidbit ticked at Windows’ built in remote desktop. Let’s get started!

I’d like to start by saying that Windows Remote Desktop isn’t deserving of a 100% scathing review. It has its purpose. I have concluded it was designed with the tech-savvy Joe who is remoting into his work computer from home or wherever else. As long as you are just surfing the web or using office-type programs, you should be fine.

But as soon as I tried launching Minecraft (I did not test with any other games), the launcher spat out a warning. For context, Minecraft 1.14 was recently released, and I believed they had finally stopped supporting the old launcher and were forcing people to update. The new launcher also crashed the game while trying to launch it, so I spent a day looking into it and getting discouraged over not finding much of anything. I stopped short of updating my video card drivers manually without supervision.

My father finally got the drivers updating, computer glitched, and after several failed attempts, I eventually hooked a monitor back up to it. I was pretty mad when Minecraft launched right away. I pieced together from a few places that 1: Windows Remote Desktop doesn’t use the host’s graphics card like I thought; it loads a basic graphics driver that runs on the CPU. And 2: This graphics driver doesn’t support OpenGL, a library Minecraft needs to run.

Sister suggested moving the whole tower during bedtime worship. I really wanted to fix the solution I was already working on, but it would have been more expensive in terms of time, hassle, and frustration.

Windows Remote Desktop is not a bad piece of software. It was just designed with different goals in mind than I was after.

Final Question: Have you ever had a sure fire project get canceled after it was all done and set up?

Operation: Remote Desktop

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am setting my main desktop up so I can use its full power from my laptop. Let’s get started!

While I have remoted into a computer before, this time, I have a deadline for personal reasons. I needed a stable setup that could withstand a reboot or update with minimal intervention. Since the target computer is running Windows 10 Pro, a built-in tool called Remote Desktop Connection looked like the best choice. Oh, I was in for an baaaaad time setting it up.

Things seemed like they were going almost too well at first. For one thing, it looked like the two computers had already played like this in their past, the laptop remembered the name and retained an old password for my specific tower. One problem: Where was the tower?

I must have spent the better part of a day churning over web pages looking for why my laptop couldn’t see my desktop. At one point, it I was convinced the only way to remote in was if you were already at the remote computer. It turns out, (And I’m not fully sure this is how it is, but I’m pretty sure.) the computers behind the router are seemingly not immediately part of a network. Either that or they were both treating it like a public network. My father and I worked on it for about half an hour, while I spent quite a bit of that time telling him what I tried and didn’t work.

We eventually got the two computers to see each other, but things were still not playing nicely together. We ended up checking out the firewall settings based on some of my research earlier in the day. We started flipping switches in Norton’s firewall settings until something worked. After that, we reactivated as much as possible, narrowing it down to the “Norton Smart Firewall” and I even got into some more finely tuned settings to where the smart firewall would let in remote control and, but leave on everything else. Settings (Upper right) > Firewall > General Settings > Smart Firewall > Public Network Exceptions. I enabled “Network Discovery” and “Remote Desktop Connection.”

Sure, at one point, my father had done something to where my laptop could try signing in, and we went down the wrong solution path and I ended up making a new account for my laptop. I was instantly reminded of how much I don’t like how Windows these days is built around the idea that all or most of its users are mostly computer illiterate touch screen users. I know I’m interested in social robotics, but it’s a little uncanny when it comes from an operating system I’ve grown up with.

Things became a lot easier after I managed to get a successful connection, but they weren’t perfect. First of all, my desktop immediately logged out. I was expecting something more along the lines of mirroring screens, but I can live with it this way. Secondly, I wanted to test a restart. The start menu only has a disconnect button now. I had to go back over to the tower and restart it myself. I use a lefty mouse, and both computers knew that. the result, both my computers flipped my mouse buttons, canceling each other out. I’ve unswapped the buttons on my tower.

After some basics were sorted out, I moved my monitors away from my desk and to my temporary setup, where I have my laptop and a more powerful WiFi antenna. I spent a while trying to set both my monitors up and use my laptop as a 3rd monitor, but it doesn’t look like it’s happy with that arrangement. I set my bit monitor to my primary display, and when I say to extend my desktop to my other monitor, it deactivates the laptop screen.

I still need a reinforced mouse pad, but I’m otherwise all set up. Sure, I elevated my laptop body so the screen would line up with the desktop monitors (The whole reason behind the desk is because of the whole battery drama I’ve written about in previous posts), and I would still like to get it working exactly how I want, but that doesn’t seem to be available right now

Final Question: When was the last time you used a driver CD?

Troubled Laptop Tries to Takes Up a Task

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am working on my laptop again, this time to get it to remote in to my tower and remain stable. Let’s get started!

As of starting to write this post, I still haven’t finished. I have a week before this project is “due,” so I still have some time. But so far, I’ve encountered half a score of problems and solved/bypassed/made provisions for bypassing most of them, the first of which was the laptop not even booting correctly. It brought up the boot menu and refused to boot the hard drive several times until it got sent to diagnostics, where it froze. My father advised I pull the chord, and I booted it again. I had a double take when I spotted Windows loading.

Since both machines are running Windows, and the target machine is Windows 10 Pro, Windows comes with remote access tools built in. I’m using those, as they’ll hopefully run the lowest risk of complications and have more features I won’t have to fight the systems for, like dual screens.

My tower doesn’t seem to like being remoted into. I followed at least a couple tutorials and visited both the legacy control panel and the newer, more touchscreen friendly, settings menu (I do not have a touchscreen for this machine). These sets of settings seem to ignore each other, though I could be wrong. It’s very annoying. I believe it’s what’s keeping me from making a full breakthrough.

In other news, I tried reaching out to an appropriate discord server for my new long-term project, but it seems I’ll need to keep researching to find a complete workflow, or if it’s even possible outside a dedicated studio.

Final Question: I’m just going to re-run my last question, now that I’ve sent another clue: What do you think I am researching?

Laptop Still in Trouble

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am still sort of in-between two major projects. Let’s get started.

The story so far: A while ago, my red laptop stopped recognizing its power cord. The apparent problem was a piece of the power port breaking off. After replacing the cord and later the internal port, the laptop is permanently tied to its power cord.

My father and I tried to fix it today, more my father than me this time. I loaded an old set of BIOS onto a thumb drive and he flashed them… after the list of updates that is. Even though it looked like the most recent version for my exact machine make I could find, it still complained about it being an older version. Good thing I managed to

My father also tried a cold boot, but nothing ended up working. Hopefully a genuine part will let the battery charge again. Otherwise, either a new motherboard or a new machine may be in the near future.

Final Question: The scope of my project this week was a bit smaller than usual. This is in part because I have been researching for the feasibility of my next big project. What do you think it will be?

Planning a Semi-Sealed Night Light Part 7

Good morning from my Robotics Lab! This is Shadow_8472, and today, I am inching forward to a stop on my current long-term project. Let’s get started!

I finally added a hole for the lamp base in my model. The pegs for the screws still aren’t in there, but I have made accommodation for their addition. I started with an cylinder object and scaled to the correct sizes. I positioned it in the optimal spot to get a visual proof of concept, but I eventually remodeled it to have a better number of vertices. My model is still on a 4 way symmetry, so I needed it to be divisible by 4; and the screw posts need to be on a symmetry of 3, so it needs to be divisible by 3 as well. I already had 40 points to merge, so it needed to be at least 40. Therefore: I gave it 48 points around the approximated circle and made some loop cuts accordingly.

I made a plan to start prototyping, but I noticed something. Sometime during the week, I arranged my Blender window to cover both my screens and set up my small screen to display different wire frame views of my project. I noticed on one of these views that something I did caused some of the loop cuts used for keeping edges sharp even with the subdivision modifier to go slightly out of alignment, and a face normal appeared facing inward along such an edge. I think it was a rounding error or something. Annoyed, I told Blender to remove doubles and I resharpened the edges.

Another incident while modeling happened in the way I added the hole in the bottom of my “house.” Before, it was a simple grid. I just scaled it down, then stretched the corresponding edges to meet the corresponding point on the model cylinder-cone. (I think I may have modeled that a little incorrectly as well, scaling the Z axis alone when I should have just scaled along the edges themselves. Good thing I kept the progress in an old layer.) I ended up with a squished grid and ugly quad geometry… and eventually some unacceptable triangles. By the time I noticed, it was too late in terms of actions to undo my remove doubles command, so I ended up removing bits of the squished grid and replacing it with some much simpler geometry.

I approved my own mesh for prototyping and pulled in a new cylinder and applied a Boolean modifier so I’d only print the ring for a test fit. (Another stay thought: the power cord would have also had issues with the ring I was making.) After catching myself from accidentally sending the .stl file directly to the printer, I went to the slicer and had to go around a few times to figure out the scale. I ended up making a unit cube and figuring the correct scale is about 5BU (Blender Units) to 1 cm, and I am working on a centimeter scale.

Finally, I got the test print to the printer, and I had the drippy white filament again. It didn’t start extruding again, and the raft started separating on the first set of passes when it was supposed to stick to the (absent part of the) outline. It curled on me. I reduced the extrusion temperature by ten degrees and tried again, only to have stuff curl on me on the next, tighter layer.

At this point, I’m thinking I will need to put this project on hold until I can properly fix my printer. It’s not working as intended, and I don’t know what to do with it.

Final Question: What in the world is going on with my printer not starting extrusion right away for the initial outline?

Planning a Semi-Sealed Night Light Part 6

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am once again picking up the night light project. It’s been a rough week progress wise, so there isn’t much progress. Let’s get started!

The next task is modeling up the print and executing it. It took me a while, but I finally broke off the first piece: actually modeling the lamp base. The lamp I took apart is a sphere with a flattened base. I used a flattened cylinder and scaled up the proportions to the size of the base. The greater radius and height were spot on accurate on the metric system, so when it came to the curved edge of the smaller circle, I rounded to the closest millimeter.

The next challenge is refining the base model and integrating it into my house structure. The base has three screw holes I intend to use to fasten it to the cover as it prints. At some point, I’ll need to model the screw holes in. I’m just glad I managed to get it in at all. However, realized that stock Blender is not the right tool for the job.

Before my next printing project, or sooner if I really need it before then, I will want to find a plugin for Blender that adds some missing CAD functionality. Already, I have been missing the ability to measure between two points of a model, and I had to scale the models using a known size and modifier factors instead of just making something x cm tall. I will say Blender did treat me nicely when I pulled it across my second screen and set it up with multiple angles of my work. It felt good to finally have a visual of how big the base/lamp will be relative to one another.

The next major chunk of work should be modeling up pins I can attach the lamp base. I’ll likely need to underestimate a little and won’t get as tight as a fit as I did with the Pi camera because I won’t have the luxury of sanding. On the other hand, a little cleanup isn’t out of the question.

Final Question: Do you know of any good CAD plugins for Blender?