Embedded

View Original

385: I Just Wanted an Industrial Arm

Transcript from 385: I Just Wanted an Industrial Arm with Jeremy Fielding, Elecia White, and Christopher White.


EW (00:00:06):

Welcome to Embedded. I am Elecia White, here with Christopher White. We're going to talk about robots. We're going to talk about hardware. We may talk about software, but we need something else for the robots. What we really need is a mechanical engineer to help us out. And I am thrilled to welcome Jeremy Fielding to the show.

CW (00:00:28):

Hey, Jeremy. Thanks for joining us.

JF (00:00:30):

Hey. Thank you for having me.

EW (00:00:32):

Could you tell us about yourself as if we met at, I don't know, a Maker Faire lunch or something?

JF (00:00:40):

Well, I would describe myself as a mechanical engineer who designs and builds prototypes, all types of projects, everything from science experiments that fit on a desk all the way up to industrial size equipment the size of a tractor.

EW (00:00:57):

And tell us about your YouTube channel?

JF (00:01:00):

Ahh, my YouTube channel is my opportunity to share my passion for engineering with the world. So I try to teach people engineering principles, but if you open a video talking about rotational inertia, nobody's going to click on that.

CW (00:01:16):

I would.

JF (00:01:16):

I try to make it as interesting as possible. I go after the most challenging projects, I build... like the last project being a full-size industrial robot, to give you that wow factor, to make you go, "Holy cow, he built that in his garage?"

JF (00:01:33):

And then I can talk to you about rotational inertia. So that's really what it's about. I want to get you to come and take a look at...the amazing, interesting projects that engineers can do. And by the way, you can learn some engineering along the way.

EW (00:01:46):

Blah, blah, blah. Large industrial arm.

CW (00:01:49):

Yeah, -

JF (00:01:50):

Exactly.

CW (00:01:51):

- any time you say industrial arm, she just checks out.

JF (00:01:54):

Exactly.

EW (00:01:56):

We want to do lightning round, where we ask you short questions, and we want short answers. And if we're behaving ourselves, we won't ask, "Are you sure?" And "How?" And "Why?" Are you ready?

JF (00:02:04):

Why? Yes, I'm ready.

CW (00:02:07):

Imperial or metric?

JF (00:02:08):

Ooh, I use both. Can't we all just get along?

EW (00:02:13):

Engineer, scientist, educator or maker?

JF (00:02:17):

All of the above.

CW (00:02:19):

What is in your toolbox?

JF (00:02:22):

A little bit of everything, but quite a few tape measures.

EW (00:02:27):

Phillips, flathead or torx?

JF (00:02:30):

Torx. Definitely.

CW (00:02:32):

Do you like to complete one project or start a dozen?

JF (00:02:35):

I do both. So I start a dozen projects, and then I realize I need to finish something. So I stop all the others and just select one to finish first.

EW (00:02:46):

Do you think there'll be a singularity event in our lifetime?

JF (00:02:49):

No.

CW (00:02:51):

Favorite fictional robot?

JF (00:02:54):

Huh. Johnny 5. Definitely.

EW (00:02:57):

Do you have a tip everyone should know?

JF (00:03:02):

Ask probing questions.

EW (00:03:05):

Oh, that was the answer. Not -

CW (00:03:08):

Not a directive.

EW (00:03:08):

Not a directive.

CW (00:03:09):

Yeah.

EW (00:03:09):

Okay. But let's go for the probing questions. You have your own industrial arm. How big is it?

CW (00:03:19):

I mean, wait, wait, wait. His arm isn't industrial.

EW (00:03:21):

Oh, it's not a prosthetic. Okay. Yeah, no...How big is the arm?

JF (00:03:28):

Well, my goal was to design the arm to have a little over one meter of reach. So that gives you a sense of scale. I think it ended up being about 1200 millimeters. So, see, there's metric there for you. Yeah.

EW (00:03:43):

And how many axes of freedom do you have?

JF (00:03:47):

Right now it's bolted to a platform making it a six-axis robot, but the original intent, and I still intend to build a track for it, which would make it seven-axis.

EW (00:03:57):

So it would be like a large arm on a tank?

JF (00:04:00):

Well, it wouldn't be free-roaming. This would be just a linear track that it can move along, like railroad tracks.

EW (00:04:06):

Okay.

JF (00:04:07):

So it'd be limited in that scope, but the in design intent there is to...make the track such that you could just keep attaching more pieces, and therefore I can make the track as long as I want.

EW (00:04:20):

That makes more sense than putting it on a wheeled track vehicle, which is what I had in my head.

JF (00:04:27):

Yeah. Well, you lose some of the precision there, but you get a whole lot of freedom. So that's an interesting thought. I am, well, actually, I don't want to tell you about that yet, because that's a feature video. But that's not far-fetched, what you just said.

EW (00:04:44):

Okay. So you have been making videos for awhile. And then at some point you're just like, "You know what I need? I need something that can open a beer for me from across the room." Or actually, what was the thought process in, "I want to make my own large industrial arm"?

JF (00:05:02):

Well, the truth is, and I get this question a lot, but really, I just wanted an industrial arm. I mean, ever since I've seen one, -

EW (00:05:10):

Yes.

JF (00:05:10):

- seen those videos, like how it's made, and you see these cars being fabricated. And there's this massive sort of majestic, mechanical machine lifting up car doors, and flipping the car over, and painting the interior.

JF (00:05:26):

That's been fascinating to me for a long time. And I finally decided, "You know, if I can get a sponsor to pay for this, I want to build my own industrial arm. I don't care what it does. I just want to make one."

EW (00:05:38):

I totally understand. We went on a tour of the Tesla factory in Fremont. And the arms just kind of put the car here, and there, and they weld, and they move it, and -

CW (00:05:49):

Yeah, they're grabbing entire frames and just flipping them around in a second. It's like, "Okay, that's disturbing."

EW (00:05:54):

Yeah.

JF (00:05:54):

It's beautiful.

CW (00:05:55):

Yeah.

JF (00:05:55):

And obviously quite dangerous, -

CW (00:05:57):

Yes.

JF (00:05:57):

- because they don't care if you're standing there or not. They have a place to go, and they're going.

EW (00:06:03):

Have you had any incidents with your robot where you were like, "Oh, maybe I should put tape down on the ground or something like that?"

JF (00:06:11):

I have. Fortunately nobody got hurt or anything like that. I do keep the space around the robot. I don't let anybody get close to the robot. So when my kids are in the shop with me, they know, "Okay, okay. Robot's on." Everybody knows to stand back and give it its space.

JF (00:06:28):

But I've had instances where, for example, a motor overloaded, and it threw an error. So that one motor stopped moving, but all the other ones moved. And that caused the arm to go to a position I didn't expect it to be in.

JF (00:06:41):

So I was thinking it would just be manipulating on one side and it'd go all the way over to the other side. It's like, "Oh, wait a minute. I wasn't looking for it to be over there." And when you have it going at full speed, it's really scary to see it go somewhere you didn't plan for it to go. So for sure, I give it plenty of space.

EW (00:06:58):

How fast does it go?

JF (00:07:00):

That's a great question. I've sort of been tinkering with the numbers, and I don't really know what the true answer is. I mean, the motors can move theoretically way faster than I would ever want them to go.

JF (00:07:14):

I've basically been slowly turning it up until I'm getting more vibration and shaking at the end of the movement than I want, and then backing off, trying to figure out what that limit is.

JF (00:07:24):

I'm actually working on that right now, trying to figure out what's the fastest safe speed that I can go at. I don't know what that number is yet, but it's scary.

