#robotics | Logs for 2016-09-30

Back
[00:05:40] <rue_house> oooo /tmp ran out of space
[00:05:46] <rue_house> thats why the video clipped
[00:05:47] <rue_house> damn
[01:30:18] <bkboggy> Does anyone know of a good introductory robotics book that includes discussions on forward and reverse kinematics? Something for a brain-dead person (that's what I feel like now)?
[01:31:12] <Jak_o_Shadows> aha.
[01:31:17] <bkboggy> I've got They of Applied Robotics: Kinematics, Dynamics, and Control (2nd Edition), but the author's writing style will give me a brain aneurysm..
[01:31:23] <bkboggy> Theory*
[01:31:24] <Jak_o_Shadows> I do not.
[01:31:31] <Jak_o_Shadows> Do you mostly cover serial manipulators?
[01:32:08] <bkboggy> For now? Mostly homogeneous transformation matrix stuff.
[01:32:46] <bkboggy> Here's the book I have for the class: https://www.amazon.com/Theory-Applied-Robotics-Kinematics-Dynamics/dp/1441917497/ref=sr_1_1?ie=UTF8&qid=1475215472&sr=8-1&keywords=theory+of+applied+robotics
[01:32:57] <bkboggy> But I need something to supplement it that doesn't make me feel like I'm retarded.
[01:33:22] <bkboggy> Mind you, I'm a 4.0 and almost done with my BS in CS... but... just something about this author and this professor.... all over the place.
[01:33:34] <bkboggy> Maybe it's just me, which is probably what it is.
[01:34:04] <Jak_o_Shadows> Nah. Teachers tend to suck
[01:35:17] <bkboggy> Well, I usually don't care, since I study on my own 99.99% of the time and always ahead of what would be taught in class... but my problem is that I do not have good knowledge of linear algebra beyond some basics from pre-cal, trig and some self-study. I'm working on it, but it's not where I want it to be yet, obviously.
[01:35:20] <bkboggy> So it makes everything harder.
[01:35:37] <bkboggy> They should make linear algebra a pre-req, but... who am I to say what sort of decisions should be made..
[01:35:58] <Jak_o_Shadows> Not sure you need too much linear algebra really. Not for using things anyway
[01:37:10] <bkboggy> Well, I spent entire last weekend teaching myself linear algebra basics, so it put me behind... now I am trying to catchup, and that's never a good thing.
[01:37:47] <bkboggy> Ordered myself this thing: https://www.amazon.com/Coding-Matrix-Algebra-Applications-Computer/dp/0615880991/ref=sr_1_9?ie=UTF8&qid=1475215775&sr=8-9&keywords=linear+algebra
[01:37:52] <bkboggy> Hopefully it'll help.
[01:38:38] <Jak_o_Shadows> What lin alg is there? Like, when I think lin alg, I think solving systems of equations, qr /lu decomp, or some of the controller stuff like the CARE equation and stuff.
[01:38:47] <bkboggy> matrices
[01:39:04] <bkboggy> operations on them
[03:23:33] <z64555> well, not just matrix algebra
[03:24:03] <z64555> linear algebra starts off with matrix algebra, and in fact the bulk of it is learning the algebra
[03:24:23] <z64555> but linear algebra is focused on solutions of systems of linear equations
[03:25:28] <z64555> such as row-echelon and reduced-row echelon form which can get values for multiple co-dependant variables
[10:52:54] <anonnumberanon> rue_house, I'll put full C code for your beacons challenge on my github as a first github post
[11:24:24] <anonnumberanon> what were the 8 angles again from yesterday's discussion?
[11:24:32] <anonnumberanon> mrdata, do you have them in your logs?
[11:28:40] <anonnumberanon> nvm got em
[11:47:45] <anonnumberanon> First these are the generated combinations: https://paste.debian.net/hidden/60095360/
[11:48:24] <anonnumberanon> Now to compute the best of them (should be easy at well from the algo i have on paper). Will do in an hour cause gotta sign some employment documents right now.
[11:51:00] <anonnumberanon> this is fun :)
[12:29:12] <veverak> I need neuron network
[12:29:14] <veverak> or, want one
[12:29:51] <veverak> *neural
[12:30:02] <Tom_itx> i need a 50kw laser
[13:07:41] <z64555> what I miss?
[13:09:47] <anonnumberanon> veverak, a portable kind, in C? if not, tensor flow library in Python
[13:10:15] <anonnumberanon> if portable kind in C I may or may not write one depending on interest
[13:10:23] <anonnumberanon> my interest at least, is high
[13:10:33] <anonnumberanon> okay, let's finish this beacons program...
[13:10:47] <veverak> anonnumberanon: both
[13:11:05] <veverak> I guess I want small effective one in raspberry for shortterm reactions
[13:11:16] <veverak> and big fat ass on computer somewhere on network
[13:11:18] <veverak> :)
[13:11:28] <z64555> no shorttage of those
[13:15:31] <anonnumberanon> veverak, that is way too big demand ;)
[13:15:42] <veverak> I know
[13:15:51] <veverak> hmm
[13:15:53] * anonnumberanon puts neural network library on todo-list anyway
[13:15:54] <veverak> chmm
[13:16:06] <veverak> anonnumberanon: with GPU acceleration on raspby!
[13:16:12] <anonnumberanon> oh god
[13:16:14] * veverak hides
[13:28:54] <mrdata> anonnumberanon, rue_house, since there are only 8 beacons and you want the best 3, there are 56 combinations; score them all
[13:29:44] <anonnumberanon> mrdata, yeah im doing that right now, amost done, jsut need to sort the final array and output the angles that have the most usefulness which is position 1 in the sorted array
[13:30:35] <mrdata> good
[13:37:44] <anonnumberanon> i mean position 0
[13:48:17] <anonnumberanon> the best combination of angle (there may be more equally as good is: 298.000000 17.000000 235.000000
[13:48:19] <anonnumberanon> :)
[13:49:36] <anonnumberanon> when drawn on paper it's not ideal heh but it does look like the three angles are pretty far appart
[13:49:49] <anonnumberanon> can someone make me a program that displays angles graphically?
[13:50:58] <mrdata> should be able to generate an SVG image
[13:52:52] <mrdata> anonnumberanon, how did you calculate the score
[13:54:02] <anonnumberanon> spread of first angle = abs(abs(angle 0 - angle 1) - 120)
[13:54:12] <anonnumberanon> add the three spreads
[13:54:22] <anonnumberanon> that's your final spread for the current combination
[13:55:55] <mrdata> https://developer.mozilla.org/en/docs/Web/SVG/Attribute/stroke-dasharray
[13:58:15] <mrdata> as you can see from this svg FAQ on how to draw lines, you can generate an array of lines easily in svg; then display in any web browser
[14:00:11] <anonnumberanon> That's kinda nice but still far from a solution :)
[14:00:42] <anonnumberanon> Maybe I just change the coordinates and it will work
[14:01:07] <mrdata> i'm not going to write code, sorry
[14:01:11] <anonnumberanon> sol
[14:01:13] <anonnumberanon> lol
[14:01:17] <anonnumberanon> im thinking about the code
[14:02:03] <anonnumberanon> the 5th type of line looks like it will show best in this application
[14:09:17] <mrdata> a refinement that might be appropriate is, there is an imprecision in the measurement of angles; so the line is wider as you go farther away
[14:09:52] <mrdata> but the bot is triangulating on its own position, so it ends up having a bounding box
[14:10:06] <mrdata> err, polygon
[14:14:34] <mrdata> this is calculable if you know the coordinates of the beacons
[14:19:07] <anonnumberanon> make a browser file and put this in it: https://paste.debian.net/hidden/1a92e1c3/
[14:20:36] <anonnumberanon> I don't like those angles lol.
[14:23:13] <anonnumberanon> In any case, what the heck hardware is he using to get them angles in the first place??
[14:25:31] <mrdata> he gave those angles as an example "hard" problem
[14:25:40] <mrdata> so they are hypothetical
[14:25:56] <mrdata> and the robot is out of bounds in this example
[14:26:15] <mrdata> when the bot is in bounds, the angles are a lot nicer
[14:28:07] <mrdata> gtg; ttyl
[14:40:08] <anonnumberanon> ill replace 3 of the angles by 120 to see if I get it as an answer
[14:42:43] <anonnumberanon> and no... it doesn't work
[14:42:47] <anonnumberanon> :(
[14:48:57] <anonnumberanon> haha a minor bug in my probram, forgot to rezero some variables at each loop
[14:50:45] <anonnumberanon> nope, that wasn't it...
[14:50:46] <anonnumberanon> sigh
[15:01:08] <anonnumberanon> ah found my problem (well, the genral location of it, that is)
[15:08:05] <anonnumberanon> Okay lol abs() does not work with floats I had to cast everything to int...
[15:41:48] <anonnumberanon> nah okay my algo was a bit wrong on the abs()
[15:42:12] <anonnumberanon> had to take the min between pairs of angles before doing abs() on their substraction
[16:03:41] <anonnumberanon> OKAY NOW IT WORKS
[16:03:59] <anonnumberanon> lol trig in programming can get hairy, my solution may even be inneficient...
[16:13:19] <anonnumberanon> rue_house,
[16:13:20] <anonnumberanon> the best combination of angle (there may be more equally as good is: 298.000000 17.000000 235.000000
[16:13:30] <anonnumberanon> give me new angle sets so I can test them
[16:13:48] <anonnumberanon> I'm pretty sure this program is bulletproof now.
[16:39:15] <Snert_> give it to a noob and see if it works :)
[16:39:27] <Snert_> that's the shotgun test
[16:44:41] <anonnumberanon> I highly agree with this practice.
[16:46:09] <anonnumberanon> Although we're not dealing with technologies that noobs can usually use, in this channel among others.
[16:46:44] <Snert_> amen :)
[16:49:04] <anonnumberanon> anyway sup Snert_ what robot are you working on?
[16:49:06] <anonnumberanon> if any
[16:49:24] <anonnumberanon> (it's okay to say you're working on yourself :3)
[16:49:52] <Snert_> managed to collect all the parts I need for stage 1.
[16:49:53] <robopal> like me
[16:49:59] <Snert_> haven't built it yet.
[16:50:26] <Snert_> Stage 1 will be 3 joints (or steppers) laid out on a board under arduino control.
[16:50:39] <Snert_> using absolute gray code encoders.
[16:51:31] <Snert_> maybe 2 incremental encoders run by decoding chips instead of an arduino.
[16:51:50] <Snert_> I don't beleive in having an arduino ride herd on the count.
[16:52:08] <Snert_> when one can just ask an absolute encoder what it's position is.
[16:52:23] <Snert_> and be fuck done with it.
[16:53:21] <Snert_> these 1024 ppr encoders are cheap on ali.
[16:54:24] <Snert_> albeit used, but cheap.
[17:01:16] <anonnumberanon> cool, is it some sort of machine you are making?
[17:01:41] <Snert_> end result would be a 3 or 4 dof arm.
[17:02:10] <Snert_> initially, the arm will be laid out horizontally on a piece of plywood.
[17:02:34] <Snert_> in order to avoid mechanical stresses whilst I get other things worked out.
[17:03:13] <Snert_> later on...it will go upright and get strong enuff motors to support it's weight and arm/moment stresses.
[17:04:20] <Snert_> like a couple of gear head steppers at the base of the arm for the shoulder joint.
[17:05:02] <Snert_> I'll have 3 dials.
[17:05:11] <Snert_> dial each joint into position.
[17:05:20] <Snert_> hit the read button...stores the position.
[17:06:05] <Snert_> after that I'll check into IK and some sort of learning thing where it has to predict how fast to go to get to position.
[17:06:28] <Snert_> but not until I actually have something that moves and works.
[17:15:10] <Snert_> but lately, been getting sidetracked into Axis security cameras.
[17:15:25] <Snert_> it's a cool study in machine vision.
[17:17:29] <Snert_> features like object removed, tripwire, follow me .... all these features present a boatload of machine vision things to ponder.
[17:17:54] <Snert_> it's nice to have a working example of these things.
[18:43:43] <anonnumberanon> yep Snert can't wait to see some of that stuff
[19:06:29] <Snert_> It will be very simple.
[19:06:53] <Snert_> I'm building a XNOR gate grey code to binary converter first.
[19:07:13] <Snert_> zero uC code to convert from grey to binary.
[19:08:05] <Snert_> cuz in my test and trubbleshooting world I want coding to not a part of the possibilities for error.
[19:09:10] <Snert_> I want the position of the grey code encoder read out in binary on BCD segments.
[19:09:20] <Snert_> 0-1023.
[19:09:26] <Snert_> no code needed.
[19:10:41] <Snert_> so the arduino reads the encoder and knows where it is...then manipulates the motor to where it needs to be.
[19:32:08] <anonnumberanon> uhm ur still using an arduino!!!
[19:34:08] <Snert_> yes, but the code is minimized and it is known certain that if the encoder is putting out the wrong count then the problem cannot be coding.
[19:34:31] <Snert_> becaude it's hardware decoded into BCD on 7seg displays.
[19:35:01] <Snert_> therefore, the encoder itself is most likely bad.
[19:35:39] <Snert_> but this is just for the test/dev board.
[19:36:03] <Snert_> later on I may use an arduino to do the grey to binary translation.
[19:37:43] <Snert_> I see the advantages of code as opposed to hardware, yes.
[19:38:33] <Snert_> but at first I'm looking to minimize the interactions twixt the hardware and software.
[19:40:54] <Snert_> I think it's kind of an ass way to do things. But I'll start that way anyways.
[19:43:42] <Snert_> I can use the experience with optos and PCB layout programs and dealing with getting boards made....the whole 9 yards.
[19:44:04] <Snert_> 1 little piece at a time.
[19:47:21] <Snert_> you guys may have done all that.
[19:47:40] <Snert_> but after 35 years on an electronics bench I have never once made or laid out a PCB.
[19:48:39] <Snert_> I am literally the mechanic that never works on his own car.
[19:57:34] <anonnumberanon> i havent drawn a board oersonally but i got eagle and stated planning to make one
[19:57:52] <anonnumberanon> just to put on resume and to add to my portfolio
[19:58:17] <anonnumberanon> but the way i see it, making nice enclosures is also very important
[20:11:13] <rue_house> fight with making a 555 led flasher, then try something real
[20:37:43] <anonnumberanon> rue_house i expect feedback on beacons project i was successful
[21:42:49] <rue_bed2> I'll be back to it in a while
[21:43:04] <rue_bed2> overslept, now I need a nap
[22:30:00] <rue_house> https://www.youtube.com/watch?v=WMJKUS0BqGo
[22:31:13] <Jak_o_Shadows> Can you measure up to the whole torque of the servo?
[22:31:24] <Jak_o_Shadows> Cause I'm just thinking of how you'd do torque control.
[22:31:50] <rue_house> you have the controller back off the position if the torque is too high
[22:33:08] <Jak_o_Shadows> mmm
[22:33:13] <Jak_o_Shadows> Have you calibrated it yet?
[22:33:20] <rue_house> I think a control pulse resets the drive pulse, so you dont ahve to wait for the whole drive pulse to finish before deciding the torque is too high and starting a new position pulse
[22:33:29] <rue_house> why would I calibrate it?
[22:33:41] <rue_house> its a percentage of full servo torque
[22:33:46] <rue_house> or more
[22:34:08] <rue_house> yea, in the video you can see the current meter on the power supply too
[22:34:18] <Jak_o_Shadows> The "or more" makes me want to calibrate it.
[22:34:30] <Jak_o_Shadows> Not so much the current-pulse relationship, the torque-pulse relationship
[22:34:45] <rue_house> it'd be different on every servo
[22:34:57] <Jak_o_Shadows> well, yes.
[22:35:45] <Jak_o_Shadows> Also, 4:38 :D
[22:37:02] <rue_house> mmm continious diagnostics.
[22:38:34] <rue_house> need to remmeber to put some 10R resistors in the drawr
[22:39:27] <Jak_o_Shadows> I bought 1200 resistors the other year, which is handy.
[22:39:37] <Jak_o_Shadows> Slowly stocking up on stuff
[22:40:43] <rue_house> ... thats only 12 bags of 100
[22:41:08] <Jak_o_Shadows> Nah, it's bags of 50, or maybe 30.
[22:41:22] <Jak_o_Shadows> Don't need much else for the prototyping stage though.
[22:41:29] <Jak_o_Shadows> Once I have a circuit working, I can order in
[22:42:16] <rue_house> most of my bags are of 100
[22:42:22] <rue_house> I have...
[22:42:48] <rue_house> black, brown, red, orange, yellow, green/blue... 6 boxes of bags
[22:43:16] <rue_house> each prolly has 20 or so
[22:43:40] <rue_house> 12000
[22:43:43] <rue_house> ooO!
[22:44:32] <Jak_o_Shadows> aha
[22:45:14] <rue_house> well, and then I prolyl have like 4000 of a few values
[22:48:51] <rue_house> "the things people bring me"
[22:49:00] <rue_house> not usefull values tho, like 120k
[22:51:42] <Jak_o_Shadows> TBH rue, I'm tempted to send you a camera tripod.
[22:51:45] <rue_house> I wonder how i can be usefull tonight
[22:51:58] <rue_house> I really shoule make a camera robot
[22:52:06] <Jak_o_Shadows> aha.
[22:52:14] <rue_house> I have a number of robot arms
[22:52:22] <Jak_o_Shadows> Yeah. Do it.
[22:52:43] <Jak_o_Shadows> Make it like, follow a laser pointer or something.
[22:53:57] <rue_house> well, that said, a programmable tilt and pan would be fine
[22:56:07] <Jak_o_Shadows> TBH, manual control of each joint would probably work, with practice.
[23:06:49] <rue_house> https://www.youtube.com/watch?v=FTtGxaTo2T8
[23:20:12] <rue_house> ok, where was I
[23:20:22] <rue_house> I was trying to figure out what I could do today thats usefull
[23:20:27] <rue_house> and I got stuck on youtube
[23:36:02] <rue_house> anonnumberanon,
[23:37:16] <rue_house> you realize, that if you have one point out by +180 and another out by -180, they will screw up the weighing alg?
[23:38:09] <rue_house> I'm just adjusting and entering it
[23:39:19] <rue_house> heh, it fails in the same way mine does
[23:41:41] <rue_house> .. wait a sec
[23:43:16] <rue_house> anonnumberanon,
[23:43:18] <rue_house> float angles[] = {340.000000, 322.000000, 89.000000, 11.000000, 308.000000, 89.000000, 102.000000, 68.000000, };
[23:45:25] <rue_house> http://ruemohr.org/~ircjunk/images/anon.png
[23:45:32] <rue_house> not the best choice
[23:46:08] <rue_house> if its of any consolation, my code has the same issue
[23:47:04] <Jak_o_Shadows> What's the problem with it? I mean, you're just doing it exhaustively.
[23:47:11] <Jak_o_Shadows> So it's the objective function?
[23:48:25] <rue_house> the ideal set of beacons has the most angle between them
[23:48:33] <rue_house> preferably 120 degrees
[23:48:53] <rue_house> there is another way of doing this that my brain is *almost* clicking into
[23:49:34] <rue_house> part of the problem is that you have to not consider the order of the beacons, but you have to respect the sign of the angle between them
[23:50:07] <rue_house> actaully, it looks like anons code might find the exact opposite of what we want
[23:53:30] <rue_house> nope
[23:54:40] <Jak_o_Shadows> So the problem is with angles that cross teh 360-0 mark?
[23:54:53] <rue_house> oh they are random, they will be all over it
[23:55:02] <rue_house> the angles themselvs are 0-360
[23:55:15] <rue_house> but the set may lap over the 0-360 mark