#robotics | Logs for 2016-09-13

Back
[00:02:29] <rue_house> unsigned char load[] = {49, 49, 49, 50, 55, 65, 67, 69, 80, 100}; // dishwasher valve
[00:02:44] <rue_house> error = sensor - target;
[00:02:44] <rue_house> while(error >>= 1) i++;
[00:02:44] <rue_house>
[00:02:44] <rue_house> pwm0 = unload[i] ;
[00:02:50] <rue_house> the valves are really nonlinear
[00:02:52] <justanotheruser> hi, is this my IDE
[00:03:09] <rue_house> justanotheruser, no, this is a chat program
[00:03:15] <rue_house> I am a robot here to help you
[00:03:34] <rue_house> you seem to have mastered pressing letters, followed by the enter key
[00:03:52] <rue_house> to continue, please state the goals you would like to achive today
[00:04:08] <rue_house> to do that, keep pressing letters, followed by the enter key!
[00:17:24] <z64555> rue_house, staying on top of the sarcasm game, I see
[00:22:00] <z64555> blah. gonna try using vinegar to restore the shower head. keeps clogging up with minerals
[00:22:48] <z64555> in other needs, I need to build the test pedistal for the quad, and spend some quality time with the CCS IDE
[00:24:51] <Snert> sure that'll do it? If not, Lime Away!
[00:25:14] <justanotheruser> rue_house: do you have autocomplete
[00:25:22] <justanotheruser> import requests
[00:25:37] <z64555> Lime is kinda expensive though
[00:25:41] <z64555> *Lime away
[00:28:58] <Snert> I've actually used a pinvise and a wire size drill bit to ream out showerhead holes.
[00:29:10] <Snert> didn't like doing it but had no choice.
[00:29:50] <orlock> Surely you had a choice.
[00:30:12] <orlock> Or were the armenians going to kill you if your shower-head-output-rate dropped?
[00:30:20] <Snert> guess I did. I coulda waited till morning and hit the hardware store I guess.
[00:30:51] <rue_house> justanotheruser, yea
[00:32:01] <rue_house> what kind of requests would you like?
[00:33:36] <rue_house> room for optimization, my pneumatic valve system has a 16Mhz pwm gen, but only uses 10 values
[00:34:45] <rue_house> hmm
[00:35:28] <rue_house> if I take the max value and scale the period back to that, then lower the pwm freq, I should be able to get close
[00:35:47] <rue_house> 49
[00:35:47] <rue_house> 49
[00:35:47] <rue_house> 49
[00:35:47] <rue_house> 50
[00:35:47] <rue_house> 55
[00:35:48] <rue_house> 65
[00:35:50] <rue_house> 67
[00:35:52] <rue_house> 69
[00:35:53] <rue_house> 80
[00:35:55] <rue_house> 100
[00:35:59] <rue_house> tho, some of my values are just a few counts from each other
[00:38:05] <rue_house> 35, 36, 39, 47, 48, 67, 90, 180, 250, 253
[00:38:30] <rue_house> so, if I go with 16Mhz pwm, I really dont need more than 8 bits, according to that
[00:39:04] <rue_house> ooh, unload is subject to less pressure, thats why the open times are higher
[00:40:46] <rue_house> it cant be 16Mhz
[00:41:03] <rue_house> that would put most of those pulses under the 1ms mark
[00:41:12] <rue_house> so, wtf freq was I using?
[00:45:34] <rue_house> ackg, its on a breadboard
[00:45:39] <rue_house> https://www.youtube.com/watch?v=z2xWgEdiTwc
[00:45:46] <rue_house> can anyone make out the crystal speed?
[00:52:44] <rue_house> ah I thin its 3.68<
[00:52:45] <rue_house> M
[00:56:58] <Snert> what's the knocking sound?
[01:01:15] <rue_house> the solinoids
[01:01:24] <rue_house> its 'taps' the air in and out
[01:01:46] <rue_house> right there I saved $1200 in proportionate valves
[01:06:41] <Snert> I'm having a hard time finding any air valves on Ali that cost anywhere near that. Clearly I have nfi.
[01:07:14] <rue_house> if you look at proporitional pneumatic servovavles, they will prolly average $600ea
[01:07:36] <rue_house> I use washing machines valves, they respond REALLY fast and I can 'knock' them to do proportionate
[01:13:54] <z64555> vinegar seems to be doing the trick, especially with a capfull of H2O2 to provide oxygen
[01:14:18] <z64555> the solution has turned green, indicator of copper
[01:15:20] * rue_bed wonders if its the copper the head is made from
[01:15:37] <z64555> yup.
[01:15:42] * rue_bed thinks to type vinegar and peroxide as a pcb etchant
[01:15:59] <z64555> our water not only has mineral deposits in it, but is also slightly acidic
[01:16:06] <rue_bed> I'm making hcl based etchant
[01:16:34] <rue_bed> I'm told thats one of the nice things about our water here
[01:16:44] <rue_bed> dns't need treating to death
[01:16:53] <z64555> yeah, you could use vinegar/peroxide as a PCB etchant, but it's slower
[01:18:25] <z64555> https://en.wikipedia.org/wiki/Copper(II)_acetate
[01:19:41] <z64555> heh, which so happens that the "minerals" we have in the water are calcium compounds. from limestone.
[01:19:58] <z64555> interesting
[01:32:28] * z64555 checks on his shower nozzle
[01:32:36] <z64555> wow. ok. so maybe not as slow as I thought
[01:35:08] <z64555> certainly did clear up the calcium deposits
[02:13:16] <z64555> ...where the heck did delta go? I can't find it anywhere on the charmap
[02:13:51] <z64555> "micro sign" are you freaking kidding me
[02:13:58] <z64555> it's mu, you idiots
[02:14:04] * z64555 rages at MS
[02:16:03] <z64555> hm, maybe if I used the unicode character set instead of "DOS" character set
[02:16:21] <z64555> yeah, there it is
[02:22:53] <Snert> you doing official documentation?
[02:23:29] <Snert> cause otherwise, a simple uA gets it done.
[02:26:36] <z64555> yup. official doc.
[03:02:22] <z64555> just one more subfigure to edit. blah.
[03:28:38] <z64555> well, I took some time to proof fixed-point arithmetic calculations
[03:29:42] <z64555> if you use the accumulative route, in which the value is contained in a single integer and is converted into whole.fractional via a single division
[03:30:12] <z64555> You only need to perform one more multiply per multiplication of fixed points, and only one more division per division of fixed points
[03:30:37] <z64555> i.g. a * b -> a * b * radix
[03:31:07] <z64555> since a = A / radix; b = B / radix; ergo a * b = (A * B) / (radix ^ 2)
[03:37:32] <z64555> this is easy to do in assembler, but needs some finagling to do correctly in C
[03:38:02] <z64555> which I might be able to get away with the use of a union. maybe.
[03:39:25] <z64555> but then there's the concern of overflow...
[05:12:53] <z64555> well, I got the editing done. now to shoe-horn it into the paper
[05:12:57] <z64555> ...later
[05:31:24] * z64555 wonders why a solid core coil of wire is mixed with his stranded coils of wire
[05:32:03] <Jak_o_Shadows> Gosh it'd be nice to have a nice tidy source of wire
[05:32:26] <anonnumberanon> ebay is nice...
[05:32:39] <Jak_o_Shadows> Yeah, but I don't need it too mcuh
[05:33:47] <z64555> I got a few feet of them in different colors. they're in baggies
[05:34:59] <z64555> and I guess I'm stuck with the solid-core wire, sine I can't seem to find the coil of black stranded core wire
[05:35:49] <Jak_o_Shadows> I did buy a bunch of solid core. But solid core is generally less useful for my recent tasks
[06:08:35] <z64555> last jumper made. now all that's left to do is... code.
[09:03:23] <rue_house> SCSI cable is stranded
[09:03:43] <rue_house> 30 guage stranded/tinned
[09:03:51] <rue_house> er, plated
[09:12:39] <DJuego> Hi!
[09:12:56] <DJuego> I am working with lego minstorms EV3. And i have questions about mecanum wheels.
[09:16:32] <rue_house> ok
[09:17:45] <rue_house> DJuego, hows the project going otherwise?
[09:18:29] <DJuego> Well...
[09:18:35] <DJuego> ;-) I am in the process of choosing a mecanum wheel 4 pack.
[09:18:54] <DJuego> I am considering in this moment:
[09:19:04] <DJuego> http://www.robotshop.com/en/mecanum-wheel-4-pack-w-metal-hubs.html
[09:19:09] <DJuego> :-P
[09:20:08] <rue_house> wow $15ea
[09:20:31] <DJuego> Yes, yes. :-/
[09:20:49] <rue_house> I wonder how one count attach that to lego
[09:21:47] <DJuego> Yes. That is my question! :-}
[09:21:49] <DJuego> https://www.youtube.com/watch?v=ib008sRWXqw
[09:21:49] <rue_house> ah 3mm
[09:21:57] <Snert> Comes with 1/16 hex wrench <----- implicates a drive shaft.
[09:22:17] <rue_house> no, its a tool for taking it apart
[09:22:34] <rue_house> wonder how big lego shaft is
[09:23:33] <rue_house> oh, 3mm
[09:23:38] <Snert> aluminum hub, it's a set screw situation.
[09:24:03] <rue_house> http://2.bp.blogspot.com/-GLzbPAVg5jM/T5SAVh93giI/AAAAAAAAIVE/If3VHe5L7M4/s1600/legodim3.gif
[09:24:15] <rue_house> according to that, lego shaft is 3mm
[09:24:30] <rue_house> no, no wait
[09:24:35] <rue_house> comment at the bottom
[09:28:26] <rue_house> 6.2mm
[09:28:45] <rue_house> nope
[09:28:49] <rue_house> definitly 4.9mm
[09:29:02] <rue_house> so, you will have to drill out he hubs
[09:29:18] <DJuego> :-O
[09:29:38] <rue_house> DJuego, if you dont have access to a lathe, you want to atleast use a drillpress
[09:29:56] <rue_house> doing it by hand would cause a hole offcentre and not straight
[09:32:24] <DJuego> That seems complicated. I am no good with the hands. :-(
[09:32:29] <DJuego> However...
[09:32:48] <DJuego> It is presumed that these to be compatible with LEGO.
[09:32:55] <DJuego> http://www.brontoseno.com/produk/60mm-aluminum-lego-compatible-mecanum-wheel-set-2-left-2-right/
[09:33:04] <DJuego> But how? :-?
[09:33:19] <rue_house> well, for $30 work and $30 shipping, I'll take your $60 wheels and drill them for you
[09:35:04] <DJuego> Well. It is a alternative to consider. :-)
[09:35:52] <rue_house> and I'm in canada, so dont think I'm making money on shipping
[09:35:54] <rue_house> :/
[09:37:19] <rue_house> or find wheels with 4.9mm hubs
[09:40:25] <DJuego> But if it is "LEGO Compatble", why not "plug and play"? it is sad. :-(
[09:41:08] <rue_house> it should ciome network enabled too
[09:41:25] <DJuego> :-D
[09:42:09] <DJuego> I am Spanish. Sorry for my terrible English. :-P
[09:44:18] <DJuego> " You can also use universal hubs to connect the wheels and motor."
[09:44:41] <rue_house> universal usually means it works for nothing
[15:37:59] * z64555 pokes around the demo projects to see how they're set up
[15:39:00] <z64555> mkay, there's the interrupt vector
[15:39:56] <z64555> a few "system" interrupts, as well
[15:42:08] <z64555> mkay, there's the library include. and a number of simple registers
[15:42:51] * z64555 looks at project properties
[15:48:45] <z64555> mkay, had an incorrect reference to the hardware lib
[16:26:50] <Snert_> you guys must be masters of interruptology
[16:27:02] <Snert_> I need to study that me thinks.
[16:29:07] <ace4016> fairly straight forward
[16:30:04] <z64555> interruptology?
[16:31:47] <z64555> An interrupt routine is just a subroutine, a void function taking in no arguments that is called when some hardware generates an interupt event
[16:33:15] <Snert_> ya. I understand about it and what it does. I've just never programmed one before.
[16:34:06] <Snert_> seems there are several little things about it. Like do as little inside the routine as possible and relinquish control as soon as possible.
[16:34:33] <z64555> depends on the application, but yeah, that's the general use
[16:34:41] <Snert_> any other huge gotchas?
[16:35:35] <z64555> make sure you clear the interrupt. Some chips you have to manually clear the interrupt flag inside of the routine/handler
[16:35:53] <z64555> and if you don't, it'll hang up and continously loop through the handler
[16:36:06] <Snert_> ok. cool.
[16:36:42] <z64555> which can be exploited in a few cases, like say, for a UART
[16:37:05] <z64555> in which the routine won't relenquish control to the main thread until the entire message is recieved
[16:38:31] <Snert_> I see. A good thing.
[16:39:17] <z64555> it's a double edged sword. :D
[16:39:59] <Snert_> I'm sure my fledgling uses hopefully won't trip me up too much.
[16:41:05] <z64555> the simplest usage of an interrupt is to generate a clock signal
[16:41:34] <z64555> which can be used for PWM generation or to simply update an internal clock variable for time keeping
[16:41:48] <Snert_> then I'll do that somewhere in my project.
[16:42:33] <Snert_> there is an advantage to doing that instead of just asking for the millis() or micros() ?
[16:42:53] <z64555> it's the exact same thing, really
[16:43:09] <Snert_> makes sense
[16:45:05] <z64555> although. the implementation of millis() and/or micros() is dependant on the chip. Believe it or not, but some of the simpler uC's have no interupt handling
[16:45:50] <z64555> in which case, they'd use a clunky hardware timer
[16:46:23] <z64555> at least I think so. I haven't messed with Arduino much
[16:46:34] <Snert_> you make these arduinos sound sophisticated.
[16:46:46] <Snert_> which I guess they are, really
[16:47:20] <z64555> I liken the Arduino, small talk, and wiring DE's to Megablocks where assembler and C are Legos
[16:47:21] <z64555> :)
[16:48:24] <Snert_> you did smalltalk? DO you program for macs?
[16:48:51] <z64555> nah
[16:50:07] <Snert_> oh well. gotta go spec a network drop and get a voip phone in place.
[17:07:11] <z64555> "SW_ROOT" cannot be resolved.
[17:07:13] <z64555> what.
[17:14:27] <z64555> argh, why is Word being so uncooperative in the layout?
[17:16:36] <deshipu> what you see is all that you get
[17:16:42] <deshipu> and no good weeping
[17:24:38] <z64555> what. what is this... I apply the same font style in two places, and they're different! They should be the same exact style
[17:27:52] <z64555> how the heck did it get bulleted?
[18:09:17] <z64555> ok, that's out of the way, now back to fighting with the IDE
[18:09:38] <z64555> ...and I found out why SW_ROOT is undefined. it's a user variable. instead of a DEFAULT environment variable.
[18:09:46] * z64555 rages
[18:24:12] <Snert_> you could have dictated that to your scribe in much less time.
[18:24:34] <Snert_> sometimes I wonder if we're doing ourselves a favor or not with these computers.
[18:27:36] <z64555> scribe?
[18:28:03] <z64555> oh, with the word editing.
[18:28:16] <z64555> see, the problem with that is, I'm the scribe in this situation
[18:28:41] <z64555> but with an overly complex and finnicky set of drawing tools
[19:17:25] <z64555> anybody know of a good semi-hard pipe jacket material? I need something to cover the axle of my lawn mower so that grass doesn't spool around it
[19:17:51] <z64555> Tried using a pool noodle, that worked well for exactly one day
[19:18:37] <z64555> a PVC pipe might work, but I don't know if it's flexible enough to snap over the axle, and of course there's the issue of cutting the slot
[19:18:55] <z64555> which, admittedly that wouldn't be much of a problem if I had a table saw
[19:24:46] <veverak> hmm
[19:24:59] <veverak> 24 lines of text to describe what is specific class for
[19:25:01] <veverak> nah...
[19:25:45] <z64555> document now, or forever guess
[19:25:46] <z64555> :D
[19:25:59] <veverak> yeah, exactly that reason
[19:26:34] <veverak> also, for sake of sane coding and easy algorithm, I made this "we got container with up to 'n' values where first one is special"
[19:26:40] <veverak> use case
[19:26:50] <veverak> which is exactly the thing that should be documented heavily ;)
[19:27:02] <veverak> with bunch of "assert()" macros here and there and proper testing
[19:27:58] <rue_house> so I need to pulse solinoids at 60vdc with a 16Mhz resolution
[19:28:04] <rue_house> 32 per card
[19:28:16] <veverak> from class internal point of view: that item is always present and it should not happen that container is empty"
[19:28:38] <veverak> for class external: "it's practically used same as other items from the container, do not worry about it"
[19:28:54] <rue_house> I have an object I call a 'magic hat'
[19:29:07] <rue_house> when you call it, it gives you a number, a unique one from its hat
[19:29:15] <rue_house> you can put numbers back and they are recycled
[19:30:16] <rue_house> void MH_Initialize
[19:30:27] <rue_house> oh dear, it uses my olde coding style
[19:30:33] <rue_house> void MH_Initialize ( void ) {
[19:30:37] <rue_house> unsigned long MH_Draw ( void ) {
[19:30:44] <rue_house> int MH_Return ( unsigned long Card ) {
[19:30:51] <rue_house> int MH_RecurseClean( void ) {
[19:30:52] <veverak> MH?
[19:31:03] <rue_house> void MH_Empty ( void ) {
[19:31:13] <rue_house> Magic Hat, weren't you reading anything!?
[19:31:38] <rue_house> I'll have to rewrite it one day tho
[19:31:51] <rue_house> it should use an object data set
[19:31:55] <rue_house> *sigh*
[19:31:57] <veverak> yay
[19:32:01] * veverak didn't noticed
[19:32:10] <veverak> :)
[19:37:07] <veverak> rue_house: interesting, I will need such a function in near future
[19:37:24] * veverak uses seq numbers to reference things that are asynchronous
[19:38:09] <veverak> such as commands for robot to move it's leg
[19:38:12] <veverak> :)
[21:27:58] <rue_shop3> it dosn't give you numbesr that are consucutive unless you never put tehm back
[21:28:16] <rue_shop3> you just cant get the same number twice at once
[23:52:34] <z64555> annnd, I can't sleep. great.