EW (00:07:34):

So there's a software aspect to this. There's the control, the kinematics, the making sure the motors go at the ramp speeds instead of just on and off. And then there's the electrical part, which is mostly power, I think, although I could be wrong.

EW (00:07:53):

And then there's the mechanical part of actually making sure it doesn't crash into itself, although that may be partially software. But there's a lot of mechanical parts. Have you done all of them, or have you outsourced some parts?

JF (00:08:08):

The only parts that are purchased would be the gears, the bearings, and belts, parts like that. Everything else was custom made in my shop. So every other component... and bearing supports, well, fasteners, fasteners would be the other one. And that's it. Everything else I machined myself, which was very much intentional.

JF (00:08:32):

I wanted to do the entire process myself so that I'd understand all the aspects, including with the electrical. So my initial thought was that it would be, well, essentially what you said. I thought as long as I had power to the individual servo drives, then that would be good. It'd be all software after that.

JF (00:08:50):

But I actually ended up installing a lot of relays and other components to sort of help control things in a sort of auxiliary fashion. For example, controlling the EStop and how it operates. I spent a surprising amount of time thinking about how I wanted the EStop to work and what I wanted it to do.

JF (00:09:09):

The motors in the base, the first three axes, all have brakes. So, "When do I want the brakes to engage?" Because I'm trying to keep the arm from collapsing on someone if I lose power, things like that.

JF (00:09:22):

There was just a whole thought process that went into the electrical design, which ended up adding about 14 relays and several other electrical components that are doing various things to help me control the robot outside of the software side of it.

EW (00:09:39):

How do you get the feedback? How do you know where the robot arm is right now?

JF (00:09:44):

Well, all of the motors have encoders on them.

EW (00:09:47):

Okay.

JF (00:09:47):

The servo drive also knows where everything is, but it's interesting that you bring that up. Because I realized yesterday when I had that problem where the motor... the arm went somewhere I didn't expect it to go, it was because one of the couplers holding the gearbox to the motor had actually loosened a little bit.

JF (00:10:12):

So as far as my computer was concerned, as far as the servo drives was concerned, the robot was where it was supposed to be.

JF (00:10:19):

But mechanically speaking, it was not. And so that was a lesson learned there, that I didn't realize I had a gap there in my design where it still could go somewhere I didn't expect it to go. And I have to rethink how I want to do that. Do I want encoders to be on the gearbox itself? There's just a lot more things to think about now.

EW (00:10:38):

Do you have problems with things shaking loose?

JF (00:10:42):

Not usually. This was sort of an unusual problem, I think. So I'm using Loctite, and I've got wedge lock washers in most places. In fact, this is implemented pretty much everywhere except in that one place where I had the problem...

JF (00:10:58):

But I didn't want to do that on the shaft of the motor. So this was just a little bit of a surprise, but I haven't had anything else come loose.

EW (00:11:08):

And the software, was that the worst part? The most fun part? The, "Why can't I get somebody else to actually make ROS work" part?

JF (00:11:21):

This is a multifaceted problem that I am still actively working on. So for the most part, when I want to move the robot around, and just sort of learn more about the mechanics, and how things are going to behave, I'm actually using a open source.

JF (00:11:39):

So I'm using the open source software that another YouTuber made for his much smaller robot, but I was able to modify it a little bit to control my robot. And that's kind of what I do to just jog things around and sort of test out the robot now.

JF (00:11:55):

In the background, I'm also writing my own program and then trying to get ROS and MoveIt, which is another software that's designed to work with ROS to control the robot. So that's the ultimate goal is to use MoveIt and ROS to control it. But that has been unbelievably hard.

CW (00:12:16):

She's not laughing at you. She's laughing with you.

JF (00:12:18):

Yeah. I mean, well, first, I'm also new to Linux as well. So just consider how difficult that is for me -

EW (00:12:26):

Oh, yeah.

JF (00:12:26):

- to be learning Linux, as well as learning ROS, as well as trying to learn MoveIt. It is really, really kicking my butt right now, but I am trying.

EW (00:12:35):

And MoveIt is so powerful. Have you tried Gazebo?

JF (00:12:39):

I haven't. Well actually, yes, I opened it, and I did the little demo where you just jog around the robot that sort of comes with the program, the tutorial robot. And that's as far as I've gotten with that. I was celebrating the fact that I could even get it open. I mean, I'm just -

EW (00:12:54):

Yeah, yeah.

JF (00:12:54):

I'm a total novice in that area. I'll spend hours just scratching my head, wondering why the thing just won't even open. It's pitiful, actually.

EW (00:13:03):

Do you have any questions? Because I use ROS a lot.

JF (00:13:08):

What? I have thousands of questions.

CW (00:13:08):

Welcome to the ROS hour.

JF (00:13:08):

...You can't ask me that in the middle of your podcast, because I'll just -

CW (00:13:14):

Well, it's her podcast. She can do what she wants.

JF (00:13:16):

Yeah. To answer your question briefly, yes. I have lots of questions. We should probably sidebar that,...because I don't know what I'm doing. I need help.

EW (00:13:27):

Well, and with the ROS, which is Robot Operating System, if we failed to say that, -

CW (00:13:33):

Yeah.

EW (00:13:33):

- which isn't an operating system, it runs on top of Linux.

CW (00:13:36):

It's not a robot either.

EW (00:13:37):

It's also not a robot, but it comes with a bunch of packages that help you simulate and move robots safely. But one of the problems is you have to describe your robot in their very special robot description language.

EW (00:13:53):

And then you have to understand all the publisher/subscriber stuff that happens.

JF (00:13:58):

[Affirmative].

EW (00:13:58):

It's very large, and it is mostly written by grad students who now are no longer supporting their packages. So, very cool, but -

JF (00:14:06):

Very, very good description.

EW (00:14:07):

- big.

JF (00:14:07):

Yes. Just translate that to pain and suffering, and that would be a good description there.

EW (00:14:16):

So I got a robot arm, and it was the MeArm robotic arm. And it was $50, and I built it myself. I mean, -

JF (00:14:28):

Yes?

CW (00:14:28):

From the kit.

EW (00:14:28):

- from the kit. How well do you think it compares with yours?

JF (00:14:33):

Well, probably wouldn't want to compare those two.

EW (00:14:39):

Yours could pick mine up and throw it across the room.

JF (00:14:44):

Yes. But I would say, I used to think, before I started actually building my arm and trying to understand...how their operating systems are normally designed, I thought it would be a decent idea to buy a kit like that.

JF (00:15:01):

And so one of my initial thoughts was, "Maybe I'll buy a small arm, and use that for some sort of demo project, and try to work my way into it." And I have that thought all the time, and I never actually do it. I almost always just jump in the deep end.

JF (00:15:15):

And usually that pays off again with lots of pain and suffering, but I almost always just jump in the deep end. But I'm glad I did in this case, because it turns out there's very little translation between the two, except the fact that you have these independent axes that need to be independently controlled.

JF (00:15:34):

But that doesn't really give you a good sense of what it's like to try and do kinematics, or inverse kinematics, and understanding how the robot is actually figuring out where it should be.

JF (00:15:45):

None of that translates well to those little arms with the toy servo motors, is what I'm going to call them, to differentiate them from the industrial ones,...and the limited number of axes, but yeah. And even mechanically, it's not quite the same. But I mean, you knew that when you asked, but yeah.

JF (00:16:05):

