#robotics Logs
Oct 11 2017
#robotics Calendar
12:06 AM climbing_up: Is it possible to build/buy the machine vision that self-driving cars have for cheap? (at a very low resolution)
12:19 AM z64555: LIDAR isn't needed if you have something that can get the distance to the observed target
12:20 AM z64555: Like if your camera is facing down at a sidewalk. The distance to the center is known, and the distance at the sides can be calculated/tested (lenses can distort a bit)
12:20 AM z64555: climbing_up:
12:21 AM z64555: Once the distance to the target is known, it's just a matter of image processing. Recognizing an object and tracking its changes in position between frames
12:22 AM z64555: LIDAR is needed if your viewer isn't static, or is at a vantage point where the distances to the target can vary within the camera's field of view
12:25 AM climbing_up: Yeah, distances to the target will vary. I would like to build something that can be relocated, turned on, and Just Work(TM)
12:27 AM climbing_up: I see it being set up perpendicular to a roadway, or from a kind of "isometric" vantage at an intersection
12:55 AM climbing_up: Are LIDARs close to being a commodity product? For example I've found Scanse Sweep and Slamtec RPLIDAR. Are there big differences in how they work? What does more $$$ buy you?
01:00 AM rue_: take this functionality, pour in some of that functionality, and BINGO! completely disfucntional code!
01:08 AM climbing_up: Lucky me. Somebody carried their Sweep outside and walked next to a street with passing cars: https://www.youtube.com/watch?v=4dkAFFu0afE
01:09 AM climbing_up: Alright so it looks like the hardware is up to the task. Software is going to be a pain in the ass of course
01:11 AM climbing_up: What's this I hear about LIDAR having problems with sunlight? Is this a universal problem? Or does it only affect cheap units? Are there workarounds?
01:23 AM rue_bed: climbing_up, every sensor has some kinda catch
09:35 AM Cracki: climbing_up, join #opencv, get info on stereo cameras
09:37 AM Cracki: lidar might be more robust to lighting changes (daylight/night). stereo camera setup is probably cheaper and higher-resolution if that doesn't matter.
10:01 AM SpeedEvil: Or one camera if you're cheap.
10:01 AM SpeedEvil: http://www.ebay.co.uk/itm/Universal-3D-Mini-Photograph-Stereoscopic-Camera-Lens-for-Cell-Phone-Tablet-UK-/222536604177
10:02 AM SpeedEvil: (more seriously, this actually has some benefits, as synchronising two cameras is hard, and the above will have significantly more similar pictures than if the cameras are not synced.
10:29 AM Cracki: you might wanna have a good baseline = distance between eyes
10:29 AM Cracki: 1-2 inches is useless
10:30 AM Cracki: visual odometry also benefits a lot from good control over the placement of cameras and the environment
10:30 AM Cracki: a topdown camera would be the easiest way
10:30 AM SpeedEvil: 1-2 inches is not useless, it depends on your desired depth of view and resolution
10:31 AM Cracki: ;)
10:31 AM Cracki: pedestrian odometry might be in the range of ~5-50 meters
10:32 AM Cracki: so depending on resolution, a baseline of 0.05 meters gives you almost no depth resolution at those distances
10:32 AM SpeedEvil: For full-scale cars, sure.
10:32 AM Cracki: that's good enough to estimate rough distance
10:32 AM Cracki: oh, what's the application?
10:32 AM SpeedEvil: If you're just (I read up) wanting to look at speeds, you don't actually needrange at all.
10:32 AM Cracki: how?
10:32 AM SpeedEvil: If you are looking at a static bit of road, simply work out the geometry and look at where a fixed point on the car is.
10:32 AM Cracki: the speed in pixels/sec of a fly passing by my nose is large
10:33 AM Cracki: ic
10:33 AM SpeedEvil: Flies rarely have number plates.
10:33 AM Cracki: yes, assuming that pedestrians and cars can't fly is probably reasonable
10:33 AM Cracki: trouble with pedestrians is, you can't write them a speeding ticket
10:34 AM veverak: hmm
10:34 AM Cracki: and they aren't moving in straight lines
10:34 AM veverak: a low of new people here, interesting
10:34 AM Cracki: who are you
10:35 AM climbing_up: Does odometry include finding the change in position of other objects, not just the "self"?
10:36 AM Cracki: eh, it's all relative anyway, so sure
10:37 AM climbing_up: I've seen impressive results with visual-only cameras. https://hackaday.com/2016/04/03/raspberry-pi-as-speed-camera/
10:38 AM climbing_up: I was hoping to generalize that success so that it worked anywhere without manually calibrating the distance to vehicles
10:38 AM Cracki: yes, for road toll collection, single cams are usually enough
10:39 AM Cracki: you have to calibrate
10:39 AM climbing_up: Or thinking of it a different way, without having to mount exactly perpendicular
10:39 AM Cracki: a single camera can never give you absolute sizes
10:39 AM Cracki: you can mount at angles, sure
10:39 AM SpeedEvil: climbing_up: you don't need to mount perpendicular if you can track a part of an object.
10:39 AM Cracki: but you have to figure out the position relative to the road
10:39 AM SpeedEvil: For example, a wheel.
10:40 AM Cracki: perhaps you should ask that in #opencv
10:40 AM climbing_up: That's true. I was hoping to combine LIDAR data with this to avoid manual calibration
10:40 AM SpeedEvil: LIDAR is going to _considerably_ raise your costs.
10:40 AM Cracki: calibrate by placing a few markers on the road once, measuring their distances
10:40 AM Cracki: you could ignore camera lens distortions, but you shouldn't
10:40 AM SpeedEvil: https://hackadaycom.files.wordpress.com/2016/03/pi-speed-cam-featured1.jpg But - well - extracting moving wheels doesn't seem hugely challenging.
10:41 AM Cracki: in any case, intrinsic calibration is recommended
10:41 AM Cracki: you don't even need to detect wheels
10:41 AM SpeedEvil: And then it only is a case of the road dimension and orientation to the camera, which is easily fixed by driving along it once and noting the apparent size of the known wheelbase of the car
10:41 AM Cracki: just pixelwise "motion" detection (pixels that change value are motion)
10:41 AM Cracki: and then track the blobs
10:41 AM SpeedEvil: Wheels are slightly nicer in that they're a known shape, and parallax does not screw you
10:42 AM SpeedEvil: but it is not a very big effect.
10:42 AM SpeedEvil: You can likely ignore it in most cases.
10:42 AM Cracki: eh, get in #opencv if you want more optics stuff
10:43 AM climbing_up: Thanks I just joined #opencv
11:00 AM weyland|yutani: what is #opencv?
11:02 AM polprog: computer vison software
11:23 AM weyland|yutani: cool
06:06 PM jason__: Do laser cutters use something like a slicer (from 3D printing) where I can load paths from multiple files and lay them out in the work area? Or should I have them already defined in a single file?
06:56 PM Cracki: they do turn whatever file format into gcode
06:56 PM Cracki: and in principle such a program should be able to concatenate paths
06:56 PM Cracki: duplicate, arrange, scale, etc
06:58 PM Tom_L: if it supports work offsets use that
06:59 PM Tom_L: G54-59
09:56 PM rue_shop3: I still cant get grbl to reset home right
09:56 PM rue_shop3: I need to know how to say "your at home right now, this position your at."
10:01 PM rue_shop3: I need to sit down and play more
10:02 PM rue_shop3: it seems that in general, the command "make your current position zero" is not an easy one
10:05 PM Tom_L: you can't use offsets?
10:05 PM Tom_L: G54
10:05 PM Tom_L: is the universal default fixture offset
10:08 PM rue_shop3: but I dont know the co-ordinate, I want it to use the position ITS AT
10:08 PM rue_shop3: mainly because my pendant circumvents the controller
10:09 PM rue_shop3: (fixes latency and all sorts of issues)
10:11 PM Tom_L: http://linuxcnc.org/docs/2.7/html/gcode/g-code.html#gcode:g10-l2
10:12 PM Tom_L: doubt grbl supports that
10:12 PM Tom_L: but that's what you're looking for
10:15 PM rue_shop3: so, P0 by the sounds of it
10:15 PM Tom_L: or 1
10:15 PM Tom_L: but yes
10:16 PM Tom_L: or G10 L20
10:17 PM Tom_L: i forget which one i used
10:18 PM rue_shop3: https://www.shapeoko.com/wiki/index.php/G-Code
10:18 PM rue_shop3: hmm
10:19 PM Tom_L: appears to support it
10:19 PM rue_shop3: maybe not p0 tho
10:19 PM Tom_L: P1 is G54
10:19 PM rue_shop3: so I got a esp8266 working
10:20 PM Tom_L: nice
10:20 PM Tom_L: what is it?
10:20 PM Tom_L: :)
10:20 PM rue_shop3: I'll have to play with it, right now the machine is busy buzzing in my ear
10:20 PM rue_shop3: I made it a "hello world" webserver
10:20 PM Tom_L: oh, nice
10:20 PM Tom_L: online coffee pot
10:20 PM rue_shop3: getting it hooked up to the wireless network was a snot tho
10:20 PM rue_shop3: :)
10:21 PM rue_shop3: like all arduino code (which is just wrong somehow) the mac address example reports the mac address backwards
10:21 PM rue_shop3: which didn't help when entering it into the mac address filter of my wifi gateway
10:21 PM Tom_L: filo instead of fifo?
10:24 PM rue_shop3: hahahahahaha
10:24 PM rue_shop3: hahaha
10:24 PM rue_shop3: uh
10:24 PM rue_shop3: did I tell you I worked out how to use a motor as a wheel encoder for my new pendant?
10:25 PM rue_shop3: dc motor
10:25 PM rue_shop3: I software integrate the voltage from it, use it to simulate encoder pulses etc etc
10:25 PM Tom_shop: MDI_COMMAND = G10 L20 P1 X0
10:25 PM Tom_shop: MDI_COMMAND = G10 L20 P1 Y0
10:25 PM Tom_shop: MDI_COMMAND = G10 L20 P1 Z0
10:25 PM rue_shop3: L20?
10:25 PM Tom_L: from my config file
10:26 PM Tom_L: sets the work coordinate system
10:26 PM Tom_L: G10 P1 L20 --- (which is the equivalent of G92 X0 Y0 Z0) for work co-ordinate system G54 (#P1)[7] (#P2--#P6 are G55--G59 respectively) L20 sets the WCS offsets such that the current position becomes what you say in the axis words (X, Y, Z). The offsets depend on the current machine position.
10:26 PM rue_shop3: ok, I'll try it when the machines availabe for play
10:26 PM rue_shop3: ah
10:26 PM Tom_L: i have that mapped to a button on my control
10:27 PM rue_shop3: so its a way of looping back the current co-ord as the position
10:27 PM Tom_L: or at least i did at one time
10:27 PM Tom_L: i've slept since i did that
10:27 PM rue_shop3: anyhow, from a working demo, I just loaded the new pendant software on an arduino, and I'd moved the analog pins, the motor was recieving power and started spinning
10:28 PM Tom_shop: o<work_zero> sub
10:28 PM Tom_shop: G90
10:28 PM Tom_shop: G0 Z0
10:28 PM Tom_shop: G0 X0 Y0
10:28 PM Tom_shop: o<work_zero> endsub
10:28 PM Tom_shop: m2
10:28 PM Tom_L: a subroutine i call to send the machine to the previously set work offset
10:28 PM Tom_L: G54
10:29 PM Tom_L: also mapped to a button
10:29 PM Tom_L: send Z first
10:29 PM Tom_L: unless you like to buy cutters
10:29 PM rue_shop3: yea I'd like a button on my interface that resets zero
10:29 PM rue_shop3: those commands shoudln't cause it to move tho
10:29 PM Tom_L: http://tom-itx.no-ip.biz:81/~webpage/cnc/screenshot.png
10:29 PM rue_shop3: I think thats the problem I was having
10:30 PM Tom_L: you can see the buttons on the right
10:30 PM Tom_L: bottom is the L20 commands
10:30 PM Tom_L: zero axis is the subroutine
10:30 PM rue_shop3: cool
10:32 PM Tom_L: maybe before i croak i can convince you to try it
10:33 PM Tom_L: some guy has been working on a newer touchscreen interface to it as well
10:33 PM Tom_L: it already has one
11:03 PM Tom_L: rue_shop3, what is the latest grbl version?
11:06 PM Tom_L: rue_shop3, that doc you posted on shapeoko explains what you want to do
11:07 PM Tom_L: 2/3 the way down under 'What about G28 and G30 ' subnote 'Simplest workflow is this:'
11:08 PM Tom_L: Simplest workflow is this:
11:08 PM Tom_L: First time:
11:08 PM Tom_L: Home the machine.
11:08 PM Tom_L: Jog to where you want your WCS 0, 0, 0 to be.
11:08 PM Tom_L: Say G10 L20 P1 X0 Y0 Z0.
11:08 PM Tom_L: GRBL calculates the offsets from machine origin and stores them in non-volatile memory (EEPROM).
11:08 PM Tom_L: Every other time:
11:08 PM Tom_L: Home the machine. Done.
11:08 PM Tom_L: just as i did on mine
11:08 PM Tom_L: i just broke mine up into single axis commands
11:12 PM rue_: my pendant overrides the controller positioning
11:13 PM Tom_L: is it supposed to?
11:13 PM rue_: thats why I need a 'your at zero now" command
11:13 PM rue_: yes
11:13 PM rue_: it intercepts the grbl step/dir outputs
11:13 PM rue_: and generates its own when your using it
11:14 PM Tom_L: the zero one just sends it to the preset position you set with G10 L20
11:14 PM Tom_L: all it is, is a G28 command
11:14 PM rue_: no, I do not want i tto move the motors, I just want it to reset whereever its at to zero
11:14 PM Tom_L: that's what G10 L20 does
11:14 PM rue_: I was having problems where the 'set zero' would move the mtoors
11:15 PM rue_: no, I dont want it to mvoe the mtoros, I want it to just reset the position registers to zero
11:15 PM Tom_L: it won't move the motors
11:15 PM rue_: :)
11:15 PM Tom_L: it will store the current position in eeprom as your doc says
11:15 PM Tom_L: the G28 WILL move the motors
11:15 PM rue_: I dont even ahve the limit switches
11:15 PM Tom_L: so?
11:16 PM Tom_L: i'm using soft limits on a couple
11:16 PM rue_: yea, I ust set it to the origin on the workpeice and tell it to go
11:16 PM rue_: I usually ahve a 1:1 printout of the job I can overlay to make sure it where I want it
11:17 PM Tom_L: i use a wiggler to locate where i want zero to be
11:17 PM Tom_L: then set it using the g10
11:18 PM Tom_L: that's work offset, not machine zero
11:18 PM Tom_L: although some run from machine zero, i just don't happen to be one of them
11:21 PM rue_: half a contention with my first machine is waiting for it to zero the machine on startup
11:21 PM rue_: another half is waiting for it to get to the work origin
11:21 PM Tom_L: i recall you mentioning how slow it was a while back
11:21 PM rue_: then the other half it waiting for it to do a job you could have done faster by hand
11:22 PM Tom_L: i can see why you want to just say 'set zero here'
11:22 PM rue_: its the reason I dont ahve my new machines find machine home
11:22 PM rue_: the new stepper drivesrs help lots with machine speed
11:22 PM Tom_L: mine doesn't take long to do that
11:22 PM Tom_L: yeah
11:22 PM rue_: ouyou can really run up a motor using those new drivers
11:23 PM Tom_L: you could go even higher with mesa hardware
11:23 PM Tom_L: but i know....
11:24 PM Tom_L: grbl looks better than the last time i took a peek at it
11:24 PM rue_: no, the arduino can totally outpace the motor
11:24 PM rue_: no problem
11:24 PM rue_: its NOT like mach3 speeds
11:24 PM rue_: even armyofevilrobots machine is descent under grbl
11:25 PM rue_: armyofevilrobots, ping
11:25 PM Tom_L: i don't know alot about mach3 or mach4 except that it won't do alot of things lcnc will
11:25 PM rue_: and it cant get any speed over the parallel port
11:25 PM logicmoo is now known as dmiles
11:25 PM Tom_L: yeah parallel is pretty limited
11:25 PM rue_: armyofevilrobots, machine uses some nice little gecko drives
11:25 PM Tom_L: 540?
11:26 PM rue_: but has the wrong voltage power suppply, which kills a little performance
11:26 PM rue_: hmm
11:26 PM Tom_L: yeah mine is good for 70 or 80v iirc
11:26 PM rue_: yup 540
11:26 PM Tom_L: but i'm only running it at 48
11:26 PM Tom_L: mine will tolerate a higher voltage than the 540
11:26 PM rue_: the motors are, iirc wound in parallel, but would do better in series (or vise versa)
11:27 PM rue_: vise versa I think
11:27 PM Tom_L: i think parallel is better iirc
11:27 PM rue_: the current calculations were out by the assembler, its not 1:1 with the mtoor current
11:27 PM rue_: the drive is effectivly constant power
11:28 PM Tom_L: i think i'm barely driving mine
11:28 PM Tom_L: it's set for 2.5A iirc an i could go up to 4A with the steppers i have
11:28 PM Tom_L: the driver will go to 7A i think
11:28 PM rue_: his machine hasn't missed a beat, I'v had more problems with brushes and breaking off bits
11:28 PM Tom_L: yeah
11:29 PM rue_: *oops* that was down... and... I need a new bit...
11:29 PM Tom_L: nice thing about the pendant is finding zero and also squaring up blocks to mill pretty easy
11:30 PM rue_: I'v used the pendant to do some manual milling
11:30 PM Tom_L: you should spend the $17, it would be well worth it
11:30 PM rue_: flatten off things
11:30 PM rue_: $17 for?
11:30 PM Tom_L: an MPG
11:30 PM rue_: MPG?
11:31 PM Tom_L: i think they've gone up a little bit
11:31 PM Tom_L: manual pulse generator
11:31 PM rue_: hah oh
11:31 PM rue_: I got one
11:31 PM rue_: like $8
11:31 PM Tom_L: pfft
11:31 PM rue_: but its too big for the pendant case I got
11:32 PM Tom_L: http://www.ebay.com/itm/CNC-Manual-Pulse-Generator-MPG-6-Terminal-5V-60mm-for-engraving-handwheel/122298610827?_trkparms=aid%3D555019%26algo%3DPL.BANDIT%26ao%3D1%26asc%3D46674%26meid%3D91bc0b2c94f246e9a4f39d90347fd27a%26pid%3D100754%26rk%3D1%26rkt%3D1%26&_trksid=p2045573.c100754.m-4842
11:32 PM rue_: I poured some money into "real" pendant supplies, then got impatient waiting for them to arrive and made that one I did
11:32 PM rue_: yup, thats it
11:32 PM Tom_L: you got one of those?
11:32 PM rue_: yea
11:33 PM rue_: god, yea it was $18
11:33 PM Tom_L: i would find it hard to do without now that i have it
11:33 PM rue_: https://www.aliexpress.com/item/5V-CNC-numerical-control-manual-pulse-generator-RGT600-001-100B-5L-hand-CNC-machine-tools-encoder/32452353366.html?spm=a2g0s.9042311.0.0.mE1ost
11:33 PM rue_: I dont need metered ticks tho
11:33 PM rue_: I just dial it till its where I want it
11:34 PM Tom_L: metered ticks are handy though
11:34 PM rue_: I wont argue that, but I'v not wanted them for anything I'v done yet
11:34 PM Tom_L: i got used to them on the big machines
11:35 PM rue_: https://www.aliexpress.com/item/1-pcs-hot-selling-szomk-abs-plastic-handheld-junction-housing-203-100-35mm-electronics-enclosures-for/32320489918.html?spm=a2g0s.9042311.0.0.vYvXfD
11:35 PM rue_: I got that case
11:35 PM rue_: but its a *hair* too small for that wheel
11:35 PM Tom_L: yeah
11:36 PM theBear: give the wheel a haircut
11:36 PM rue_: :)
11:36 PM Tom_L: i got lucky and found an extruded aluminum box here at the surplus place
11:36 PM rue_: I like the 3d printed box I did
11:36 PM Tom_L: did you notice flyback had popped in the other day?
11:36 PM rue_: haha no
11:36 PM rue_: hows theBear
11:36 PM rue_: ?
11:36 PM Tom_L: he wanted you to join electronics again
11:37 PM rue_: hahaha
11:37 PM Tom_L: he says it's alot better than it was
11:37 PM rue_: no
11:37 PM rue_: hahahaha no
11:37 PM Tom_L: i declined too
11:37 PM rue_: its probably dieing
11:37 PM theBear: mmm, theBear is getting by :-)
11:37 PM rue_: assuming that channel life cycles are about the same length
11:41 PM rue_ is now known as rue_mohr
11:41 PM rue_mohr: test
11:41 PM rue_mohr: gee, I'v bought a LOT of cnc stuff
11:41 PM Tom_L: what sort of interface do you have for your mill?
11:41 PM rue_mohr: at which level?
11:41 PM rue_mohr: computer?
11:41 PM Tom_L: pc screen, keyboard, what?
11:42 PM rue_mohr: (lookahead and such)
11:42 PM Tom_L: lcnc has a run from line now
11:42 PM rue_mohr: like via serial port?
11:42 PM Tom_L: i haven't tried it
11:42 PM rue_mohr: you can dnc to it?
11:43 PM Tom_L: not that i know of
11:43 PM Tom_L: since it runs off the pc you don't need to
11:43 PM rue_mohr: yea
11:43 PM Tom_L: maybe on a pi or bbb or such
11:44 PM rue_mohr: armyofevilrobots, was just saying he has a touchscreen POS like computer he's doing away with, use for the cnc if I'd like
11:44 PM Tom_L: it has touchscreen interface
11:44 PM rue_mohr: which sonds good, one day that usb cable is going to short out when someone steps on it and I'll be out another bit
11:44 PM Tom_L: just load 'touchy' instead of 'axis' in the .ini file
11:45 PM Tom_L: and that guy is working on another one
11:45 PM rue_mohr: iirc the big haus had a specialized keyboard and a trackball?
11:45 PM Tom_L: https://github.com/KurtJacobson/hazzy
11:46 PM Tom_L: i dunno, they have a bunch of em at the school...
11:46 PM rue_mohr: haus?
11:46 PM Tom_L: yes
11:46 PM rue_mohr: big money school
11:46 PM Tom_L: yes again
11:46 PM Tom_L: they dontate the machines
11:46 PM rue_mohr: 8-|
11:47 PM Tom_L: in return, they get to demo them to clients
11:47 PM rue_mohr: ah
11:47 PM rue_mohr: cool
11:47 PM Tom_L: good for both
11:47 PM rue_mohr: and set people up with training for thier new products?
11:47 PM Tom_L: they've got a whole classroom full of just the control simulators
11:47 PM rue_mohr: huh
11:48 PM Tom_L: i haven't been down in that area that much
11:49 PM Tom_L: coming up on sleep thirty here.
11:49 PM Tom_L: gnite
11:50 PM rue_mohr: gngiht
11:50 PM rue_mohr: thinking on making my next machine soon
11:50 PM rue_mohr: more of a upright mill than a router
11:50 PM Tom_L: i was inspired by that surface grinder
11:51 PM rue_mohr: yes!
11:51 PM Tom_L: i doubt i have the time anymore to tackle a project like that though
11:52 PM Tom_L: i built all my electronics for an upgrade though
11:55 PM rue_mohr: yup, i just got my new controller to an operative state
11:55 PM rue_mohr: power, drivers, grbl, pendant, and em stop
11:55 PM rue_mohr: kinda just missing indicators and a aux 12V output for "machine case"
11:56 PM rue_mohr: (lights, fans, lasers, air blowers...)
11:56 PM rue_mohr: I have been putting 'puffers' on the spindles
11:56 PM orlock: daughters 6th birthday today
11:56 PM rue_mohr: yay! and you got here a robot
11:56 PM rue_mohr: !
11:57 PM orlock: she wants to make robots
11:57 PM orlock: but she has lots of Bionicles
11:57 PM orlock: which kinda counts
11:57 PM rue_mohr: :)
11:57 PM orlock: Lego Bionicles
11:57 PM rue_mohr: dont start her off with a butterknife and recepticle like I did
11:58 PM rue_mohr: ma said I had the biggest grin!
11:58 PM orlock: i let her tin the iron when i ws hooking up a reverse camera the other day
11:58 PM rue_mohr: :)
11:59 PM orlock: and she acted as a 3rd hand to hold the solder spool while i held the two work parts to join
11:59 PM orlock: work parts + iron, i mean
11:59 PM rue_mohr: try to help her past another one I learned the hard way, learn to not *just* catch things that fall, sometimes its better to wait them out (like a hot iron)
11:59 PM orlock: Yes, i properly soldered wires in the car, not just twist+tape