#robotics Logs
Jan 02 2018
#robotics Calendar
01:01 AM rue_mohr: wow
01:04 AM rue_mohr: if you google radioshack semiconductor reference guide, ALL you get are bots and javascript
01:19 AM rue_mohr: well, CTS256AL2 aka 276-1786 code-to-speech
01:23 AM rue_mohr: oh drat, have to go back from 1988 catalog and I cant find them right now
03:43 AM eraserpencil: hi! Is this a ROS channel?
03:58 AM anonnumberanon: i don't have personal experience with ROS
03:58 AM anonnumberanon: maybe some people do here
03:58 AM anonnumberanon: we use whatever we need at the time
08:24 AM veverak: he left?
08:24 AM veverak: damn it
08:24 AM veverak: there is #ros
09:06 AM rue_mohr: in the interest of having to do MORE CLICKING, paypal has made their login 2 pages
09:11 AM veverak: hmm
09:11 AM veverak: first time the "typedef" in C++ makes sense to use for me
09:11 AM veverak: typedef Length Distance;
09:11 AM veverak: typedef Length Radius;
09:11 AM veverak: :)
09:54 AM robotustra: hm
11:18 AM sherlock: veverak: dont, subclass
11:18 AM veverak: wat
11:18 AM veverak: I do not want to subclass
11:18 AM veverak: that does not make sense here
11:19 AM sherlock: you lose the type safety the compile will provide to you if you make a mistake and provide a distance where a radius is expected
11:19 AM sherlock: compiler
11:19 AM veverak: itentionally
11:19 AM veverak: :)
11:19 AM sherlock: oh, ok
11:19 AM sherlock: I assumed poorly
11:20 AM sherlock: veverak: at work we are struggling with lots of typedeffed and macros where we should have used concrete types, only reason I bring it p
11:20 AM sherlock: ...up
11:20 AM sherlock: like FEET_TO_METERS() as a macro that just returns a double
11:21 AM veverak: yeah, I normaly hate typedef because of that
11:21 AM veverak: and got my set of dark magic to have ... "strong typedef" alternative
11:21 AM veverak: but this time it actually makes sense
11:21 AM sherlock: sorry for assuming
11:21 AM veverak: ok :)
11:22 AM veverak: sherlock: class Length : public util::PhysicalQuantity< Length > {}
11:22 AM veverak: the Length itself is just strongly typedefet double :)
11:22 AM sherlock: we have it worse tho because we have like altitude asl and gps atltitude, so you get like float altitude and you have no idea what it is
11:22 AM veverak: yeah, that requires strong typing
11:23 AM sherlock: yeah
11:23 AM sherlock: would be great if it were coded that way years ago
11:23 AM veverak: tried to move the codebase into that?
11:24 AM veverak: it should be doable :)
11:24 AM sherlock: yeah, we dont do much large overhaul of that codebase tho
11:24 AM sherlock: but yes, its been brought up :P
11:24 AM veverak: I believe that any good project should be able to do so
11:24 AM veverak: :)
11:25 AM veverak: let me git commit this
11:26 AM veverak: https://github.com/Schpin/schpin-ros/blob/master/schpin_lib/cpp/include/schpin_lib/util/physical_quantity.h
11:27 AM veverak: sherlock: I use this as base class for physical units
11:27 AM veverak: need more documentation about how it works
11:27 AM veverak: and the fact that static parameter "unit" is expected...
11:27 AM veverak: but hey, still in work
12:08 PM sherlock: shouldnt Length just be an interface or something then..or a wrapper class...idk
12:08 PM sherlock: just thinking aloud
12:08 PM sherlock: this is more interesting than the actual refactoring I am doing right now
05:05 PM nine_9: hey guys, what's the best way to detect positions of a lot of fast moving objects in a room (2d planar floor)? i thought about placing ir leds on the objects and detecting them like the wii sensor, but i can't find a sensor for that... another option i think is to use a good camera and place leds of various colors and use openCV to get positions... i need hi-frequency and definition
05:31 PM robotustra: put IR leds on your robots and usual webcam on the ceiling
05:32 PM robotustra: and rmove IR filter from webcam
05:47 PM nine_9: robotustra: thank you. how could i identify them?
05:48 PM nine_9: also, is there a filter to filter out the other colors?
05:53 PM veverak: well well well
05:53 PM veverak: https://i.imgur.com/xenEUIM.png
05:53 PM veverak: stl file loaded into octree, which is exported as scad file
05:53 PM veverak: I think it WURKS ! :)
05:54 PM robotustra: if you remove IR filter from webcam - you will get white spot on the place of led
05:54 PM mumptai: if typical camera framerates are sufficient, use apriltags or similar. you'll get the ID of each tag along with all 6 dof of the tags relative to the camera (some cosntraints apply)
05:55 PM nine_9: robotustra: yeah, i'm thinking of other frequencies (in visible spectrum) interfering with that, but maybe i'm overthinking
05:55 PM robotustra: veverak, what do you use to display?
05:56 PM nine_9: mumptai: sounds interesting, gonna google, thanks
05:56 PM veverak: openscad
05:56 PM robotustra: do you draw it in cubes?
05:56 PM veverak: yup
05:57 PM robotustra: nine_9, IR led will be very contrast
05:57 PM robotustra: veverak, STL->voxels->stl?
05:57 PM mumptai: nine_9, whats the targated samplerate?
05:58 PM veverak: robotustra: sure
05:58 PM veverak: still found out that "scad" is easiest way to see the octree
05:58 PM robotustra: veverak, is it a river canion?
05:58 PM veverak: yep :0
05:58 PM nine_9: mumptai: 100hz at least
05:58 PM rue_mohr: 11packages from china
05:58 PM veverak: :)
05:59 PM nine_9: but i also need fast shutter to reduce motion blur i guess
05:59 PM nine_9: is there a way to somehow triangulate the positions with precision?
05:59 PM nine_9: or is a visual approach the way to go?
06:00 PM nine_9: apriltags are interesting
06:00 PM robotustra: oh, webcum will not work for 100hz
06:01 PM robotustra: 30hz max
06:01 PM nine_9: not sure if it wouldn't take a ton of processing power to detect the tags though
06:01 PM robotustra: how many tags?
06:02 PM mumptai: the ps3 eye had high framerate, but i never used it
06:02 PM nine_9: 60 max... i don't need 3d though
06:03 PM robotustra: all depends on budget
06:03 PM mumptai: also some camera system use a strobe to compensate for a slow shutters, but that is probably also nothing to find on a cheap usb cam
06:03 PM robotustra: you can put 3 cams at 30hz
06:03 PM veverak: nine_9: that is easy
06:03 PM veverak: :)
06:04 PM nine_9: veverak: what part?
06:04 PM nine_9: which*
06:04 PM veverak: ORBSLAm uses two things of interest for you
06:04 PM veverak: one is able to localize specific ... pixel areas ... on the image
06:04 PM veverak: (very effeciently)
06:05 PM veverak: second one is able to ... "label" them ... so they can be tracket between frames
06:06 PM nine_9: veverak: thank you, very interesting stuff
06:06 PM veverak: disclaimer: first is trained neuron network to detect features
06:07 PM veverak: second is trained neuron network that executes 256 tests around the feature center, each test is comparison of two specific areas - their average brightness
06:07 PM veverak: 256 tests than form a bit string that labels the feature
06:07 PM mumptai: nine_9, what is the application?
06:08 PM veverak: in case there are a lot of similar ones between the frames
06:08 PM veverak: you use bipartite graph and minimal flow problem to match the features
06:08 PM veverak: :)
06:10 PM nine_9: mumptai: it's personal project, i'm no robotics expert, it's some vehicle automation
06:10 PM nine_9: veverak: if i could use leds then i guess it would be much easier to detect them since they're basically dots in the image
06:11 PM veverak: yup
06:11 PM veverak: or maybe opencv does one something that solves this
06:11 PM mumptai: nine_9, like tracking slot-cars?
06:11 PM nine_9: and since i only need position on a plane that would be easy too :P
06:11 PM nine_9: mumptai: yeah, i think a tech they use for that could to
06:11 PM nine_9: could do*
06:11 PM veverak: anyway, this seems doable with the webkameras
06:11 PM nine_9: aren't slot cars fast as heck?
06:12 PM veverak: yup
06:12 PM nine_9: what do they use to track slot-cars? guess they'd use the track for that?
06:12 PM nine_9: sensor around the track maybe
06:13 PM mumptai: i don't understand the setting of the problem, how fast is the movement, what environment to expect and what constraints might be acceptable for the solution
06:13 PM nine_9: mumptai: say max 40km/h... in a room or delimited area
06:14 PM nine_9: no overlaps and such
06:14 PM mumptai: for example the wii sensor is fast, but unly allows limited number of ir-sources to be tracked
06:14 PM nine_9: yeah, it won't do unfortunately
06:15 PM mumptai: there are also PSDs, but one might like to optical filtering or some modulation with these
06:15 PM nine_9: mumptai: what are psds? google only finds unrelated stuff
06:16 PM mumptai: position sensitive devices
06:16 PM nine_9: thanks
06:16 PM mumptai: its segmented photo diodes
06:16 PM mumptai: the shard IR-rangefinder modules use these for trinagulation
06:17 PM nine_9: sounds exactly what i need, thanks :)
06:17 PM mumptai: you can expected trancking bandwidth faster than 100kHz from those
06:17 PM mumptai: (if done right)
06:18 PM mumptai: but you need extra optics, signal conditioning, filtering etc.
06:19 PM mumptai: if apriltags are enough, its way easier and surprisingly robust
06:20 PM mumptai: there are also commercial system availible to track objects in 3d-space
07:46 PM Atomsk is now known as ace4016
07:51 PM Atomsk is now known as ace4016
08:01 PM Tom_L: X motor mount done
08:12 PM Tom_L: http://tom-itx.no-ip.biz:81/~webpage/cnc/Mill_Steel/Assembly/X_Motormount1.jpg
08:12 PM Tom_L: http://tom-itx.no-ip.biz:81/~webpage/cnc/Mill_Steel/Assembly/X_MotorMount2.jpg
08:12 PM Tom_L: http://tom-itx.no-ip.biz:81/~webpage/cnc/Mill_Steel/Assembly/X_MotorMount3.jpg
08:13 PM Tom_L: i made a solid coupler and reamed both ends to fit for alignment
08:13 PM Tom_L: i'll replace it with the regular coupler
09:39 PM rue_mohr: k
09:41 PM rue_mohr: see, I'd never get away with a weld like that and come out with it aligned at all
09:46 PM Tom_L: it was bolted in place, then tacked then removed and welded
09:46 PM Tom_L: methodical
09:47 PM Tom_L: weld wasn't that pretty but i think it'll hold
09:48 PM Tom_L: and i did it on _that_ edge to prevent warpage
09:49 PM Tom_L: it was pretty solid with just the 2 edge screws but i added the angle just for extra strength
09:50 PM rue_mohr: if it dosnt' hold, then that motor is WAY too strong
09:50 PM rue_mohr: did.... did anyone remember to send a message to the aliens that went by?
09:50 PM rue_mohr: ugh
09:51 PM Tom_L: i did discover a problem when i was running the dial indicator on the rails
09:51 PM rue_mohr: ?
09:51 PM Tom_L: i need to drill the screw holes a tiny bit deeper and run the tap thru them again
09:51 PM Tom_L: a few of them are bottoming out
09:51 PM rue_mohr: bulged ?
09:51 PM rue_mohr: k
09:52 PM Tom_L: not bulged, just loose
09:52 PM rue_mohr: oh
09:52 PM rue_mohr: you put antisieze ont eh screws?
09:52 PM Tom_L: i just need to run the threads a couple more rounds
09:52 PM Tom_L: not yet
09:52 PM Tom_L: just oil
09:52 PM rue_mohr: dunno what the odds are of the screws locking in on something like that
09:53 PM rue_mohr: copper and aluminum being ... evil
09:53 PM Tom_L: if they screw up, i'll get some helicoils and put them in the plate
09:54 PM anonnumberanon: <rue_mohr> did.... did anyone remember to send a message to the aliens that went by?
09:54 PM anonnumberanon: damn i don't have a proper antenna for this yet
09:54 PM rue_mohr: nothing I could have done would have come out above the ambient noise
09:55 PM anonnumberanon: i won't be in the group of people they let live when the come here to cleanse the planet of its human filth
09:55 PM rue_mohr: why put effort into it?
09:55 PM rue_mohr: the plauge will reduce numbers all on its own
09:56 PM * anonnumberanon opens forbidden box, pulls out a hat
09:56 PM anonnumberanon: dusts off the dust on the tinfoil
09:56 PM anonnumberanon: "this'll do"
09:56 PM Tom_L: i'm not quite sure how i'm gonna handle mounting the Y axis motor
09:56 PM * rue_mohr opens a box and the only thing that comes out are a bunch of deamons and damned souls :(
09:57 PM anonnumberanon: if im okay after this glass of wine i will attempt another go at asm for avr
09:57 PM rue_mohr: anonnumberanon, I could help you with that
09:57 PM anonnumberanon: okay
09:57 PM rue_mohr: ... 'could'....
09:57 PM rue_mohr: but whats more entertaining...
09:57 PM rue_mohr: anonnumberanon, what are you trying to code?
09:57 PM anonnumberanon: we are attempting to make that there perfect godly loop that takes the same cycles no matter the scenario
09:57 PM rue_mohr: ?
09:58 PM rue_mohr: its called an interrupt based timer
09:58 PM rue_mohr: on what avr?
09:58 PM anonnumberanon: omfg
09:58 PM anonnumberanon: interrupts are too slow my dude
09:58 PM anonnumberanon: do we need to go over that again?
09:58 PM anonnumberanon: i could :)
09:58 PM anonnumberanon: "could"
09:59 PM rue_mohr: your goals were flailing, I stopped paying attention
09:59 PM anonnumberanon: I've already proven that servicing an interrupt was very cycles consuming, like very very
09:59 PM anonnumberanon: in order to do this:
09:59 PM anonnumberanon: hit the right servo order within 1 microsecond and be ready to fire the next
09:59 PM anonnumberanon: 1 microsecond = 16 cycles
10:00 PM rue_mohr: OH GOD
10:00 PM anonnumberanon: the in and out instructions for this should take 4 cycles
10:00 PM rue_mohr: srrsly? servo code?
10:00 PM rue_mohr: after, I....
10:00 PM rue_mohr: seriously?
10:00 PM anonnumberanon: left with 12 cycles to do the godly looping
10:00 PM rue_mohr: WHERE IS MY BRICK WALL
10:01 PM anonnumberanon: after i have fully proven that asm on avr can't do it i will be able to move on
10:01 PM anonnumberanon: also the added benefit of make cool loops in asm
10:02 PM anonnumberanon: my conclusion will have to say exactly why, in simple terms, it is not possible, or should i say, in mathematical terms
10:02 PM orlock: you go do that
10:02 PM orlock: send us the thesis when you are done
10:02 PM anonnumberanon: like "doing it this way does not meet goal because in any way possible, this operations would take 18 cycles and go past the 16 cycles magic window"
10:02 PM rue_mohr: I'm sure I can find someone who can prove its not possable to drive across the street and pick up my mail using my truck too...
10:03 PM rue_mohr: anonnumberanon, just to recap, were talking about a hobby servo?
10:03 PM anonnumberanon: yeah
10:03 PM anonnumberanon: so the deadband would be 5 microseconds
10:04 PM rue_mohr: no, latency
10:04 PM anonnumberanon: what?
10:04 PM rue_mohr: if you have the same start pulse latency as the end pulse latency, whats your total error?
10:04 PM anonnumberanon: end - start
10:04 PM anonnumberanon: ?
10:05 PM rue_mohr: and their the same, so the total error is 0
10:05 PM anonnumberanon: making it near 1 microsecond means this can be used for servos that have a much lower deadband
10:05 PM rue_mohr: besides, if you use the timer, you can have it completely generate the pulse for you
10:06 PM anonnumberanon: sure, and that's a nice solution, that I like, but it will do so in a few microseconds
10:06 PM rue_mohr: anonnumberanon, you are so insulting all the work I did on my hobby servo code
10:06 PM rue_mohr: which if you took a scope to, you would see the timing is +- 1 cycle
10:06 PM rue_mohr: ugh
10:07 PM anonnumberanon: i don't doubt it
10:07 PM * rue_mohr slams the door
10:07 PM anonnumberanon: i have tested it
10:07 PM anonnumberanon: it's good
10:08 PM anonnumberanon: rue_mohr just doen't want me to play with assembly
10:08 PM anonnumberanon: rue_mohr, now is time for pain, after we can have fun
10:09 PM * Tom_L wonders what all the racket is about
10:09 PM anonnumberanon: what kind of engineer would I be if I did not try to apply what I learning in asm 8051 in a real life project
10:10 PM anonnumberanon: Tom_L, rue_mohr thinks I'm over-doing this and wasting my time
10:10 PM Tom_L: knowing when asm is necessary and when c is ok is just as important
10:10 PM anonnumberanon: exactly
10:11 PM anonnumberanon: i know that, my strategy is i have the entire program in c and then inject some asm for the time-critical part
10:12 PM anonnumberanon: wich is tricky considering the fact that the compiler doesn't play nice with you (or my lack of knowledge of storing variable with avr using asm)
10:12 PM anonnumberanon: but you have pretty much very heavy c code to prepare all the servo orders you're gonna send during that 2500 microsecond window, then execute in asm
10:13 PM rue_shop3: the time critical part of my code isn't done by code, its done by hardware
10:13 PM anonnumberanon: yeah i know, timers
10:14 PM anonnumberanon: but with asm you can write instructions that will always take exactly the same time, just as if you were using the perfect timers
10:14 PM anonnumberanon: "perfect"
10:14 PM rue_shop3: ... are you trying to run more than 8 servos off one avr?
10:14 PM anonnumberanon: not really but will depend on the accuracy of you crystal
10:14 PM anonnumberanon: yeah
10:15 PM rue_shop3: you cant have both the things your asking for
10:15 PM anonnumberanon: we've gone over this i want to drive up to all 3 ports on the avr, so 3x8
10:15 PM anonnumberanon: i only really need 17 of them though
10:15 PM rue_shop3: why....
10:15 PM anonnumberanon: why what?
10:15 PM rue_shop3: I dont want to go down this road
10:16 PM rue_shop3: you dont understand the basics...
10:16 PM rue_shop3: why me?????
10:16 PM anonnumberanon: well i gotta make this push and figure out quantitatively why it doesn't work, and then I swear I'll swim back to the surface :0
10:17 PM rue_shop3: why dont you go down some other street and work on making code to accelerate that stepper motor and positive and negitive rates?
10:17 PM anonnumberanon: I will, good sir.
10:17 PM anonnumberanon: That's next.
10:17 PM rue_shop3: do you have that stepper motor turning yet?
10:17 PM rue_shop3: and let me ask you this:
10:17 PM rue_shop3: what is the maximum pulse time for a servo?
10:18 PM rue_shop3: cmon
10:18 PM rue_shop3: cmon
10:18 PM rue_shop3: you should know this
10:18 PM rue_shop3: its part of the sanity checks you should have done before you started
10:19 PM anonnumberanon: i have i knew it when i read your servo page
10:19 PM anonnumberanon: link it again save me the trouble
10:19 PM * anonnumberanon looks anyway
10:19 PM anonnumberanon: damn
10:19 PM * rue_shop3 bashes his head against a brick wall more
10:19 PM anonnumberanon: internet not paid, have to tether from my phone
10:20 PM rue_shop3: anonnumberanon, ..................... :-P you know what???
10:20 PM rue_shop3: I'm going to make speech recognition software for an avr
10:21 PM * rue_shop3 finds another door and slams it
10:21 PM anonnumberanon: wtf where is the irc_junk folder?
10:21 PM * anonnumberanon is actually in it...
10:23 PM * anonnumberanon can no longer find the servo page
10:23 PM rue_shop3: go to the main page
10:23 PM rue_shop3: http://ruemohr.org
10:24 PM anonnumberanon: a bit more specific pls?
10:24 PM * rue_shop3 shakes head
10:24 PM rue_shop3: http://ruemohr.org
10:24 PM rue_shop3: no www!
10:26 PM anonnumberanon: a bit more specific pls?
10:26 PM anonnumberanon: a bit more specific pls?
10:26 PM anonnumberanon: a bit more specific pls?
10:26 PM anonnumberanon: a bit more specific pls?
10:26 PM rue_shop3: http://ruemohr.org
10:26 PM rue_shop3: http://ruemohr.org
10:26 PM rue_shop3: http://ruemohr.org
10:26 PM rue_shop3: http://ruemohr.org
10:26 PM rue_shop3: http://ruemohr.org
10:27 PM rue_shop3: NOT http://www.ruemohr.org
10:27 PM rue_shop3: there is a hidden site, different server
10:27 PM rue_shop3: there is ONLY one link and it takes you to ircjunk
10:27 PM rue_shop3: from there, its under tutorials
10:27 PM rue_shop3: electronics
10:28 PM rue_shop3: hobbyservo
10:28 PM rue_shop3: :) we having fun yet?
10:29 PM anonnumberanon: jeez
10:30 PM anonnumberanon: alright im looking at the picture of the oscilloscope reading
10:30 PM anonnumberanon: i think that's what we are talking about
10:33 PM anonnumberanon: nah that's not helping
11:04 PM rue_shop3: anonnumberanon, your assignment is to find out what the time range for the pulse, and the pulse interval is for operating a servo
11:47 PM rue_mohr: hmm
11:47 PM rue_mohr: I need to do these audio filters,
11:48 PM rue_mohr: option A use the pre-designed analog filters on these pages, somewere around 20 capacitors and resistors
11:49 PM rue_mohr: option B, use these switched capacitor chips I have, spend about 4 hours doing math, resulting in 4 to 8 resistors
11:49 PM rue_mohr: hmmmm
11:49 PM rue_mohr: option C, try to make FFT code for an avr
11:51 PM anonnumberanon: i would try to port pocketsphinx to a micro if i were you
11:51 PM anonnumberanon: you're insane
11:52 PM rue_mohr: speech recognition
11:52 PM rue_mohr: not text to speech
11:53 PM rue_mohr: if I can pull of a 4 word dictionary, I'm thrilled
11:56 PM anonnumberanon: pocketsphinx is speech to text yes
11:58 PM rue_mohr: I just want something that can recognize 4 words without being connected to google or the internet