I don't feel like we do our kids justice if we hand them that thinking it's going to teach them what it's like to actually work with an industrial robot, because other than the fact that it kind of has a similar shape, it's not really the same thing in any respect.

EW (00:16:21):

Well, the good part about it was learning the kinematics and the inverse kinematics.

JF (00:16:26):

Yeah. Was there inverse kinematics with that one? How did -

EW (00:16:29):

Oh, yeah.

JF (00:16:29):

I mean, I saw the picture of what you shared with me, but the one that I'm familiar with that my son was playing around with, it came with a whole bunch of potentiometers. And he would just roll the potentiometers and the different axes would move.

JF (00:16:44):

I didn't see the programming side of it where there was any calculation going on. If you wanted, say, the gripper to move in a straight line, how would you figure that out? But if that comes with that little robot, then there's some additional value there.

EW (00:17:04):

Yeah. I used the robot to do straight lines and to do multiple solution types of movements where I could get to a position going different kinematic paths. And it was pretty fun. It was hard to build, because the mechanics are not great. And then it was very prone to shaking loose things, even with reasonable Loctite and washers.

JF (00:17:36):

Yeah.

EW (00:17:36):

But I could get it to go in a straight line. I mean, my goal was to make a typing robot, which was very silly. But it was the whole camera part, mixed with machine learning, mixed with the arm, and trying to get -

CW (00:17:48):

The worst robot in the world to do something with software helping it.

EW (00:17:52):

Right.

CW (00:17:52):

Yeah.

EW (00:17:52):

The goal was a terrible hardware with good software, and could I do anything with it?

JF (00:17:58):

Wait, so, I mean, first, that sounds like an awesome project, but also, you couldn't get that to work with this?...Because I'm looking at it, and if we're just talking about a typing application,...well, I mean, I haven't actually held the hardware in my hands, but what kind of failures were you having?

JF (00:18:18):

I'm taking a little tangent here. Hopefully that's okay.

EW (00:18:22):

It didn't have much feedback at all. There was a little bit. I put in current feedback, but it wasn't a proper servo. I mean, it was a servo, but when I told it to go to position (0,5), it could go anywhere between (0,10) and (0,500).

JF (00:18:41):

Ahh, okay.

EW (00:18:42):

So it just wasn't very precise in its positioning, partially because the mechanics were loose, and if I tightened them too far, they couldn't move at all. But because they were loose, if I went to a location from one position over here, I would overshoot or undershoot differently than if I started it in a different location.

EW (00:19:05):

So the camera was supposed to be able to tell where the arm was going wrong, and it was hard to move a short distance because it just had the torque. So it would be better if the camera could tell the arm to move to a different position while it was still moving. And there's just a lot of -

CW (00:19:26):

You had a tremendous amount of backlash and play in the thing too.

EW (00:19:30):

There were so many things wrong with the arm, but I had a really good time with the software. And I did get it to type, and that part was okay. And it got a lot of things with the camera so that there was no fiducials, there was no setup, I just had to have the camera be able to see everything and then do a very small amount of calibration.

JF (00:19:53):

Yeah.

EW (00:19:54):

And...it worked maybe 40% of the time, but then I got a video where I told it to type, "Hello," and it typed, "Help." And that was kind of the best possible thing I could do with this.

CW (00:20:09):

Yeah, the project was over at that point.

EW (00:20:09):

And I couldn't imagine doing anything really better. So I stopped working on it. And I also got a job working with ROS, and machine learning, and real robots, so it wasn't as much fun to play with at home if I was doing it at work.

JF (00:20:23):

For sure. Okay. I mean, but it sounds like a good software experience though, in terms of the challenges there. But then the mechanical design was really limiting your ability to execute.

EW (00:20:39):

Well. And I used ROS and played with it in Gazebo, but I could never get the robot arm description perfect. And so I did some demos where I would move the robot arm and have Gazebo running so you could see what the simulator looked like.

EW (00:20:59):

And sometimes they would be in perfect sync, and it was very beautiful. And sometimes they would just -

JF (00:21:03):

Yeah.

EW (00:21:03):

- be totally out, because my degrees of freedom were not separate, not truly separate...just because the motors and the gears and mechanical that I don't understand.

JF (00:21:16):

Wow. So we need to build you a typing robot.

EW (00:21:22):

I suspect your typing robot with your mechanical arm, you just need a really big typewriter.

CW (00:21:29):

It would a), be able to type really well, or pulverize the keyboard in the middle of this.

EW (00:21:34):

Exactly. Which is what I do to my keyboards.

JF (00:21:36):

Yeah...It's got really good repeatability. So once I figured out exactly how much to press the key, I should be okay. But it should press it the same each time. But it would definitely crush a keyboard, so got to get it right the first time kind of in this case.

EW (00:21:56):

So one of the things I did was with the camera so that I didn't have to fix the keyboard in position, and I didn't have to say, "Go to this position." I had the camera to do a closed loop feedback.

EW (00:22:08):

Are you doing anything like that, or is it always going to have to go to the same position? Are you going to say, "Oh, just pick up the apple," and it has to go find the apple, and pick it up without squishing it?

JF (00:22:21):

Well, first I should say that from a programming standpoint, trying to coordinate computer vision and getting those things to talk to my hardware is way beyond my skill set at this time. But of course I intend to get there. So I think maybe the answer to your question would be, I don't have any plans for that in the immediate future.

JF (00:22:41):

Right now, I want to be able to take the model and move it, drag it to a certain position, and then have that replicated in real life.

JF (00:22:52):

And then the next step would be to design a workstation around my robot in the model and actually plan out the entire path, digitally first, and then be able to send that program to the robot and have it repeat the sequence over and over.

JF (00:23:08):

So that to me is the current goal, to be able to sit at my desk, and lay out exactly how I want the robot to move, and then go out and just upload it to the robot, would be the ideal scenario for me.

JF (00:23:20):

But when it comes to the robot responding in real time to something it sees on the screen, that would be amazing. But I would definitely want to get help with something like that. I think I'd be talking to someone. And then there are two levels to that, right?

JF (00:23:35):

There's 2D vision where you're just controlling the X and Y, and you tell it where the Z is. But then there's 3D as well, where, I guess it's looking at the size of the object in the frame and maybe adjusting that to figure out what the Z height is.

JF (00:23:51):

There's just a lot to think about there, even as I'm just processing this right now, all of that beyond where I'm at, but it would be fascinating to venture down that road.

EW (00:24:02):

Do you have current feedback so you can tell if you're pushing on something?

JF (00:24:07):

I could get that information from my servo drives.

EW (00:24:12):

Yeah.

JF (00:24:12):

But I'm not doing anything with it. So, of course it's adjustable as well. I can tell it to overload at as small or as large a number as I want, but then also I can have the encoder position output to the computer.

JF (00:24:26):

I could have current limits or speed, whatever variables I want, really. I can get that information and have it feed into the software. But what I do with it after that I have to figure out.

EW (00:24:40):

Current limits are nice because you can make it so that the robot is slightly less dangerous. If it's pushing on you, it will stop eventually.

JF (00:24:52):

Yes. Well, I'll -

EW (00:24:54):

I mean, it doesn't do a lot of good if you're going fast.

CW (00:24:55):

Yeah.

JF (00:24:56):

That's a double-edged sword, because if you're going to go at high speed, to accelerate the arm -

EW (00:25:01):

Yes.

CW (00:25:01):

Right.

JF (00:25:01):

- requires a certain amount of power. And then at speed, there's a certain amount of power. So you have to set the limit high enough that you don't overload just because you're trying to move fast. But so how do you differentiate that from when you hit something versus when it's just the inertia of the weight of the arm?

