#robotics | Logs for 2016-09-24

Back
[00:01:26] <z64555> ok now I see
[00:22:11] <z64555> man, I've got a lot of ground to cover if I seriously want to be a robotics engineer
[00:53:25] <ace4016> "robotics engineer"
[00:55:32] <z64555> combination of electrical/electronic engineering and mechanical engineering. emphasis on controls systems and their implementation
[00:56:27] <z64555> which is a step further from being a controls systems engineer, basically
[00:57:36] <ace4016> it's just one of those things where the field is pretty young and the "specialization" isn't enough to justify clarifying it
[00:57:57] <ace4016> young not in age, but use and current state
[00:58:30] <ace4016> there's also a lot more that goes into making useful robots than what EEs and MEs contribute :P
[00:59:16] <z64555> that's getting into business, marketing, economics, and a bit of the social sciences
[00:59:39] <z64555> oh, and industrial engineering, w/e that really is
[01:00:11] <ace4016> you can replicate the 5 core engineering fields in robotics pretty easily as you'll rarely get a mass of people enough to fill on knowledges required
[01:00:31] <ace4016> well, we can probably exclude civils...useless bums
[01:00:32] <ace4016> :P
[01:01:27] <z64555> they work transportation and city management
[01:02:34] <z64555> they don't really apply to the robotics field unless they're helping with a excavation bot or something
[01:03:06] <Jak_o_Shadows> Civies just work with concrete yeah?
[01:03:11] <Jak_o_Shadows> That's all they do right?
[01:03:33] <z64555> pretty sure that's not the only thing they do
[01:03:54] <theBear> civvies is what you wear when you're not a army man
[01:03:57] <z64555> US Army Corps of Engineering, for example, are Civvies
[01:03:58] <theBear> crazy foreigners
[01:04:11] <theBear> us army corps of engineering are oxymorons
[01:04:26] <z64555> shh, don't tell them that :P
[01:08:33] <ace4016> lol
[01:08:34] <theBear> i kinda assumed they wouldn't be part of the conversation <grin> woopsey
[05:17:37] <deshipu> veverak: well enough to tell if it's loaded or not
[05:18:04] <theBear> just look down the barrel
[05:19:42] <veverak> deshipu: hmmm
[05:32:25] <anonnumberanon> we make, they defuse Noah'm sayan?
[05:33:13] * veverak needs to test alternatives
[05:33:34] <veverak> have some nice way to determine how each leg of robot is loaded would be ice
[05:34:40] <anonnumberanon> load on a foot or load on a hinge/join?
[06:04:00] <veverak> load on the leg as whole
[06:04:17] <veverak> I mean, each leg should support 1/4 of weight for quadruped
[06:04:36] <veverak> I would like to have information eventually about how much is each lug supporting just now compared to others
[06:05:07] <veverak> HOW it's calculated, either on joints, or foot, should not really be the problem
[06:06:15] <Jak_o_Shadows> Hmm. How would you do that
[06:06:33] <anonnumberanon> Ah so you're saying you have solutions for measuring the loads on joints or feet then, I see. You're in good shape.
[06:06:43] <veverak> pressure sensors on the foot, or compare how much current are servos taking
[06:06:47] <veverak> anonnumberanon: I don't have solutions
[06:06:50] <veverak> :D
[06:06:54] * anonnumberanon wonders off to watch AI Frame videos on Youtube.
[06:06:54] <veverak> I am thinking about what to use
[06:06:57] <Jak_o_Shadows> I imagine to calculate it analytically, without sensors, is some variant of simultaneous equations
[06:08:06] <anonnumberanon> You could have a gyro and calculate from that. I think that would be very accurate to calculate the force on each leg.
[06:08:34] <anonnumberanon> But you do have to sit down for a few hours and do adult math.
[06:08:49] <veverak> from gyro ?
[06:09:35] <Jak_o_Shadows> From an accelerometer would be easier.
[06:09:38] <anonnumberanon> Oh nevermind that was a stupid idea. I was thinking that the body of the quadruped moves according to the positions of the legs.
[06:09:47] <Jak_o_Shadows> But surely there is a method analytically. Which I want to figure out
[06:10:18] <veverak> anonnumberanon: I was thinking of measuring laod of servos on each leg
[06:10:21] <veverak> *load
[06:10:27] <veverak> either voltage or current
[06:10:37] <Jak_o_Shadows> current
[06:10:49] <anonnumberanon> So you would need digital servos yeah, not the regular ones that don't pass data.
[06:10:58] <veverak> anonnumberanon: or hack the regular ones
[06:11:00] <veverak> :)
[06:11:21] <anonnumberanon> sure, find how they do force feedback
[06:15:04] <veverak> meantime, is here someone that understands covariance matrixes properly?
[06:15:28] <veverak> I mean, i have arm on joint, I know angle of the joint, it's variance and length of the arm
[06:15:42] <veverak> and I would like to get covariance of that arm tup
[06:15:45] <veverak> *tip
[06:22:50] <Jak_o_Shadows> What, you're taling about errors?
[06:23:25] <veverak> +-
[06:23:48] <theBear> i'm not :)
[06:25:02] <Jak_o_Shadows> I dunno what it is, but I doubt it's linear
[06:25:09] <Jak_o_Shadows> Course, you could be linearising it
[06:26:06] * veverak thinks knows what covariance matrix should be
[06:26:13] <veverak> but, I am not exactly sure how to get it
[06:39:52] <veverak> hmm
[06:40:14] <veverak> ok, I think I cracked for my simple case
[06:40:32] <veverak> now I need to find out how to put multiple matrixes in chain
[06:46:51] <veverak> it seems it can be just summed together
[06:46:58] <veverak> nah, have to find somebody that understands this
[06:50:12] <anonnumberanon> I can try.
[06:50:24] <anonnumberanon> i'm supposed to know this stuff
[06:51:06] <veverak> http://www.intechopen.com/source/html/49919/media/image28_w.jpg
[06:51:15] <veverak> anonnumberanon: let's say I have 2 DOF arm with single-axis joints
[06:51:21] <veverak> and know all the dimensions
[06:51:36] <veverak> and for each joint, I know it's angle and variance
[06:51:53] <veverak> so, for reach joint I can calculate covariance matrix for position at that part "tip"
[06:52:00] <veverak> but how to merge them for entire arm?
[06:52:15] <anonnumberanon> What is the variance?
[06:52:16] <veverak> I mean, finall question is: "Where is end of the arm, and what's it's covariance matrix?"
[06:52:29] <veverak> +-2 degress I would guess :D
[07:02:14] <SpeedEvil> I would multiply the gaussians
[07:02:23] <SpeedEvil> I don't know if that's the right approach though
[07:02:38] <veverak> not sure either
[07:02:48] <veverak> imho it should be either sum or multipliation
[07:02:57] <SpeedEvil> try both
[07:02:58] <veverak> maybe weighed one
[07:03:00] <veverak> yeah
[07:03:06] <SpeedEvil> it can't be sum
[07:03:24] <veverak> hmm
[07:04:51] <veverak> SpeedEvil: yeah, multiplication makes more sense
[07:06:59] <anonnumberanon> i'd like to understand your challenge
[07:08:13] <anonnumberanon> so in that diagram there are angles, lengths and one weight?
[07:08:21] <anonnumberanon> at the load?
[07:08:59] <veverak> ok, so practical need:
[07:09:26] <veverak> I will move 3DOF robotic arm, and it can happen that it will stop because it touched something. (perfectly normal case)
[07:09:49] <Jak_o_Shadows> Totally won't be sum
[07:10:03] <Jak_o_Shadows> If you're covariance is small enough, because of the small angle approximation, could just be multiply
[07:10:15] <veverak> point is, that if this happend on position where it shoudln't, I should send my "planner" info "there is something at position X,Y,Z"
[07:10:40] <veverak> like, unexpected book on the floor for example
[07:10:48] <anonnumberanon> okay so that's distance sensors and touch sensors..
[07:10:55] <veverak> for this to work, I need to send [x,y,z] with matrix covariance
[07:11:03] <veverak> because, I have 3 joints
[07:11:10] <veverak> each have angular position
[07:11:16] <veverak> but, also variance for that position
[07:11:22] <veverak> (and with PWM servos that is really noticeable)
[07:12:05] <anonnumberanon> "for this to work, I need to send [x,y,z] with matrix covariance"
[07:12:14] <veverak> I can calculate covariance matrix for 1DOF, I suppose that if I get it for each joint, it's just question of properly merging it"
[07:12:20] <anonnumberanon> x, y, z is just an array it's not really a matrix
[07:12:25] <veverak> Jak_o_Shadows: sounds cool
[07:12:30] <veverak> anonnumberanon: yeah?
[07:12:30] <anonnumberanon> 1 by 3 matrix, yeah, sure
[07:12:33] <veverak> like, and? :D
[07:12:35] <veverak> I mean
[07:12:49] <veverak> I send position of the tip of the arm where was something detected
[07:12:53] <veverak> and matrix covariance
[07:12:57] <anonnumberanon> you need to send position in space you mean? the x, y, z?
[07:13:02] <veverak> yeah...
[07:13:40] <anonnumberanon> what is your "matrix covariance" , is it a matrix of covariances, or the whole covariance of the matrix
[07:13:41] <anonnumberanon> ?
[07:14:43] <anonnumberanon> you're using variance and covariance terms so that's confusing
[07:15:01] <veverak> variance is one variable
[07:15:20] <veverak> covariance matrix is for multiple values?
[07:15:42] <veverak> yeah, I meant "covariance matrix" entire time, sorry
[07:17:22] <anonnumberanon> lol
[07:17:25] <anonnumberanon> "also known as dispersion matrix or variance–covariance matrix"
[07:17:29] <anonnumberanon> https://en.wikipedia.org/wiki/Covariance_matrix
[07:17:33] <anonnumberanon> from this^
[07:17:38] <anonnumberanon> this is already painful
[07:18:15] <anonnumberanon> can we go over your goal again by the way? so when your arm touches an object, do you already know the arm position?
[07:18:23] <anonnumberanon> (you should)
[07:18:24] <veverak> yeah
[07:18:31] <veverak> I know at what angle each joint is
[07:18:47] <anonnumberanon> but then you say you want to position a book on a map in a room?
[07:18:57] <veverak> that was just example...
[07:19:27] <anonnumberanon> yeah but that is more meta, the map of the environment where the robot is, vs the positions of the legs..
[07:19:38] <anonnumberanon> I don't really see a direct relationship or a use case.
[07:19:51] <veverak> well
[07:20:03] <veverak> let's say your robot is blind and you have empty map
[07:20:13] <veverak> and only sensor it got it's at the tip of it's legs
[07:20:22] <veverak> which is touch sensor
[07:20:26] <anonnumberanon> okay im trying to imagine
[07:20:35] <anonnumberanon> and you're making the map, as an ultimate end goal?
[07:20:39] <veverak> if you can get position of that tip in space
[07:20:49] <veverak> you can than go around , touch things with legs
[07:20:59] <veverak> and than based on information from that create the map of your surroundings
[07:21:03] <veverak> anonnumberanon: more or less yes
[07:22:10] <veverak> and, for that to work, you need to know where the tip of the leg is when the sensor on the tip is pressed
[07:22:32] <veverak> which should always be position AND some way to say how precise that position is
[07:23:21] <anonnumberanon> a (blind) human would be able to do something like that by memorizing what it touches and where around him he touched it, however he would need to be careful when spinning around by moving its feet, to make sure he does it very cautiously, with right angles
[07:23:41] <anonnumberanon> because there is no "frame of reference"
[07:23:47] <veverak> yeah
[07:23:52] <veverak> but that was example
[07:24:04] <veverak> practically, this should be just one of the ways to get information about your surrounding
[07:24:48] <anonnumberanon> bats have waves they send that come back and know exactly where they are
[07:24:54] <anonnumberanon> kind of like a lidar
[07:25:04] <veverak> reason I worry about this is to properly design algorithm that makes the robot walk
[07:25:46] <veverak> it should be able to react properly when it says for example "put leg at position [0,0,0]" and reality is that tip of the leg was pressed at "[0,0,10]"
[07:26:10] <veverak> proper reacton is to put mark in the map that there is something on [0,0,10]
[07:26:22] <anonnumberanon> well walking is just one module, go forward or backward, left or right, spin 45 degrees clockwise, counter clockwise, that's just one module, it's to move in your reference frame, or the "map", that map doesn't exist and needs to be created
[07:27:13] <anonnumberanon> there will be noise, as in when you spin you may be spinning 80 degrees when you meant to do 90 degrees, but with a correcting method, that should not be a major issue
[07:27:25] <veverak> yep, that's not what I worry about know :D
[07:27:28] <Jak_o_Shadows> yOU COULD JUST MOVE in very small steps
[07:27:46] <veverak> Jak_o_Shadows: https://www.youtube.com/watch?v=CoL8Gtvxfl0 like this?
[07:27:48] <veverak> :)
[07:29:21] <anonnumberanon> veverak, i still haven't framed the problem, as in what needs to be calculated
[07:30:06] <veverak> again, covariance matrix for tip position for leg
[07:30:08] <veverak> :)
[07:31:26] <anonnumberanon> why do you need fancy covariance matrix? you know the angles, calculate x, y, z from that with simple trigonometry
[07:31:31] <veverak> yeah
[07:31:38] <veverak> that's what I know and not the problem
[07:32:01] <Jak_o_Shadows> Yeah. You really do want force feedback servos
[07:32:13] <Jak_o_Shadows> That way you can know where you are, and when it hits.
[07:32:17] <veverak> problem is that it's different case of the tip of the leg is under the robot
[07:32:21] <veverak> or streteched
[07:32:25] <Jak_o_Shadows> Failing that, I would take lots of little tiny little steps, and stop when I hit an object
[07:32:49] <veverak> Jak_o_Shadows: I've got way to simulate that somehow with pwm servos
[07:33:00] <Jak_o_Shadows> You can still take lots of little steps
[07:33:05] <veverak> which I do
[07:33:08] <veverak> in a way...
[07:33:38] <anonnumberanon> veverak> that's what I know and not the problem
[07:33:56] <anonnumberanon> what is the problem?
[07:34:02] <veverak> how to get the covariance matrix
[07:34:04] <veverak> again
[07:34:06] <veverak> ...
[07:34:11] <anonnumberanon> have touch sensors on all sides of each foot of each leg
[07:34:34] <veverak> I know the angle of each joint
[07:34:36] <veverak> but
[07:34:39] <veverak> each joint has a backlash
[07:34:40] <anonnumberanon> now that's now a problem, that's "how to use method x to solve something (which is not told)"
[07:34:49] <Jak_o_Shadows> How much backlash?
[07:35:03] <veverak> that propagates to the tip of the leg
[07:35:17] <veverak> Jak_o_Shadows: imho with PWM servos you can get upto +-3 degrees?? (depends on the servo)
[07:35:31] <anonnumberanon> You're going to get spheres around each tip. Spheres that correspond to where the contact may have occured.
[07:35:33] <anonnumberanon> Correct.
[07:35:39] <veverak> +- yeah
[07:35:45] <veverak> that's exactly what covariance matrix describes
[07:35:45] <anonnumberanon> That sphere is the region where it may have touched.
[07:36:09] <SpeedEvil> It's not a sphere
[07:36:32] <SpeedEvil> It's only a sphere if the leg joints happen to be orthogonal
[07:36:32] <anonnumberanon> what is it then
[07:36:40] <veverak> elipsoid
[07:36:46] <Jak_o_Shadows> That, I suppose, is what the covariance matrix gives you
[07:36:52] <Jak_o_Shadows> But realistically, why do you need to know?
[07:36:53] <veverak> yep
[07:37:44] <Jak_o_Shadows> Will knowing the covariance matrix help your processing it?
[07:37:47] <veverak> yep
[07:37:51] <anonnumberanon> the thing is because you have this data, you can kind of have more space in between objects as you are traveling in the map
[07:38:24] <veverak> Jak_o_Shadows: where the leg touches the ground is feedback for the map
[07:38:34] <veverak> and it's actually different case if the leg is under the robot
[07:38:39] <veverak> or stretched far away
[07:38:44] <veverak> stretched -> unprecise
[07:38:45] <veverak> :)
[07:38:49] <Jak_o_Shadows> ah, yes.
[07:38:55] <Jak_o_Shadows> But ultimately, does it make a difference?
[07:39:33] <anonnumberanon> Okay has this been done yet ?
[07:39:46] <veverak> anonnumberanon: I am pretty sure somewhere yeah
[07:41:28] <veverak> Jak_o_Shadows: it could have
[07:41:35] <veverak> depends on the state of other things
[07:42:15] <anonnumberanon> everything depends on everything so how can you remove dependancies to make the problem less complicated?
[07:42:25] <anonnumberanon> by dependancies i mean dependant variables
[07:42:40] <anonnumberanon> even just, variables
[07:42:45] <anonnumberanon> opposed to constants
[07:43:01] <veverak> well, idea for the project is to think about everything
[07:43:24] <veverak> and made it in a way that a lot of those things can be lately added to the complex
[07:44:12] <anonnumberanon> I would make a quick 3D engine to visualize it and do everything simulated first.
[07:44:18] <veverak> I do
[07:44:20] <veverak> :D
[07:44:25] <veverak> that's the purpose of ROS
[07:44:27] <veverak> ;)
[07:44:35] <anonnumberanon> robot operating system?
[07:44:37] <veverak> yep
[07:44:50] <veverak> anyway, I found out that best answer for complexity is to divide it into simple steps and combien them
[07:44:53] * veverak loves OOP
[07:47:22] <SpeedEvil> Done right, with a constrained model set out well in front
[07:47:40] <theBear> anonnumberanon, when everything depends on everything... sounds like a chicken egg situation to me <grin> https://www.youtube.com/watch?v=eNPyY6q4mTA&feature=youtu.be&t=45
[07:48:22] <veverak> Jak_o_Shadows: anyway, practicall use case is: let's say that map things that ground is at [0,0,5], leg touches the ground at [0,0,0]
[07:49:13] <veverak> if you know that leg position is +- 10 on 'z', it's OK
[07:49:24] <veverak> if you know that it's +-1mm on 'z', something changed
[07:51:37] <veverak> P.S: it's coded in a way that position from planner to touch the ground is always considered more like "direction", than specific position
[07:52:01] <veverak> leg goes down in a way "go until tip is pressed"
[07:53:11] <anonnumberanon> you also needs sensors on the sides of the legs
[07:54:36] <anonnumberanon> veverak, what told you a covariance matrix would be useful for this? also what is "this"?
[07:55:42] <veverak> it's used everywhere in ROS for things that ... "Estimates"
[07:55:49] <veverak> yeah, let's say estimates
[07:56:30] <anonnumberanon> so what does it do?
[07:56:40] <anonnumberanon> gives you regions, point clouds?
[07:57:00] <veverak> http://www.lucidarme.me/?p=946
[07:57:35] <anonnumberanon> thanks
[07:57:37] <anonnumberanon> ill read now
[07:57:46] <veverak> it more or less tells the shape of gaussian
[08:00:37] <anonnumberanon> veverak, what data do you have and what data do you want to get?
[08:00:59] <veverak> detach
[08:01:06] <veverak> anonnumberanon: P.S: do you realize you asked this 7th time?
[08:01:34] * veverak really needs to go
[08:01:40] <anonnumberanon> so you have the tip's [x, y, z] and you have a deviation of [a, b, c]. The deviation could be "up to" +a or "up to" -a.
[08:01:48] <anonnumberanon> Do we agree so far?
[08:02:28] <anonnumberanon> <veverak> anonnumberanon: P.S: do you realize you asked this 7th time?
[08:02:45] <anonnumberanon> well yeah I've asked all these times so I'm starting to lose my patience
[08:12:52] <anonnumberanon> for those who want a good intro to covariance matrices search for Zicheng Hu on the following page: https://www.quora.com/Principal-Component-Analysis-What-is-the-intuitive-meaning-of-a-covariance-matrix
[08:28:14] <ace4016> hrm, not quite sure he has the best answer in that thread actually
[08:50:35] <anonnumberanon> fast enough and visual enough response to make me understand that first a covariance matrix needs be built from the dataset
[08:58:06] <theBear> anonnumberanon, some people just don't wanna help you help them :(
[09:09:35] <anonnumberanon> theBear, yeah that's okay though
[09:09:46] <anonnumberanon> made me do a matrix multiplication
[09:10:03] <anonnumberanon> reminded me I should never forget to practice
[11:14:19] <z64555> covariance mentioned. doing kalman filtering?
[11:32:08] <iztech> hi everyone does anyone have a great source for lipo batteries 3.7 would suffice. I have to purchase about 100 of them.
[11:50:28] <robopal> 100!
[11:52:50] <z64555> I'd suggest a wholesale supplier such as digikey, mouser
[11:53:53] <z64555> You'd be looking for the single-cell type
[12:06:17] <anonnumberanon> iztech, what country are you in?
[12:07:02] <anonnumberanon> I buy from Glacier Batteries but I don't know how many they have.
[12:59:41] <SpeedEvil> '100 batteries' - 10mAh, 10kAh?
[13:20:38] <theBear> .1k <grin>
[13:20:47] <theBear> .1kBa
[13:32:26] <rue_house> our axies are x, y, z
[13:32:39] <rue_house> but what about the first hyperaxis?
[13:32:40] <rue_house> w?
[13:33:01] <rue_house> were not moving forward, were looking back?
[13:40:12] <theBear> forget the c funk, this is the b funk
[13:40:50] <theBear> looking further back than anybody has before ..... "i can help.. i'm FROM the past, remember." "everybody is !" "yeah, but not as far back as me !"
[13:42:30] <rue_house> hmm
[13:42:44] <rue_house> dear god man, were ALL from the past
[13:43:46] <rue_house> I'm gonna call the first hyperdimention w
[13:44:10] <rue_house> and state that z is the first axis, and we just been looking at it backwards the whole time
[13:46:23] <rue_house> so a hypercube has 8 intersecting planes, +w, -w, +x, -x, +y, -y, +z, -z
[13:46:54] <rue_house> there are 24 verticies, with each plane having 6
[13:48:03] <rue_house> dear god I have to print antoher hypercube
[15:30:15] <rue_house> hmm
[15:30:19] <rue_house> what was that
[17:12:48] <anonnumberanon> all i hear is hey i want to time my fan by only looking athe voltage and or current
[17:12:48] <anonnumberanon> which seems possible
[17:19:51] <theBear> mmm, that's the spirit ! nice work, you've bolstered my confidences (when i do my "break the rules and win" thing that i do a bit these days, i gotta be mr confidence-man or i'll flip between ideas without doing ANYTHING forever.... note this IS a forever kinda length thing we talkin here, but for different reasons that are less unacceptable than indecision :] )
[17:23:12] <anonnumberanon> You could take a "dumb approach" by studying the signals at ~4 different speeds and see if you can find patterns.
[17:23:20] <anonnumberanon> Oh wait.
[17:23:33] <anonnumberanon> What does that even mean.
[17:30:29] <BlueMMs> hi
[17:32:47] <rue_house> theBear, what!?
[17:33:09] <rue_house> the tach is just a lead off one of the coil drives
[17:33:32] <rue_house> the wire is already there, you just need to tap it
[17:33:44] <rue_house> and maybe a little logic level converstion (as its 12V)
[17:37:31] <theBear> anonnumberanon, lol, good question <grin> it sounded perfectly reasonable until i thought about how you might do it :)
[17:39:17] <theBear> yeah, but like me, you know how tricky-at-best it is trying to pull the shaft/blades off one of those cheap small bldcs, letalone getting it back together both mechanically nice and free and proper and mounted remotely "flat" in the hole between the frame
[17:39:25] <theBear> ^^ rue
[17:50:04] <BlueMMs> the text in here is ugly
[17:50:21] <BlueMMs> cant tell if someon is typing or leaving the room
[17:50:35] <robopali> that is your client
[17:52:18] <anonnumberanon> i dont knowan, tbh iv had quite a few beers. theBear with me thus. so this got me thinking about how they do the internet networs over mains power lines of your house...
[17:56:19] <theBear> anonnumberanon, mmm, i figure to do it without any shunt/volt drop and associated waste, a similar approach will be the "right way" to extract the variations from the dc, in some form or other basically a highpass filter i always figured
[17:56:57] <anonnumberanon> Personally and robot-wise, because I feel when I scope the code I wrote for the PWMs, it will be satisfactory, I am starting to think about what would bebthe next step. No pun intended, but the robot has to stand straight and stay ther.
[17:57:19] <anonnumberanon> oh wait yeah okay, next step is imu i guess.
[17:58:19] <theBear> sure ok, what is imu ?
[18:01:51] <anonnumberanon> Inertial motion unit, it's any combination ogbgyroscope, accelerometer, magnetometer.
[18:02:33] <anonnumberanon> the more sane ones are accelerometer and gyroscope, good enough for a 1uadcopter
[18:02:53] <anonnumberanon> prolly good enough for my bot to keep standing
[18:24:56] <anonnumberanon> next question?
[18:26:52] <Tom_itx> what's for dinner?
[18:29:23] <SpeedEvil> I had half a kilo of summer fruit and half a kilo of natural yogurt for dinner.
[18:29:30] <SpeedEvil> It was really quite delicious
[18:38:43] <theBear> Tom_itx, and more importantly, is it helgas ?
[18:38:50] <theBear> also, got desert ?
[18:39:09] <theBear> SpeedEvil, that's a large mass of quite delicious :)
[18:56:01] <rue_house> theBear, you drink a lot, what did anonnumberanon say?
[18:56:34] <rue_house> theBear, you literally take a lead off one of the coild
[18:56:35] <rue_house> s
[18:57:33] <theBear> rue_house, yeah, but you gotta be able to see part of a coil or the pcb to do that
[18:57:33] <rue_house> the schematic for those motors is 12V goes to both coils
[18:58:02] <rue_house> there is a chip with 4 leads, ground, +12, phase A and phase B
[18:58:16] <rue_house> its an open collector driver and a hall switch
[18:58:16] <theBear> don't worry, i know the schem, i may have done component level repairs and upgrade/"model change" on one without a schem first attempt recently on a couple
[18:58:27] <rue_house> you just need to tap one of those lines
[18:58:46] <rue_house> with a peice of wire-wrap-wire even
[18:59:00] <theBear> sometimes there the 4 lead one, other times on bigger fans discrete drivers in half cpu/lappy-mobo switcher size running off a 3 pin hall
[18:59:16] <rue_house> hmm
[18:59:49] <rue_house> I'v seen them with a 3 lead hall, where one coil goes to +, the other goes to - and the centre goes to the controller
[18:59:58] <rue_house> those are the ones that DO burn up when they stall
[19:00:07] <theBear> surely you tried opening a couple of these fans over the years ? they always got some stupid un-repeatable approach to how the shaft/prop get "stuck" on
[19:00:27] <rue_house> all the ones here always seem to be the same
[19:01:04] <rue_house> under sticker is C clip, remove and fan falls out, pcb is press-fit onto the sleeve for the bushing
[19:01:41] <theBear> most here too, which is tricky to dismantle without tearing the center cover/plastic disk where they mount to the frame, from itself, and of course then you gotta force all that back to fit in the hole AND somehow stick the pcb/bearing backj onto the mes
[19:01:54] <rue_house> arg, I'v had a headache all day and its really putting a damper on getting things done
[19:02:04] <theBear> yeah, i've seen maybe 2 outta 12 i been into for various reasons over the years, with C or similar clips
[19:02:24] <rue_house> iirc you can leave the bushing/bearing in
[19:02:55] <rue_house> I gutted the drive coils out of one and took the hall lead to make an anomometer
[19:03:09] <rue_house> it worked, but I didn't finish it
[19:05:14] <rue_house> damn, my ass is stuck in the chair again
[19:05:38] <theBear> either way, over time this has developed more into a problem solving puzzle until it sneaks up the list of listed stuffs, so the physical or practical stuff doesn't much apply
[19:05:40] <theBear> lol
[19:06:12] <rue_house> want to put some reflective tape on a blade or the hub and use an ir ?
[19:06:56] <rue_house> 3d print you a holder that'll bolt onto the fan mounts
[19:07:39] <rue_house> you could also mount a magnet to the hub and use a pickup coil
[19:07:51] <rue_house> really small one, or two counterbalanced
[19:09:44] <theBear> i first thought of you cos i was wondering if whatever is bright enough so i don't walk into the desk and can see a keybaord if i need, would be detectable thru a fan blades just "looking" from inside thru the fan blades out the grill, probly on angle to see thru the blades teh way that makes a gap visible
[19:10:33] <rue_house> is the goal to know if the fan is spinning?
[19:10:39] <theBear> also gonna just experiment by hand moving around the outside/label of a fully assembled fan with a halley kinda thing and seeing if there's a spot with a nice solid view of the magnets
[19:11:07] <rue_house> huh, I'm still confused
[19:11:40] <theBear> rue_house, it's only a thinking exercise maybe a year either side of today or so, if i ever implemented some part/approach it'd be to detect rotation on a fan without it exposed
[19:12:37] <theBear> don't be confused, and i think you treating this like it's a how-do-i-cos-i-wanna-now more than a "any thoughts when you consider this" like it is :)
[19:12:45] <rue_house> well, a magnet and pickup coil, going to a white led (cause they realyl dont need much current to flash)
[19:13:17] <rue_house> two magnets, reversed polarity
[19:19:41] <theBear> extra magnet feels clumsy, i suspect if you go kinda on the edge of the bit where the label lives on a fully assembled fan, you should get close enough to the spinning magnet cylinder without hitting a blade or even needing to protrude past the profile/sticker plane
[19:54:02] <SpeedEvil> Or you don't do that.
[19:54:19] <SpeedEvil> And you entirely sidestep the problem by using a thermistor with moderate self-heating in air
[19:57:53] <theBear> to detect a fan blade passing pfft, a min of maybe 8-10k times/second at medium speeds from turbulence ? or you saying to "detect fan stalled" cos you done my trick and guessed something very likely, forgetting that someone like me would be very unlikely to ever do, letalone discuss anything normal or likely for any normal person to do :)
[19:59:25] * anonnumberanon sighs
[20:07:50] <SpeedEvil> I recommend a gamma ray souce and detector
[20:15:13] <rue_shop4> I keep losing radioactive sources here in the shop, so if you come up with a good detector, please share
[20:21:04] <theBear> the sauce sounds delictable, but i can't see why anyone would need a special sauce-detector, ever :)
[20:38:56] <rue_shop4> is it my internet or is freenode falling over alot today?
[20:40:24] <theBear> the err, latter
[20:40:39] <theBear> i think, i'm practicing at times like now 'cos i get former/latter confused since i was little :)
[20:40:49] <theBear> definately the one on the right :)
[20:51:35] <rue_shop4> oooh yea, I finished all the code for my optic beacon system
[20:51:59] <rue_shop4> its all jammed into a comment into my 2d library
[20:52:13] <rue_shop4> which is becomming quite a library
[20:57:57] <rue_house> yay, I got one of my 3 todo things done today
[20:59:28] <Jak_o_Shadows> optic beacon? Position tracking somehow?
[20:59:59] <rue_house> it took me quite a lot of work to work out the math, and then quite a lot of work to code it
[21:00:35] <rue_house> http://ruemohr.org/~ircjunk/robots/abspos/code/problem.html
[21:01:13] <rue_house> A B C are fixed beacons, R is the robot
[21:02:16] <Jak_o_Shadows> Cool.
[21:02:23] <Jak_o_Shadows> How do you distinguish betwen the becaons?
[21:02:35] <Jak_o_Shadows> and what actual hardware are you using to pick them up?
[21:03:06] <rue_house> http://ruemohr.org/~ircjunk/robots/abspos/dscn0659.jpg
[21:03:13] <rue_house> that is the robot hardware
[21:03:38] <rue_house> the beacons would have a light detector, when they are hit, they (via rf) issue their identity
[21:03:49] <Jak_o_Shadows> Neato.
[21:03:59] <rue_house> the identitys position is in a lookup table on the robot
[21:04:07] <Jak_o_Shadows> That seems like you could add more beacons as well .
[21:04:14] <rue_house> you pick 3 beacons and calc your position
[21:04:20] <rue_house> indeed
[21:04:40] <rue_house> choose 3 beacons that are closest to 120 degrees apart
[21:04:57] <Jak_o_Shadows> Yeah.
[21:05:00] <Jak_o_Shadows> That's handy
[21:05:17] <rue_house> that would be some interesting code, list of beacon angles, find the 3 best
[21:06:35] <Jak_o_Shadows> I was more thinking it'd be helpful because it'd let you go ino different rooms
[21:06:40] <rue_house> yea
[21:06:46] <rue_house> you can put beacons all over the lawn
[21:06:48] <rue_house> er, house
[21:06:51] <rue_house> ;)
[21:07:17] <Jak_o_Shadows> How fast does that stepper motor tick?
[21:07:40] <rue_house> have you seen how fast those reprap drivers can turn a stepper!?
[21:07:51] <rue_house> you could prolly get that up to 600rpm atleast
[21:09:35] <Jak_o_Shadows> Wikipedia is sayi8ng 600rpm max for just the motor
[21:09:40] <Jak_o_Shadows> You've geared it down considerably
[21:09:57] <rue_house> oh yea, I had to bump the resolution
[21:17:22] <rue_house> http://paste.debian.net/838875/
[21:18:37] <Jak_o_Shadows> aha
[21:19:27] <Jak_o_Shadows> Hmm. Potentially a job for linear optimization
[21:19:34] <Jak_o_Shadows> I'll look at framing it that way a tad later
[21:19:43] <rue_house> lets hope there is a borred coder browsing paste.debian.net
[21:20:02] <theBear> hmm, 10 revs/second yer think eh mr rue... i spose that's not CRAZY fast, even for a big magnetically-heavy-cogging ton-of-lumpy-magnet kinda standard nema thing
[21:20:28] <rue_house> I built it before the 'existance' of reprap drivers
[21:20:39] <rue_house> or I'v have geared less and used a smaller motor
[21:21:04] <rue_house> arg, I dont think my coding hat fits anymore
[21:22:18] <theBear> quick, put on your millinering hat and get to your craft-den !
[21:22:40] * rue_house shivvers
[21:22:47] <rue_house> the new shop will be under the house...
[21:23:04] <rue_house> but honestly, the way I'm planning to build it, I may never acutally use the house
[21:26:34] <anonnumberanon> Make sure that dere den of yours is at least 13 foot tall...
[21:27:00] <rue_house> I was gonna go 10' cieling
[21:27:11] <rue_house> but it was pointed out that even 9' is high
[21:27:14] <anonnumberanon> Won't fit the mech.
[21:27:18] <anonnumberanon> Think again.
[21:27:21] <rue_house> its a 12' mech
[21:27:29] <rue_house> I'm NOT bringing it into the shop
[21:27:49] <anonnumberanon> How do you know what the future holds?
[21:27:59] <rue_house> its not good, never is
[21:28:03] <anonnumberanon> Foolish assumptions and asymptotes...
[21:28:46] <rue_house> oh yea, I ahve two monitors...
[21:28:57] * rue_house drags the window to the other one
[21:29:06] <rue_house> wait, I can put irc on that window
[21:29:23] <rue_house> er screen
[21:29:31] * anonnumberanon lols at how his linux partition still has trouble viewing heavy video files
[21:29:32] <rue_house> OH GOD, ALL THE SPACE
[21:36:37] <rue_house> oh god this problem is harder than I thought
[21:37:39] <rue_house> its not just finding angles close to 120 degrees, its finding two of them, with one point in common
[21:40:42] <Jak_o_Shadows> Hmm.
[21:40:51] <theBear> space is the place, maaaan
[21:42:26] <Jak_o_Shadows> I mean, you obviously can't do it exhaustively. nC3 grows quite fast
[21:45:27] <rue_house> well I did a
[21:45:32] <rue_house> for(i = 0; i < 8; i++)
[21:45:33] <rue_house> for (j = i; j < 8; j++) {
[21:45:35] <rue_house> which is
[21:45:41] <rue_house> but it dosn't solve the problem
[21:45:50] <rue_house> casue you need your matches to have a point in common
[21:48:45] <rue_house> so its like I need to generate a complete differential crossing list
[21:49:04] <rue_house> and then sort it by least error of 120 degrees
[21:49:13] <rue_house> and pick the top two that have a point in common
[21:49:28] <rue_house> but this is for execution on an avr,
[21:49:48] <rue_house> so it needs to be a streaming method and not use up a pile of ram
[21:50:38] <rue_house> with 8 points, thats 36 tests
[21:52:16] <rue_house> I wonder how I could throw out data as I go
[21:52:55] <rue_house> haha, I'm comparing points against themselvs
[21:53:15] <rue_house> 28 tests
[21:54:54] <rue_house> the best results on that data set have 2 and 15 degrees error from 120, and just happen to share a point
[21:56:35] <rue_house> thats a ringer of a problem alright
[22:19:53] <Jak_o_Shadows> Yeah, you totally need 3 loops to do it exhaustively.
[22:20:20] <rue_house> hmm I need a special function to compare angles
[23:10:04] <iztech> early today i asked if anyone had a source on good priced lipo 3.7v batteries. I need about 100 of them.
[23:10:24] <iztech> someone answered by i had left my station.
[23:13:22] <theBear> they asked for more info, as i recall roughly how big such batteries should be
[23:14:18] <iztech> 500mAh
[23:14:35] <rue_house> 500Ah!
[23:37:59] <rue_house> ok I think I did it
[23:38:31] <rue_house> I'v got code that finds the best fit for 3 points 120 degrees apart
[23:39:42] <Jak_o_Shadows> How'd you do it?
[23:40:31] <rue_house> http://paste.debian.net/839071/
[23:40:37] <rue_house> a long hard way
[23:41:14] <rue_house> but there is a strange anomoly
[23:41:26] <Jak_o_Shadows> exhaustively.
[23:41:30] <rue_house> the same angles, compared different ways, are yielding different average errors
[23:41:54] <rue_house> I'm pretty sure an avr could rip thru that pretty fast
[23:42:09] * theBear has been known to "do it" the "long hard" way <grin>
[23:42:27] <rue_house> it executes in 1us on my PC :)
[23:42:58] <theBear> rue_house, if there non-symmetrical or math based on earlier rounded value it's not unexpected to see different errors is it ?
[23:42:59] <rue_house> er 1ms
[23:43:12] <rue_house> well, its the same points
[23:43:26] <rue_house> its like saying a+b+c != c+a+b
[23:43:27] <Jak_o_Shadows> If you go up to 20 base stations, there's 1140 combinations.
[23:43:33] <Jak_o_Shadows> Which, tbh, is probably still pretty fast
[23:43:44] <rue_house> well, hopefully the layout is such you cant see 20 at once
[23:43:48] <rue_house> 8 is a LOT
[23:44:12] <Jak_o_Shadows> Indeed
[23:44:50] <rue_house> tho the fun part is you could go thru different sets of stations to get positions with different errors, and then average them to increase accuracy
[23:45:05] <rue_house> tho, with this code, you should get the most accurate result right away
[23:45:19] <rue_house> calculating the position from the angles is intense
[23:45:22] <rue_house> for an avr
[23:45:31] <rue_house> fair pile of trig
[23:45:59] <rue_house> might be better suited for one of the stm32's
[23:46:02] <rue_house> whatever
[23:46:29] <rue_house> I havn't worked out how to get a heading yet
[23:46:36] <Jak_o_Shadows> I vaguely got usb working on one of my stm32s yesterday
[23:46:37] <rue_house> cause with this, you get position and heading
[23:46:50] <Jak_o_Shadows> I used a mbed example - now I just need to figure out how to do it not in mbed
[23:46:50] <rue_house> I'm happy to just serial->usb it
[23:47:56] <Jak_o_Shadows> Oh yeah, for a robot I would.
[23:48:11] <Jak_o_Shadows> This little stm32 is going to be a joystick type controller. Lots of switches and axis
[23:50:39] <rue_house> float angleCompare( float this, float that) {
[23:50:39] <rue_house> return Min((ABS(this-that)), (ABS(360-ABS(this-that))));}
[23:50:48] <rue_house> ...
[23:51:01] <rue_house> if I have 0 and 300
[23:51:13] <rue_house> then the left returns 300 and the right returns 60
[23:51:28] <rue_house> so it will give me the smallest angle
[23:51:50] <rue_house> but if the value is greater than 180
[23:52:13] <rue_house> I might as well just return the value ...
[23:52:45] <rue_house> compliment of 360
[23:53:05] <rue_house> if (this-that) ... no
[23:53:50] <rue_house> if (ABS(this-that) > 180) return 360-ABS(this-that); else return ABS(this-that);
[23:53:58] <rue_house> hmm