JF (00:25:19):

Those are different variables. So I think what you would really be doing is if you want a collaborative robot, for example, by nature, it has to be slow. Because you're trying to use current to decide how much you can push and pull.

JF (00:25:33):

By the very nature, the robot's kind of wimpy. It's weak. It can't lift very heavy loads, and it can't move very fast, because you also need high currents for that. So there's a pretty difficult trade off there, unless you could offload that task.

JF (00:25:48):

If you had some sort of surface sensor, and if you were touching the robot,...not causing the motors to overload, but if it was sensing you in some other way, I feel like that would be the ultimate way to get high speed and power, but also get some of that safety back.

JF (00:26:05):

And that's a hard problem. I don't know how you do that off the top of my head.

EW (00:26:09):

Ultrasonics, maybe? I mean, you can do some of the current calculation by saying, "If I'm accelerating, my current load can be higher than if I am at a constant velocity - "

CW (00:26:21):

Yeah, but then it's not safe during acceleration.

EW (00:26:23):

That's true.

JF (00:26:24):

Yeah. I mean, I talked about this in one of my recent videos...where I used the illustration of a figure skater spinning around. And I said, how when she brings her arms in, she speeds up, because essentially her momentum is being conserved. So the same thing is happening with the robot.

JF (00:26:43):

You're going to have different current when the arm is fully extended out and the arm is swinging around versus when it's close. So there are a lot of variables where you're going to be really limited.

JF (00:26:54):

If you have a program where the robot is going to be reaching out, you're going to have to allow for a slightly higher current than when the robot is reaching for something very close. Especially if it's carrying something, if there's a load hanging from the arm, then again, you're going to have to have allowances for higher current.

EW (00:27:12):

You had a video where you recommended somebody get a five-pound weight and hold it at the end of their arm extension.

JF (00:27:20):

Yeah.

EW (00:27:20):

And that was really cool. Can you talk about that?

JF (00:27:24):

Yeah. So I was just talking about the difference between essentially...how big of a factor torque is. And that was really the factor. I said if you hold the weight extended away from your body and you try to swing it around, there is not just the torque of holding the weight up.

JF (00:27:49):

Maybe the best example would be a seesaw. If you have a heavier kid sitting on the seesaw with a small kid, the smaller kid has to sit further away to sort of balance the two out. Well, when you extend your arm, the same thing is happening.

JF (00:28:02):

You're increasing the amount of torque you need to hold up the weight. So that's when it's still, but when you try to accelerate that mass, there's an additional force there to allow for that acceleration. And so that's what I was trying to describe in the video, the fact that you don't just have to deal with the torque of lifting the weight.

JF (00:28:23):

You've got additional forces when you try to move the arm quickly, which is one of the goals that I had for my robot. I want it to be able to move very fast, but that greatly increases the amount of power you need. And I thought that that was kind of surprising in terms of how much more power you actually need.

EW (00:28:39):

That makes sense.

JF (00:28:41):

Yeah.

EW (00:28:41):

As you're thinking of what you want the robot to do, do you have ideas? Are you going to make it dance? Are you going to make it play something?

JF (00:28:52):

I get this a lot. So I've got people telling me, "Oh, you could have it throwing things, and you could have it doing this and that -"

EW (00:29:02):

Have it play Operation, and then say that it's a medical robot.

JF (00:29:05):

Yeah. Have the robot do a sword fight, -

EW (00:29:07):

Yeah.

JF (00:29:07):

- and build another robot. And they fight each other. And so it's always fun when I hear that, but I'm kind of a serious creator. So when it comes down to actually doing it, I kind of talk myself out of it. I go, "Yeah, that'd be fun." And it's like, "I don't want to do that."

CW (00:29:20):

What if I have the robot build another robot?

JF (00:29:23):

Yeah. I don't know. I always end up kind of going back to the simpler sort of things. But I mean, I am doing something right now, which I can probably tell you about, because my video will probably come out before you release this podcast.

JF (00:29:36):

But the one I'm working on right now is, I'm talking about robot safety. But again, who's going to click on a robot safety video? So I bought a full-size boxing dummy, and I'm going to have my robot throw punches at the dummy. And let's just see how dangerous it really is. If you had to take a punch from a robot, what would that look like? And so I actually cast a human-sized fist. So Jarvis has a fist. That's the name of my robot. And the fist is mounted right now. And today I'm going to go out and punch the dummy with the robot arm.

EW (00:30:13):

That's pretty awesome.

JF (00:30:15):

Yeah.

EW (00:30:15):

But you also arm wrestled your robot.

JF (00:30:19):

Oh, man. So yes and no. I thought about arm wrestling the robot, but I didn't actually activate it. I thought it would be funny if I tried to push against the robot. But then my better judgment took over, and I thought, "This is a fun picture, but I don't think I'm actually going to turn the robot on."

CW (00:30:35):

Yeah.

EW (00:30:35):

Good.

CW (00:30:38):

That's one of the things I wanted to ask you about. Well, I'm going to start with a higher level question first. You introed the robot video with kind of your design process. You went through a series of questions. How am I going to do this? How am I going to make this safe? What happens if this happens?

CW (00:30:54):

And I really liked that, because it's a design process that I don't see people doing too much anymore, exploring what could go wrong, and exploring what you really want out of it, instead of just going down a list of specifications. Is that your usual approach to problem-solving?

JF (00:31:13):

It is. In fact, I have an acronym for it. I call it Dr. FARM, and it's something I just made up. But basically, "D" is define the problem, which is what made me say, "Ask probing questions," earlier, because I'm always thinking about when people come to me with their engineering problems.

JF (00:31:33):

The first thing I want to know is, do I have a really good definition of the problem? Because sometimes they think the problem is one thing, but there is a deeper problem that we might be able to solve with a much simpler solution.

JF (00:31:44):

So I start with defining a problem, get as specific as I can. I'll usually write that down. And I try not to constrain myself unnecessarily, because it's very easy to start with an idea. Usually you start to design with an idea already in mind of how you're going to do it.

JF (00:32:03):

And so without even thinking about it, your idea is driving the definition of what you're going to design. So I try to put that aside for a moment and just say, -

CW (00:32:14):

Oh.

JF (00:32:14):

" - What are the actual core things that I really need? How do I define this problem well without thinking about a solution?" Because that could often lead to a very different solution. So define the problem.

JF (00:32:25):

Next is research, that's "R," and do your homework. Figure out, "Has anybody else done this before?" I mean, there aren't very many new engineering problems. So if I can research this problem and figure out, "Has someone else already dealt with this?"

JF (00:32:40):

And maybe it'll be in a field that's completely unfamiliar to me, and the thing has a name I don't know about. I try to explore everything that I can think of that might move or behave the way I want my design to move or behave. So I'll do my homework and see what's already out there.

JF (00:32:58):

Then the next thing will be function. And all of this happens before I start designing anything in CAD. And so function is next. "What do I really want it to do? And how does that match up with my constraints?" And appearance is next, which could also be its geometry, a shape. Then I start thinking about my 3D model.

JF (00:33:17):

"How do I want to shape these components to match the need? How do I keep the weight down if weight is a constraint?" It usually is. After that is risk. "Is anybody going to get injured or hurt? Is there any risk of manufacturing?

JF (00:33:31):

"Can I even manufacture this product? How do I go about making sure that this thing can be made?" And the last thing is model, which I could also translate as prototyping or refining my design. And usually I will make prototypes of the critical components to just test out my idea, see if it's actually functional.

JF (00:33:53):

Sometimes it's as simple as just cutting out pieces of cardboard, and putting a pin in it if I have a pivoting joint, and just looking at it, and making sure it makes sense in real life. When you model something in 3D, it doesn't collapse on itself. It doesn't fall. It stays exactly where you put it.

CW (00:34:09):

Right.

JF (00:34:10):

But when you make an actual physical model, then you get to see gravity. And you can see what happens, when you roll it over in different orientations, how it might be handled. So that's sort of my design philosophy in a nutshell is, well, Dr. FARM, is what I started calling it.

EW (00:34:27):

And you did make a model of your industrial robot. You 3D printed something?

JF (00:34:32):

Well, the way I did it in this case is, so I made a really small 3D print. That was just a model that I found online of a KUKA robot, just in case you're talking about the model I was holding up.

EW (00:34:45):

Yeah.

JF (00:34:46):

But I actually 3D printed several of the full-size parts. In fact, in the very first video, there are two parts that are still showing 3D-printed parts as I was proving out the design. Because there was a lot of metal being used, a lot of big blocks of aluminum for many of these parts.

JF (00:35:04):

So I wanted to do a proof of concept and 3D print the part before I spent hours and hours machining something that didn't fit or didn't work.

JF (00:35:12):

But the 3D print was an easy way for me to make something without standing in front of the machine, put it in place, again, hold it in my hands, test it out. And in this case, I tried to print with enough thickness to support its own weight and be able to attach it to the robot.

JF (00:35:29):

But of course I wouldn't load the robot with 3D-printed parts. But it gave me a good sense of how big the part was going to be, whether it will fit or not, if it was functional. And I actually made some design changes based on that. So it ended up being really helpful.

CW (00:35:44):

I like the Dr. FARM approach, and that modeling is the last thing.

JF (00:35:51):

Yes.

CW (00:35:51):

There's a lot of thought ahead of time. And I think at least in software, that kind of design is falling out of favor a little bit, and people skip straight to the modeling, which can work fine for certain things.

CW (00:36:03):

But it does leave that whole range of thinking about risks, or thinking about what could go wrong, or thinking about if you're even solving the problem you think you're solving, out. And I wish people would pay more attention to the design stuff upfront.

CW (00:36:17):

So go watch...You talked about this deeper, I think, in the "18 Mechanical Design Tips" video?

JF (00:36:24):

I did. Yes.

CW (00:36:26):

And I think that any engineer should watch that.

JF (00:36:29):

Oh, yeah. In fact, looking at the comment section, that's a pretty common comment. And I think there's at least 50 plus comments from people saying, "Wow, that applies to my industry as well. And I'm not a mechanical engineer."

JF (00:36:41):

So I'm seeing that from people doing software, people doing corporate stuff. I'm getting a lot of positive feedback about those concepts overlapping with things that they felt were important in their field.

EW (00:36:55):

So I have a question, related to your YouTube channel specifically. Should I email you about my project or idea?

JF (00:37:05):

No. Please don't do that. Oh, wow. You're touching a hot button there.

CW (00:37:15):

But wait, I have this perpetual motion machine thing, and I think you and I should really collaborate on -

JF (00:37:22):

I am just inundated with emails from people who are, "Hey, I'm trying to wire this motor, can you help me out?" Like, "Oh, I have this engineering thing that I'm trying to make." And then, oh my gosh. It's unbelievable, the floodgates that come.

JF (00:37:38):

And so in every possible way I could think of, I've tried to alleviate that with auto-replies and with comments in the description. It just doesn't work. They just come from everywhere. It's on Twitter, Instagram. Oh, man.

EW (00:37:55):

We don't get that as much. Do you think it's because we're consultants and we're pretty upfront with, "You have to pay us -"

CW (00:38:00):

I don't know.

EW (00:38:00):

" - if you want us to pay attention to you?"

CW (00:38:02):

I think he's exposed to a lot more people too.

JF (00:38:05):

There's definitely a sense when you watch my videos, I think, and this is intentional. I call my subscribers my neighbors, and this is very much intentional. I want them to feel like you walked over to your neighbor's garage, and I'm just showing you how I'm doing this thing. That to me is sort of the ideal scenario, right?

JF (00:38:24):

We can relate to each other. I want you to understand this concept. You're not sitting in a big college classroom. I want you to understand the hands-on concept here. So I rarely break out formulas, although occasionally I have to in my videos.

JF (00:38:39):

But I'm bringing this up to say that there's this sense that they really know me personally, and that I'm constantly just sharing things with them all the time. So it doesn't feel like that much of a leap to them to say, "Oh, well, he can help me with my specific problem."

JF (00:38:55):

And, yeah. But if you can realize that, yeah, it's probably about 3% of the viewership per video will send me some kind of email or message. So just imagine a video of 500,000 views, how many emails come in, and messages. Every time I release a video, the floodgates just open.

EW (00:39:17):

Yeah. Yeah, I can imagine. That sometimes happens to us. It depends on the episode, but with guests, usually it's more requests for connections and whatnot. We won't give them your email.

JF (00:39:35):

I mean, if it's a business connection, I'd love to talk to you, but if you want me to solve your engineering problem, that's what I get paid to do. So it will be better -

CW (00:39:46):

If you pay me.

JF (00:39:47):

- if we were in a scenario where, and...I'm going to go out on a limb here, but I'm guessing that you were hoping for free advice and not some kind of consulting fee. So it's easier for me to just say, "I'm sorry, unfortunately, it's not safe or practical for me to respond to thousands of messages, trying to give engineering advice."

JF (00:40:08):

"I have no idea what your capabilities are. I can't see the entire problem to fully understand it. I only have what you give me through your lens. So if you have limited knowledge of what you're looking at, you are my eyes, right? So it's just inherently unsafe to give advice like that." And the problem is always deeper than they think.

JF (00:40:30):

So they're looking at me and they think, "Oh, this guy could figure it out in a couple seconds." But they don't realize how many hours I spend thinking about the problems that I work on. And it's very likely more complicated than they think.

EW (00:40:42):

You're really great about telling people that they can do what you do with practice. You make it look, not necessarily easy, but possible. Do you think people don't engage in this sort of "build it at home" because they need permission, or because they don't feel competent?...Why don't they go ahead and do it themselves?

JF (00:41:12):

Well, there's a couple of layers to that. I think there are some people who are genuinely afraid of what they don't know...and in some ways that's okay. But when you watch many videos open up, especially the more professional ones, they'll have a full minute-and-a-half segment on safety, right?

JF (00:41:32):

"Oh, you should hire a qualified person for X, Y, and Z, and you might get electrocuted, and you might die. And you'll lose a limb." And you get a minute and a half of that. And then they kind of just barely show you how to use the thing.

JF (00:41:44):

And they say, "And if this doesn't work, call a technician." So there's just this sense that you're not supposed to do it. And I think people come to my projects with that same idea that, "Wow, I could never do that. I'm not qualified." But I don't think I'm qualified either. I just wanted to do it. So I figured out how to do it.

JF (00:42:04):

And I make a lot of mistakes along the way. And I try to show those in my videos...I can't show them all because the video will be too long. But I try to give some sense in each video that, "Hey, I messed up, and there are things that I don't know."

JF (00:42:18):

And sometimes I'll look at it and say, "I have no idea if I'm from doing this right or not, but hey, I'm doing it." And my goal there is just to say, "Try it." If you want to try it, try it. I will rarely if ever tell you that something is too dangerous to try.

JF (00:42:36):

Although certainly there are things like that. But I'm hoping to break down some of the fear barrier that keeps you from ever learning, or you feel like you have to have a college degree and 10 years of experience watching somebody else do it before you actually try. I don't think that's practical or wise.

EW (00:42:53):

And you do have a college degree, but not in engineering. Is that right?

JF (00:42:58):

That's correct. Engineering, I am self-taught, so my first engineering job came along with, well, I guess I should start at the beginning, because it will make more sense that way. So...I wanted to build a clubhouse for my kids, and I had no power tools.

JF (00:43:15):

All I had was a drill, something sufficient for hanging pictures, and that was about it. And I decided, "I want to build a clubhouse for my kids." And I did. And after I built that I thought, "I need a workshop so I can build more stuff, because this was fun."

JF (00:43:30):

So I built a little four-foot-by-eight-foot shop. And if you look at my earliest YouTube videos, the first ten or so, you see that tiny little shop that I was working in. And I ended up making all these sort of space saving devices. And I built this thing where you could retract my table saw into the workbench.

JF (00:43:50):

And while I was doing that, and sort of figuring it out on my own, I thought, "You know what would be nice? If I could see a YouTube video on some of this stuff. Nobody else is quite doing it like I'm doing it." And so I posted a video. The first one that really exploded was one called "How To Wire a Motor."

JF (00:44:12):

I essentially dragged a washing machine off the side of the road. I wanted to make my own power tools. And so I figured out how to get the washing machine motor to run outside of the washing machine.

JF (00:44:22):

And I thought, "It's five random dudes in their garage who want to be able to do this, but I'm going to post this video, and that can help them out." And it got 400,000 views in the first month. And I thought, "Okay, well it's not just five random dudes. There are a lot of guys who are interested in this kind of stuff."

JF (00:44:37):

And that was really what started it. But from that, I bring all that history up to say that it was that that caused an engineer to call me up. He had an engineering firm, and he just said, "Jeremy, I think you have a gift. And I know you live in area, and I want to offer you an internship with my company if you're interested."

JF (00:44:57):

And I said, "Sign me up." So about six months of working there... They had a huge library of engineering books, and lots of big industrial projects that they were working on. So I learned a lot sitting with that group and reading through the libraries that they had there.

JF (00:45:13):

Everybody was busy so I didn't get a lot of hands-on teaching. It was mostly, "If you need to know something, look in that book. Look in that book." They pointed me in the right direction. So that's kind of what I mean by self-taught.

JF (00:45:25):

But it was from there where the engineering really picked up. And then that led to another offer a few years later, which is kind of what I do now. But yeah, that's how I got into engineering.

EW (00:45:40):

I have some listener questions for you.

JF (00:45:43):

Sure.

EW (00:45:44):

The first one is from Brian. "What is the best place to salvage motors?"

JF (00:45:52):

Well, let's see. Trash day is a good day. Bulk trash. If you know when bulk trash is in the various neighborhoods, you can sort of ride around. That's a good place to find treadmills with DC motors and large machines like washing machines. I've also gone as far as going to a recycling place where that stuff easily ends up.

JF (00:46:14):

And if you talk to them there, you're going to have to talk to more than one person, because usually they'll say, "Oh, we don't do anything with the public." But if you talk to enough people, you'll find someone who wants to help.

JF (00:46:26):

And they will either sell you the motors, or in some cases I've done trades where I took a motor out and it didn't work, and they gave me another motor in exchange. There's lots of ways to get that kind of stuff. And I mean, watching Craigslist and Facebook Marketplace, people are often just giving things away in the free section.

JF (00:46:44):

Like, "Hey, this is broken. If you can fix it, you can have it," kind of thing. And I don't keep all the stuff. I usually just take out whatever I think I might use in the next month or so.

JF (00:46:53):

And then I put the rest of it back on the side of the road for my bulk trash days. I don't want to stockpile this stuff and have a huge inventory of things around, but it's pretty easy to find things. People are usually giving it away.

EW (00:47:08):

Brian also asks, "What is your favorite motor component, and why is it a centrifugal switch?"

JF (00:47:18):

I love the centrifugal switch, because it's such a fascinating mechanism. It's one of those things where you look at it and you go, "It's so simple. Why didn't I think of this?" That's the level of fascination I have with it. It's astonishingly complex and simple.

JF (00:47:36):

It's just two springs and a weight, but it's a fascinating little device. I have a whole video on it, which is probably where that question comes from. But it's by far one of my favorite motor mechanisms because of its simplicity. And yet it's engineered to work in a very tiny range. It's amazing.

EW (00:47:59):

That's the part that is for slowing down and speeding up?

JF (00:48:04):

Yes. So you have a capacitor that needs to be attached to single-phase motors when they first start up, but you only want that capacitor attached when the motor is trying to go from a standstill to full speed, usually it's about 1700 RPM. Well, you need to connect this capacitor for just that brief window of time.

JF (00:48:26):

And when it's up to full speed, you want to disconnect it, or the capacitor will literally explode. It can't handle the current for very long. So this device essentially holds the circuit closed and does the force of the weights swinging out while the motor is speeding up.

JF (00:48:44):

Once it's the weights swing out, the circuit is open and the capacitor is disconnected. So it's mechanical, real-time feedback on a spinning shaft. That to me is just fascinating.

EW (00:48:57):

Yeah.

JF (00:48:57):

And these things last for so many years, it's unbelievable.

EW (00:49:02):

Okay. Nathan asks, "What is the easiest and cheapest prototyping material for non-MEs to use to build things like robot chassis or linkages that might have a motor attached to it?"

JF (00:49:16):

Well, I think it depends on what kind of capacity you want it to have. I mean, I think for me, wood is the cheapest material to work with, because it's just so widely available. There are so many tools available for cutting it. And so it's my favorite material. It's what I have my son use when he's making his little projects.

JF (00:49:39):

And he's working on a little CNC machine now, which just blows me away that he built that thing on his own, but he's making it out of wood and random mechanical parts that he finds in my shop...But yeah, to me, that's the best material to work with, especially if you're not machining.

JF (00:49:58):

But machining is more expensive anyway. You're working with aluminum and steel, but wood would be my first go-to and then maybe 3D printing might be my second choice.

EW (00:50:10):

Do you ever use cardboard, or foamboard or something like that?

JF (00:50:15):

I do for just getting the concept down in terms of if I'm just testing a linkage or some kind of simple joint or movement, something that maybe I want to see it in 2D first, or I just want to try out an idea.

JF (00:50:30):

But ideally it would be something just slightly stronger if you're going to put any kind of weight on it or again, I think it depends on what you want out of your prototype. If you just want to see the shape, then foam could work really well.

EW (00:50:45):

Going back to wood and CNC machine. Wood isn't exactly a stable material. Can you build precision things with a wood frame or out of wood?

JF (00:50:59):

You can, but it kind of depends on how you define precision. So usually my rule of thumb is if I want to measure it with calipers, and I'm trying to measure in thousandths of an inch, then you need to use something more stable than wood.

JF (00:51:15):

But if you can measure it with the tape measure, then you should definitely use wood. Wood is more than sufficient...I mean, the biggest thing about wood is that the moisture content affects its actual geometry.

JF (00:51:31):

So if it's a little bit more humid, it might 12 of a few thousandths. If it's really humid where you are, it might be 15 or 20 thousandths, but that would be the most variance I would expect from a piece of wood. So if your tolerance is larger than that, then wood is precise enough.

JF (00:51:49):

But that to me is the real balance in engineering. And I talk about this also in the last video, the 18 tips, that I try to design my components so that they require as little precision as possible. In fact, I think if your part needs to be machined on a CNC machine, I partially feel like I failed.

JF (00:52:08):

To me, the ideal part is a part that any random guy in the shop could grab a drill press and a handsaw or whatever, could use a grinder in his welder and make my part. So I start with that premise, and then I very grudgingly add CNC high-precision parts as I need them.

EW (00:52:30):

There's some value to that level of flexibility. Starting with high-precision parts and then trying to work out towards cheaper materials often doesn't work. It's easier to start with cheaper materials.

JF (00:52:43):

Absolutely. If you just start by thinking, "How precise does it really need to be? Could I make this with slots? Could I make this more flexible in other ways? Do I want this to have interchangeable parts?"

JF (00:52:57):

Sometimes what I say is, if I want to put a tolerance on a part, say I want it to be, I'm making up a number here, plus or minus ten thousandths. And then I ask myself almost immediately after I put that on the drawing, it's like, "Okay, if this part is 11 thousandths out of tolerance, do I really want him to remake this part?"

JF (00:53:17):

And then I keep expanding that question until I get to a point where I'm like, "Okay, he's going to have to throw that in the trash if it's bigger than that and make another one." When you get to that level, then you know you're at about the spot where you need to be to keep the cost down.

JF (00:53:30):

Because expensive parts means fewer sales. It means your manager's going to be mad with you. It means the machinist is going to have to spend more time making your part. It affects so many people, including the end user.

JF (00:53:46):

The best plan is a part that requires very little precision or no precision at all. I'd like for them to be able to just throw a dart at a wall and hit the right tolerance.

EW (00:53:59):

Well, since that's how I put my mechanical designs together, that seems right.

JF (00:54:07):

Yeah.

EW (00:54:07):

Is there anything you wish electrical and software engineers knew about mechanical design?

CW (00:54:12):

Hey, that's my question.

JF (00:54:15):

Well, I would say the most important thing to me where I've run into issues with the electrical is often the electrical is not done when the mechanical is almost done. If I could know in advance how big that part really is, this has happened to me a lot,...and it happens on both sides, right?

JF (00:54:35):

From a mechanical side, I might get further into the design and realize that something needs to be larger. But if you spec'd out a part that was small and then later on, you decide it needs to be bigger, that happens with electrical cabinets on some of the big industrial things that I make.

JF (00:54:51):

The guy might tell me the cabinet's 4x4, and I go, "Oh, I had to add all this stuff. So now it's 5x8." It's like, "Wait a minute. Where am I going to put that?" So to me, it's not so much what I want them to know, just that we've got to talk the entire time. "Let's keep in touch. Let me know when things are changing."

JF (00:55:11):

"Give me as much information as you can about the physical shape and constraints of your part." Hey, that reminds me of another example. I was working on this, well, I can just tell you. It was a rather large dredge, and I was designing this little support to hold on to a tilt sensor to measure the angle of the dredging arm.

JF (00:55:36):

So this thing is 200 feet long. We're talking about a very, very large dredge, and this tilt sensor is hanging off the back of it. So the part that I'm making is relatively small, but I want to give you a sense of the scale. The sensor was probably about the size of maybe a 15-inch computer monitor or something like that.

JF (00:55:54):

And so I designed the bracket. He just told me, "It needs to be mounted on the back." But then when he saw the design and it was already made, he said, "Oh, but it has to be oriented in a certain direction. Yet another thing that I didn't know in advance, so I've got the whole thing rotated 90 degrees from where it needs to be.

JF (00:56:15):

And I had to redesign the part, and then also have it remade. So just things like that, any details, anything that might be relevant to the mechanical design, let's talk about it early. And let's talk often. Because I love working with the electrical guys.

JF (00:56:28):

That's how I learned a lot of the electrical that I do now. I just walk out on the shop floor, and, "Hey, what is that? And what are you doing there, and why is it wired like that?" It's how I learned what terminal blocks were and all of the basics all the way up to the things that I do now.

EW (00:56:45):

It's funny how much the electrical engineers are in the middle between software and mechanical.

JF (00:56:51):

Oh, yeah.

EW (00:56:51):

I mean, I seldom get to talk to the mechanical engineers, because that part is done or just outside the scope of what I can modify. But you are writing software. Does that give you a different perspective?

JF (00:57:09):

I think so, in the sense that I'm just having a much deeper appreciation for how hard it is to write software...I mean, it is literally another language, right? Except your language teacher is this angry woman with a long stick, and she just slaps you on the hand, and tell you it's wrong.

JF (00:57:30):

She didn't tell you what's wrong. Just that it was stupid. Try again. And so that's the feeling that I have every time I get an error message and I don't understand what the error message is. I just want this program to work.

JF (00:57:42):

And it turns out that it could be something as simple as you capitalize a letter that shouldn't be capitalized,...but that's not made obvious in the process. So I don't know, I have a really healthy respect for programmers and how challenging and tedious it can be.

EW (00:57:56):

What language are you working in?

JF (00:57:59):

I'm trying to learn or use both Python and C++. So the C++ is helpful with programming the Arduino, and for projects where I use the Raspberry Pi, I can do more stuff with Python and also Python on the PC as well if I'm interfacing with the computer.

EW (00:58:19):

For your arm, what language are you planning?

JF (00:58:24):

Right now it's both, because I've got the software interface, which is in Python. And then that is talking to the Teensy 4.1...A Teensy is basically an Arduino on steroids for those who don't know. And so, it's a really fast Arduino.

JF (00:58:44):

And that's what I'm using to actually talk to the servo drives and actuate the motors. So I need something on the PC to talk to the Teensy, and the Teensy is programmed in C++, and then on the computer is Python.

EW (00:59:00):

It's tough to learn both at the same time, because they are -

CW (00:59:03):

Yeah, very different approaches.

EW (00:59:04):

- different enough. I mean, even just the compiling versus not having to compile, but being able to have files.

JF (00:59:13):

Yes. And yes.

CW (00:59:18):

So you've mentioned that you've learned a lot of things on your own through a lot of diligence, it sounds like. Do projects drive what you want to learn, or does what you learn drive new projects?

JF (00:59:31):

For the most part, it's the project. So I generally start with a thing I want to accomplish and then I seek out all the knowledge that I need to accomplish that project. So I generally want to learn just enough to get to the next step. And then I will abandon that learning path and get back on the path of making the thing that I want to make.

JF (00:59:52):

But I discover a lot of things along the way. So I may be learning for one purpose and then that can turn into a rabbit trail, which leads to more discovery. And as I'm learning more and more about thing "X", whatever it is, let's just say programming in this case, then I started seeing other applications.

JF (01:00:10):

So when I first started learning how to program in Python, I realized that ... I can make a user interface, literally a program that I could push buttons on the screen.

JF (01:00:24):

It's like, "Man, it would be great if I could control my table saw with a computer. How neat would that be to have the fence just go to the dimension I want every time and have the blade go up exactly the height that I want?"

JF (01:00:38):

And so that was the beginning of my CNC table saw project, which is a video on my channel. But that grew out of me wanting to learn Python, and then it exploded into other projects.

EW (01:00:50):

Learning that way, I mean, I do it too, but one of the downfalls of that is that sometimes you start to learn something, and then you go on to something else. And you don't realize that the next chapter in the book was, "Oh, but you don't have to do it the hard way. Here's the easy way."

JF (01:01:12):

Yeah. Well said. This is true.

EW (01:01:15):

Does that happen to you often?

JF (01:01:17):

I wouldn't say that it happens often,...because sometimes, yeah, I just don't know what I missed. But I have had it happen in situations where I go, "Oh, man." I'll see somebody else doing it the easy way. And then I realize like "Oh, I didn't even know that that was an option." I learned that with Python.

JF (01:01:37):

So when I first wrote the code, I essentially wrote out all these various functions, and several of them were very, very similar. And when I posted the video, I also posted a GitHub where people could download the code. And I got lots of compliments.

JF (01:01:54):

People was like, "Oh, this is your first program. You did a great job, but hey, there's this thing called classes that you can make. And...it would have simplified your code."

JF (01:02:04):

And they sent me an example, and I went, "Wow, that was probably a 10th the length of the program that I wrote. But there's just all these different functions that I don't know about. I don't know how to use." And yeah, I didn't learn that the first go around, but now I know that there's some new things to learn that could simplify my code.

CW (01:02:25):

That's a great thing about putting yourself out there with the project, and even though you're learning, putting everything you've done on GitHub, and allowing people to look at it. The downside of that is some people are probably not as nice, but having people say, "Oh, did you know about this," is kind of cool.

EW (01:02:42):

It's helpful.

CW (01:02:42):

Yeah.

JF (01:02:44):

Well, I mean,...I'd like to comment on that, because I think it's worth pointing out that I really feel like that scares a lot of people away.

CW (01:02:51):

Yeah.

JF (01:02:51):

Because there are people who are willing to share and they have interesting things that they're working on, but it's scary to put yourself out there on the internet when you don't feel like you're an expert in a particular thing.

EW (01:03:03):

Yes.

JF (01:03:03):

And in my case, where once I pass about 20 or 30,000 views, the audience starts to get really wide. And anybody, if there's an expert in the particular thing that you're working on, they're going to find your video somewhere in that crowd.

JF (01:03:20):

And like you said, they're not all nice. So I definitely get some really harsh comments from people who are just like, "Oh, you're an idiot. You should have done X, Y, Zs."

CW (01:03:28):

Yeah.

JF (01:03:28):

It's like, "But I didn't even know there was an X, Y, Z." I mean, I finished it. It works. I don't know what else to say.

JF (01:03:35):

So you kind of have to develop a tough skin, and be mentally prepared for the fact that there's going to be, I'm just going to call them jerks, for lack of a better word, that are just unnecessarily rude to people who have openly called themselves beginners, and just said, "I'm experimenting. I'm just learning. And this is what I came up with."

JF (01:03:57):

So it helps to come out with a decent dose of humility as well, because I've seen videos where people kind of present themselves as if they're an expert, and they're clearly not. When they're touching on things that I am an expert on. You go, "Ah,experts don't do it that way."

JF (01:04:14):

I don't comment very much at all on videos, but it can be done wrong from the presenter's perspective as well. Sometimes it's your attitude. But I think I do a decent job of being as transparent as I can.

JF (01:04:28):

And just saying, "Hey, this is where I'm at. This is what I know. I'm experimenting." Or, I don't know, but no matter how you come out, there's always going to be somebody who's a bit abusive.

EW (01:04:40):

And if they had said, "Do you know about X, Y, and Z? Because it's really cool." You might've actually listened to them, but when they start it with, "You're an idiot." Well, I have to say, I don't read any further, because I don't care what you think at that point.

CW (01:04:55):

Generally I stop reading at "Your." Because nothing good comes after that.

JF (01:05:02):

Yeah. By far, the tone makes a huge difference. And that can be difficult in text, because you don't have voice inflection. You can't see their face. But there is still a tone in text.

JF (01:05:16):

And so it a huge difference when somebody is clearly trying to be kind and just introducing you to things that they feel like maybe you haven't seen before, or they're trying to be helpful, and those who just want to be rude and insult you.

JF (01:05:29):

And sometimes I think people just want to try to impress others with how much they know.

EW (01:05:36):

Oh, yes.

JF (01:05:36):

They need that validation. And so I get that a lot too. Sometimes they'll even go so far as repeating something that I said in the video as if they said it.

JF (01:05:45):

I was like, "Yeah, but I actually talked about that in the video. You're not adding anything here by saying it again, but somehow you feel like you had to sort of add emphasis to what I said." I don't know.

EW (01:05:57):

And then when you make a joke on Twitter that is clearly a joke, and they say, "But this is how you do it." And I'm like, "No, I knew how to do it. That was why it was a joke."

JF (01:06:09):

Yeah. Sarcasm is, yeah. I am extremely sarcastic. So it's tough for me. A lot of my jokes come through in sarcasm. And some of them are bordering on you barely catch them. You can walk out of the room and go, "Wait, what did he say?"

EW (01:06:26):

Those are the best.

JF (01:06:26):

When that comes through in my videos, people don't always pick it up, and they take it very literally, what I said.

EW (01:06:38):

I understand that very well. Yes.

JF (01:06:42):

For sure.

EW (01:06:42):

So it would be really fun to work with you. And I hear you're hiring an intern.

JF (01:06:50):

I am. This is something I've been thinking about for quite a while. And I'd love to have someone helping me in the shop and also helping me with things like programming, possibly making some parts.

JF (01:07:01):

Ideally the candidate would be somebody who's stronger on the electrical and programming side and maybe has a little bit of mechanical design. But obviously that's asking a lot.

JF (01:07:13):

So I would say anybody in any of those categories should reach out to me. But yeah, I'm looking for some help. And I think it's an opportunity to share some of the skills that I have and hopefully help somebody else as well.

EW (01:07:27):

You said in the shop. Does that mean they have to be in a certain location?

JF (01:07:31):

Ideally North Alabama, near Huntsville, would be the place to be. Because some of this can be done remotely, but I think I'm going to lean towards somebody who I could actually see in person from time to time. But I'd be open to talking to people remotely. But the ideal candidate would be near Huntsville, Alabama.

EW (01:07:50):

Okay. We'll put a link in the show notes for that. Well, I don't want to keep you too long, because I think we're going to talk about ROS after this. And I'm pretty excited about that. So, Jeremy, do you have any thoughts you'd like to leave us with?

JF (01:08:04):

Wow. I would say the only thing that...I think is really important maybe, the final thought I want to leave people with is, try it. If you're interested in it, you want to learn about it, get the bare minimum things that you need, and go out, and give it a try. The worst possible thing that could happen is you might lose a finger -

CW (01:08:26):

[Laughter].

JF (01:08:26):

- or you land yourself in the hospital. Things can go wrong, but you just sort of have to mentally prepare yourself for the fact that I'm going to do my best to be safe. I'll do my homework, and then I'm going to try it. So try it.

EW (01:08:41):

That didn't go in the direction I expected. But I agree with the sum total of the message. Our guest has been Jeremy Fielding, contraption engineer. You can check out his YouTube channel by searching Jeremy Fielding, or we'll have links in the show notes.

CW (01:08:59):

Thanks, Jeremy. It was really fun to talk to you.

JF (01:09:02):

Thank you for having me.

EW (01:09:04):

Thank you to Christopher for producing and co-hosting. Thank you to our Patreon listener Slack group for questions. And thank you for listening. You can always contact us at show@embedded.fm, or hit the contact link on embedded.fm.

EW (01:09:21):

Now a quote to leave you with. Actually this one's from our guest, Jeremy Fielding, about his goals. "Draw them to engineering with amazing projects: Inspire them with ideas: Then teach them how to do it." Maybe we should add, "And don't cut off your finger?"

JF (01:09:40):

That might be a good addition. Yeah. Might be worth mentioning.