#robotics | Logs for 2016-01-03

Back
[00:42:03] <rue_shop3> prolly just a sheer pin, someone tried to use it for clearing snow and it was overloaded
[00:43:50] <Hyratel> I've had to replace the shear pin in a lawnmower engine
[00:44:27] <rue_shop3> that was on the flywheel tho
[00:44:36] <Hyratel> yeah
[00:44:43] <rue_shop3> cause someone hit a really hard rock and the flywheel kept going
[00:45:30] <Hyratel> actually it's from when I was taking the flywheel off and putting it back on trying to diagnose the magneto failing
[00:45:47] <rue_shop3> good one
[00:45:47] <Hyratel> and then the high voltage winding just up and died in the mag coil
[00:45:52] <rue_shop3> the little pin was sticking?
[00:46:03] <rue_shop3> oh you didn't check the pionts did you?
[00:46:03] <Hyratel> bad capacitor (condenser?) and bad high tension winding
[00:46:09] <Hyratel> checked them first
[00:46:23] <rue_shop3> odd the high voltage winding would fail
[00:46:28] <Hyratel> it was old
[00:46:35] <rue_shop3> they are
[00:46:46] <rue_shop3> most of the engines I kick around are 15+ years old
[00:46:56] <rue_shop3> seen a coil break
[00:47:03] <Hyratel> I think this was mid-70s
[00:47:39] <Hyratel> a ... Tecumseh?
[00:47:45] <Hyratel> engine
[01:35:12] <anonnumberanon> sup
[01:35:46] <anonnumberanon> does adjusting the prescaler on a timer give faster timing with no ill effects or with ill effects?
[01:37:41] <anonnumberanon> regarding timer interrupts, like timer 0 or timer 1
[01:44:12] * rue_shop3 plays with a robot arm he made
[01:44:35] <rue_shop3> anonnumberanon, it just increases the resolution of the timer
[01:44:39] <rue_shop3> what are you using the timer for?
[01:45:40] <anonnumberanon> for arduino micros(), wanna adjust the prescaler, wondering if that's the cause of the jitter in the pwm signal
[01:45:54] <rue_shop3> arduino is evil
[01:46:01] <rue_shop3> it multitasks the timer
[01:46:19] <rue_shop3> so if you adjust a timer prescaler probably everything will break
[01:46:27] <rue_shop3> program it as a raw avr
[01:46:59] <rue_shop3> then you know what resources are being used for what and you can manage conflicts yourself :)
[01:47:21] <anonnumberanon> I'll get back to programming tomorrow once i setup my lab again.
[01:47:46] <rue_shop3> the code I wrote for controlling the arms is crazy
[01:47:52] <anonnumberanon> Then there is still that problem of my radio chip interfering with my PWM loop...
[01:48:57] <rue_shop3> the radio screws up the pwm?
[01:49:58] <anonnumberanon> yeah, the pwm were decent while wired and then before doing more things with actually playing with the robot i wanted to finish the radio interface to control it from my controller that also has a radio chip
[01:50:23] <anonnumberanon> i expected everything would work and then hooked up the robot and the muscles started doing random things
[01:50:51] <rue_shop3> how many interrupts are you using at once?
[01:50:59] <rue_shop3> or your using arduino for this?
[01:51:21] <anonnumberanon> the code has two parts, the radio read, and then the pwm loop, which uses micros()
[01:51:28] <anonnumberanon> micros() is arduino yeah
[01:51:36] <anonnumberanon> and the radio code is arduino
[01:51:45] <rue_shop3> your outputting rc pwm or 0-100% pwm
[01:52:13] <anonnumberanon> i don't know
[01:52:22] <rue_shop3> what does the pwm output go to
[01:52:33] <anonnumberanon> directly to servos
[01:52:49] <rue_shop3> but your reading rc pulses from a radio, right?
[01:53:04] <rue_shop3> rc stands for radio control
[01:53:10] <anonnumberanon> i read it from 5 pots (0 to 10230
[01:53:19] <anonnumberanon> 1023)*
[01:53:24] <rue_shop3> its a name for the 0.5-2.5ms pulses that are used to control servos
[01:53:32] <rue_shop3> you said radio
[01:53:51] <anonnumberanon> radio is to not say wifi, it means 2.4Ghz
[01:53:54] <rue_shop3> are you generating rc pwm from pots or from reading radio pulses
[01:54:03] <anonnumberanon> from pots
[01:54:12] <anonnumberanon> on my home made controller
[01:54:17] <rue_shop3> so why is there a radio?
[01:54:21] <anonnumberanon> then sending them with the radio
[01:54:31] <anonnumberanon> to the robot's servo driver
[01:54:42] <rue_shop3> is it serial?
[01:54:53] <rue_shop3> something dosn't add up
[01:54:55] <anonnumberanon> it's over radio
[01:54:59] <anonnumberanon> unwired
[01:55:14] <rue_shop3> ok, so, what type of input does the transmitting radio have
[01:55:18] <rue_shop3> serial, or pwm
[01:55:43] <anonnumberanon> i2c or spi
[01:55:52] <rue_shop3> ok, does the transmitter work ok?
[01:56:11] <anonnumberanon> yeah, i receive the data at the receiving end
[01:56:38] <rue_shop3> ok, so the reciever screws up, does not generate the pwm properly from the serial data?
[01:58:01] <anonnumberanon> I don't know about serial but when I enable the radio, the PWMs go haywire.
[01:58:24] <rue_shop3> is it battery powered?
[01:58:48] <anonnumberanon> right now no, the radio controller is but the servo driver isn't
[01:59:01] <anonnumberanon> since I need stable power for testing
[01:59:13] <rue_shop3> and it communicates by i2c?
[01:59:38] <anonnumberanon> Let me check exactly what between spi or i2c.
[02:00:22] <anonnumberanon> well iirc the arduino sketch does contain(sorry desktop is in a box right now) #include <SPI.h>
[02:00:35] <anonnumberanon> so spi
[02:00:46] <anonnumberanon> or arduino's version of it therof
[02:01:00] <anonnumberanon> does that use interrupts on the micros() timer or something?
[02:01:21] <rue_shop3> ok do the arduio takes in spi and controls a few servos
[02:01:47] <anonnumberanon> yeah
[02:02:01] <rue_shop3> did they let you put the spi on any port or just a special port
[02:02:59] <anonnumberanon> I tried to change the pin definitions but that did not work so I guess their setup of pins is the only one that works with their lib.
[02:03:28] <rue_shop3> there should only be one, because the spi is a hardware system that cannot change pins
[02:03:44] <rue_shop3> just like there are only 4 real pwm pins
[02:03:55] <anonnumberanon> http://cdn.instructables.com/F00/F5PR/HUNS0KWD/F00F5PRHUNS0KWD.LARGE.jpg
[02:03:59] <rue_shop3> but they use software pwm, which is really ugly
[02:04:25] <rue_shop3> thats a lot of pins
[02:05:01] <anonnumberanon> yeah
[02:05:40] <rue_shop3> the spi probably has a badly written interrupt handler, and causes delays that screw up your pwm
[02:06:15] <rue_shop3> how did you program the pwm outputs?
[02:06:23] <rue_shop3> using the timed pulse command or a pwm library?
[02:06:48] <anonnumberanon> i have tried disabling with cli() before the pwm phase and sei() after it, and that fixed the PWMs generation and killed the radio.
[02:06:50] <anonnumberanon> HEH
[02:07:06] <rue_shop3> yup, as usual, bad arduino library
[02:07:21] <rue_shop3> how are you at coding C?
[02:08:14] <anonnumberanon> on chapter 5 of K&R2, had to stop studying it to build the robot heh
[02:08:26] <rue_shop3> it might also help if you do things like only send the positions from the transmitter if they CHANGE...
[02:08:41] <rue_shop3> too much data will help screw it up
[02:09:00] <rue_shop3> it would probably also help to slow down the baud rate of the spi
[02:09:09] <rue_shop3> I dont know if you can
[02:10:17] <rue_shop3> while(1) {
[02:10:18] <rue_shop3> transCalc(&(INP.buffer));
[02:10:18] <rue_shop3> for (i = 0; i < OUT.buffer.count; i++) OUT.buffer.in[i] = 0;
[02:10:18] <rue_shop3> transformSetDo(&BRIDGE, INP.buffer.out, OUT.buffer.in);
[02:10:18] <rue_shop3> transCalc(&(OUT.buffer));
[02:10:18] <rue_shop3> servoArmSync(&OUT);
[02:10:19] <anonnumberanon> I've turned a pin on and off to measure the time it takes the receiver to receive a full set of pwm values and it was in the hundreds of microseconds so I know when I enter the PWM loop the data has been received already.
[02:10:20] <rue_shop3> usleep(20000);
[02:10:22] <rue_shop3> }
[02:10:44] <rue_shop3> to make my system behave I had to wait 20ms between updates, otherwise the serial ports got jammed up
[02:11:00] <anonnumberanon> It receives 10 8 bit integers .
[02:11:17] <rue_shop3> hmm
[02:11:48] <anonnumberanon> So what does that code do?
[02:12:00] <rue_shop3> hwo much time does it have between updates?
[02:12:06] <anonnumberanon> there is no break in it, you're in an infinite loop
[02:12:10] <rue_shop3> how many servos are you updating?
[02:12:17] <rue_shop3> yes
[02:12:27] <rue_shop3> its a thread
[02:12:39] <anonnumberanon> what is a thread?
[02:12:52] <rue_shop3> its a multitasking thing, X86
[02:12:59] <rue_shop3> how many servos are you updating?
[02:13:12] <anonnumberanon> 10
[02:13:30] <rue_shop3> ok, so you have 25ms between radio packet updates, right?
[02:13:52] <anonnumberanon> i start all pwms at the same time and turn them off as they finish
[02:14:07] <rue_shop3> yea that takes a max of 25ms
[02:14:08] <anonnumberanon> so it takes max 2500us
[02:14:14] <rue_shop3> per servo
[02:14:16] <anonnumberanon> 2.5ms
[02:14:19] <rue_shop3> ah
[02:14:37] <rue_shop3> less than 8 bit resoltuion?
[02:15:19] <rue_shop3> must be a lot less if your software pwm'ing 10 servos at once
[02:15:51] <anonnumberanon> I don't know yet.
[02:17:26] <anonnumberanon> It's always 8bit res because of the pots, until you start putting some AI work into it, in which case it should be at a res that is within a deadband of 5us.
[02:17:43] <rue_shop3> well, if your pwm pulses are generated in the main loop, and you disabled all the interrupts when you generate the pulses, and the pwm is messed up, then I'm stumped
[02:18:10] <rue_shop3> but you said if you disable the interrupts the pwm works and the radio dosn't
[02:18:32] <rue_shop3> meaning your not giving long enough after doing the pwm to get the new radio values
[02:19:43] <rue_shop3> the radio will buffer the data for you?
[02:20:15] <anonnumberanon> I don't know how that lib works.
[02:20:32] <anonnumberanon> It's too big.
[02:20:46] <rue_shop3> what are the 10 bytes you send, all positions?
[02:20:55] <anonnumberanon> I just do radio.read()
[02:21:07] <anonnumberanon> yeah all positions
[02:21:08] <rue_shop3> how do you know which position is which?
[02:21:24] <anonnumberanon> there is a certain order to it
[02:21:42] <rue_shop3> if one gets lost, how do you know which one your getting?
[02:21:47] <anonnumberanon> right leg, left leg
[02:22:15] <rue_shop3> protocols always have a SYNC, so you know where a packet starts or ends
[02:22:31] <anonnumberanon> I think the thing has error checking. I cannot lose any one value. It sends an array(10)
[02:22:55] <anonnumberanon> If it failed it just fails to send the entire array(10).
[02:23:28] <rue_shop3> for example, my system uses a 4 byte packet, 0xFF N PH PL
[02:23:41] <rue_shop3> the 0xFF is the error check for the start of the packet
[02:23:54] <rue_shop3> then there is an 8 bit servo number,
[02:24:00] <rue_shop3> then the high and low position
[02:24:19] <rue_shop3> I make sure on the recieving side that the first byte is 0xFF
[02:24:34] <rue_shop3> its not infaluable, but it helps reduce errosr
[02:25:09] <rue_shop3> I also have a 2 byte packet format I use sometimes where the first bit of the first byte is always 0 and the first bit of the second byte is always 1
[02:25:13] <anonnumberanon> I got a hack to my current problem, an ugly hack.
[02:25:24] <rue_shop3> its the arduino way
[02:25:28] <anonnumberanon> I haven't implemented it yet.
[02:26:18] <anonnumberanon> receive with one avr and connect it to the servo driver avr through serial
[02:26:33] <anonnumberanon> serial will surely not interfere with my PWM generation
[02:26:37] <rue_shop3> I dont think it'll work
[02:26:50] <rue_shop3> you cant garuntee your packet framing
[02:27:08] <rue_shop3> and I suspect your sending the data as fast as you can
[02:27:27] <anonnumberanon> what is packet framing?
[02:27:36] <rue_shop3> <rue_shop3> for example, my system uses a 4 byte packet, 0xFF N PH PL
[02:27:37] <rue_shop3> <rue_shop3> the 0xFF is the error check for the start of the packet
[02:27:37] <rue_shop3> <rue_shop3> then there is an 8 bit servo number,
[02:27:37] <rue_shop3> <rue_shop3> then the high and low position
[02:27:37] <rue_shop3> <rue_shop3> I make sure on the recieving side that the first byte is 0xFF
[02:27:37] <rue_shop3> <rue_shop3> its not infaluable, but it helps reduce errosr
[02:27:39] <rue_shop3> <rue_shop3> I also have a 2 byte packet format I use sometimes where the first bit of the first byte is always 0 and the first bit of the second byte is always 1
[02:27:50] <anonnumberanon> I didn't implement serial yet i was thinking of using your methods for serial.
[02:28:08] <anonnumberanon> cause i wanted to get out of arduino's serial.print and etc..
[02:28:25] <anonnumberanon> as a good opportunity to start goign more the avr way
[02:28:29] <rue_shop3> on your transmitter, do you send the values as fast as you can?
[02:28:33] <anonnumberanon> but your code is dry at best
[02:28:38] <rue_shop3> heh
[02:28:43] <anonnumberanon> may take me a long time to understand it
[02:28:45] <rue_shop3> the code works properly
[02:28:45] <anonnumberanon> lol
[02:29:01] <anonnumberanon> well yeah, im sure it works well lol
[02:29:04] <rue_shop3> so, you dont need to send the values as fast as you can
[02:29:20] <rue_shop3> you only need to send one set of updates every 3ms or so
[02:29:38] <anonnumberanon> too bad it's not commented like a tutorial or even basic comments that explain what happens
[02:29:39] <rue_shop3> the servos cant be updated any faster than that anyhow
[02:29:52] <rue_shop3> yea, I'm bad at that (I'm sorry :( )
[02:30:08] <rue_shop3> if you tell me the code, I can comment one up
[02:30:28] <rue_shop3> just give me the filename
[02:31:01] <anonnumberanon> I'll be doing it tomorrow if i can finish my car brakes and setting up the lab and have a few remaining hours to get started. If not, the day after.
[02:31:09] <anonnumberanon> let me see about the file name
[02:31:30] <rue_shop3> tommorow is my last day off
[02:31:34] <anonnumberanon> can you paste your ircjunk agian im not on my desktop
[02:31:35] <rue_shop3> then I'm back to work
[02:31:51] <rue_shop3> http://ruemohr.org/
[02:32:17] <anonnumberanon> I need to be able to implement it from one avr to another, I can start with basic UART commands at least.
[02:32:23] <rue_shop3> http://ruemohr.org/~ircjunk/robots/arm7/hobbydriver/
[02:32:27] <rue_shop3> that code
[02:32:28] <rue_shop3> ?
[02:33:12] <rue_shop3> I totally updated that
[02:33:17] <rue_shop3> where is the update...
[02:35:04] <anonnumberanon> Okay usart.c and .h is what I need to study./
[02:35:06] <anonnumberanon> I think.
[02:35:15] <rue_shop3> I didn't write those
[02:36:12] <anonnumberanon> Do you have a code for serial between two avrs?
[02:36:24] <anonnumberanon> That's what I'll be doing.
[02:36:28] <rue_shop3> hmm there are a number of redundant folders forming here...
[02:36:45] <rue_shop3> that uart library will work for that, you just hook the two avrs up to each other
[02:37:59] <anonnumberanon> I'll also have to synchronize the serial in a certain manner that it happens after pwm is generated, at every loop.
[02:38:18] <rue_shop3> didn't post the new version....
[02:38:49] <Hyratel> I might get my dad to switch to my brother's old Samsung Rant phone.
[02:39:36] <rue_shop3> this is the untested of the new version.....
[02:40:41] <anonnumberanon> which one, main.c or something in v1? i haven't looked in v1
[02:40:54] <rue_shop3> I'm just cleaning that up
[02:41:04] <anonnumberanon> oh v1 must be work in progress
[02:41:05] <rue_shop3> I do an ugly archive thing
[02:41:12] <rue_shop3> its a backup
[02:41:21] <anonnumberanon> it doesn't work for you?
[02:41:27] <anonnumberanon> seems legit
[02:41:31] <rue_shop3> its been updated
[02:41:42] <rue_shop3> all things are backed up before they get broken
[02:42:38] <anonnumberanon> this reminds me of a few weeks ago when I looked for my servo driver code for 30 minutes
[02:42:43] <anonnumberanon> i was literally sweating
[02:44:06] <rue_shop3> hum, I shoudl have my version counter in this stuff
[02:44:54] <anonnumberanon> So I should make my own serial solution and we will compare?
[02:45:34] <rue_shop3> I didn't write it
[02:45:52] <rue_shop3> I used someone elses cause I didn't want to be the 10000000th person to write that library
[02:46:04] <rue_shop3> I have 4 different versions I'v modded in different ways
[02:46:31] <rue_shop3> mostly for printing and reading values in hex, binary, and decimal ascii strings
[02:47:09] <rue_shop3> hmm
[02:47:16] <anonnumberanon> ah that sounds like some neat ch3 and 4 K&R exercises
[02:47:43] <anonnumberanon> man you should see my radio controller it's pretty cool
[02:47:47] <anonnumberanon> i worked hard on it
[02:48:09] <anonnumberanon> if i get the robot to move in a controlled manner with it I'll post a long video about it
[02:48:14] <rue_shop3> so, there is code in the project folders, there is code in the programming folder, and there is code in the tutorials folders. and the avr folders
[02:48:16] <rue_shop3> ugh
[02:48:17] <anonnumberanon> with explanations and stuff
[02:48:48] <rue_shop3> today I'm gonna file it under avr code...
[02:48:51] * rue_shop3 shakes head
[02:49:17] <anonnumberanon> Yes, it's weird I don't like it, hard to find projects, prolly wouldn't take long to fix.
[02:49:25] <anonnumberanon> I couldn
[02:49:32] <anonnumberanon> t find ircjunk anymore.
[02:49:32] <rue_shop3> I been trying to redot he whole website for 5 years
[02:49:39] <anonnumberanon> LOL
[02:49:44] <anonnumberanon> okay give up
[02:49:46] <rue_shop3> http://ruemohr.org/%7Eircjunk/avr/code/hobbydriver-v3.tgz
[02:49:57] <rue_shop3> that is the latest *untested* code
[02:50:18] <rue_shop3> it allows you to put up to 4 controllers on one serial bus, and does position caching
[02:50:27] <rue_shop3> for synchronized moves
[02:51:30] <rue_shop3> I'll be crazy and post the code raw too
[02:51:39] <anonnumberanon> so it uses "caching" (don't know what that means) to put moves in a sequence?
[02:52:10] <anonnumberanon> maybe
[02:52:16] * anonnumberanon will google caching
[02:52:24] <rue_shop3> you send all the positions you want it to go to and it waits till you send a 'go' signal
[02:52:36] <rue_shop3> then it does them all at once
[02:52:41] <anonnumberanon> store away in hiding or for future use
[02:52:46] <rue_shop3> yea
[02:52:47] <anonnumberanon> so, like, saving?
[02:53:03] <rue_shop3> you can do things immediate, or cache a position set
[02:53:19] <anonnumberanon> ah yeah okay, what is the limit on the number of positions cached?
[02:53:27] <rue_shop3> 1 per servo
[02:53:46] <rue_shop3> so 8 positions per controller
[02:53:51] <anonnumberanon> also, what is the resolution of the moves, you just send one angle order, or also speed?
[02:54:04] <rue_shop3> just an angle, 0-24000
[02:54:10] <rue_shop3> so its 11+ bits
[02:54:13] <anonnumberanon> those are the only two things i could think of to send to a servo
[02:55:05] <rue_shop3> http://ruemohr.org/%7Eircjunk/avr/code/hobbydriver-v3/main.c
[02:55:16] <anonnumberanon> because with the element of speed you can increase or decrease the speed of the entire robot or a specific limb, changing the speed of gait for exemple
[02:55:36] <rue_shop3> yea, but thats done on a different level for my robots
[02:55:51] <rue_shop3> I have a multiaxis interpolator that does the speed control
[02:58:19] <rue_shop3> do you know about state machines?
[02:58:37] <anonnumberanon> Yeah.
[02:58:59] <anonnumberanon> I have to go back to my notes to remember what I came up with for speed.
[02:58:59] <rue_shop3> good, most of that code is a state machine that decodes the incomming packets
[02:59:17] <rue_shop3> speed is change/time
[02:59:33] <rue_shop3> so if you want the servo to move slowly, give it small change updates
[02:59:49] <anonnumberanon> I do state machines with switch(), I don't see it in the code.
[02:59:56] <anonnumberanon> Or with a stack too.
[03:00:03] <rue_shop3> } else if (ptr == 2) {
[03:00:07] <rue_shop3> I use elseif
[03:00:09] <anonnumberanon> Oh okay
[03:00:26] <hypodyne> first time I've seen a conversation in here.
[03:00:32] <rue_shop3> it really could have been a switch
[03:00:41] <rue_shop3> hypodyne, I been on vaccation
[03:01:15] <anonnumberanon> yeah or some kind of stack but it's a little more expert to implement
[03:01:31] <anonnumberanon> i don't even remember how to do it
[03:01:42] * anonnumberanon goes check his syntaxChecker.c program
[03:04:09] <hypodyne> I want to build an InMoov robot, Once I get my 3d printer sorted out.
[03:04:24] <rue_shop3> hehe calibration
[03:04:56] <anonnumberanon> rue_shop3, something of this sort, which has like 5 or 6 state iirc https://ideone.com/Vicxrm
[03:05:02] <hypodyne> yeah,, I have to tune the drivers on the ramps apparently
[03:05:30] <rue_shop3> steps/mm?
[03:05:42] <hypodyne> amps
[03:05:53] <rue_shop3> ah yea
[03:06:46] <anonnumberanon> gotta bed
[03:07:00] <hypodyne> took me days trying to figure out how to get the endstops working properly, and the config
[03:07:38] <rue_shop3> heh, your stack isn't exactly autonomous
[03:07:41] <hypodyne> guess its a learning experience
[03:21:17] <rue_shop3> anonnumberanon,
[03:22:07] <rue_shop3> http://codepad.org/LSq6ZkIr
[03:22:39] <rue_shop3> its 1am, I'm going to bed!
[03:28:16] <rue_house> hmm if there were a power outage at 12am, everyones clock would be set right
[03:40:37] <rue_bed> hypodyne, I'm gonna guess you have the microstepping maxed out, I dont suggest it, if the pulse rate of the arduino goes over 20Khz, bad things happen
[03:40:44] <rue_bed> that might cause missing steps
[03:52:22] <hypodyne> say I send it the command to go up 10.. it will go up 1 and jam.
[03:53:38] <hypodyne> Its a new board and drivers so I guess its just needs adjusting (if I havent fried it already)
[13:25:04] <deshipu> jhylands: I was wondering, are you using the transitor+diode schematic to do half-duplex serial for the bioloid protocol?
[13:25:13] <jhylands> no
[13:25:22] <deshipu> jhylands: or are you bit-banging it?
[13:25:38] <jhylands> with the cortex m4, it supports half duplex directly
[13:25:45] <deshipu> ah, I see
[13:25:46] <jhylands> using one pin of the UART
[13:26:15] <deshipu> hmm, I might actually use a pyboard to test this thing
[13:26:19] <deshipu> didn't think about it
[13:26:27] <jhylands> the code is in my brother's repo
[13:26:31] <deshipu> using rpi now, but it has a hardware bug in i2c
[13:26:58] <jhylands> https://github.com/dhylands/bioloid3/blob/master/stm_uart_bus.py
[13:27:04] <deshipu> thanks!
[13:27:07] <jhylands> in terms of setting up the port
[13:27:33] <jhylands> in the __init__ function
[13:29:47] <jhylands> gotta run, seeya
[13:46:51] <rue_house> dynamixel, if you ever feel like spending $1200usd for a servo.
[13:48:15] <rue_house> tho I see they have a $28 model, if you only have $1200 for your whole project....
[13:53:58] <rue_shop3> I wonder what the profit margin is on a $1200 servo
[13:54:12] <rue_shop3> I'm gonna guess about 500%
[14:10:35] <rue_shop3> anonnumberanon, you up?
[15:22:49] <rue_shop3> my firewood is frozen togethor, whens winter gonna be over?
[15:23:24] <deshipu> rue_shop3: I'm looking at the protocol, because turns out that i2c is not optimal for my home-made smart servo
[15:23:50] <deshipu> rue_shop3: fun fact about winter: we didn't even have snow this winter yet
[15:24:30] <deshipu> the roses are blooming
[15:24:43] <rue_shop3> yea, were having a warm one too
[15:24:48] <rue_shop3> global warming
[15:25:18] <deshipu> the people who came to ski in the Alps are not happy
[15:25:35] <rue_shop3> heh, I think we got some snow on whistler
[15:26:43] * veverak got -10C
[15:27:57] <deshipu> 5°C here now
[15:49:09] <robotustra_> 0 руку
[15:49:11] <robotustra_> here
[19:03:59] <akem> hi
[19:27:50] <Anniepoo__> howdy
[19:28:13] <Jak_o_Shadows> hi
[20:12:05] <RyanS> Hyratel; i stumbled accross your r/c robot video on lets makerobots... that thing's fast
[20:13:47] <Hyratel> 10mph
[20:13:58] <Hyratel> to go faster we'd have to change the gearing
[20:14:50] <Hyratel> it has ~18:1 ratio from the motor to the wheels, and 10" wheels, 4500RPM motor peak
[20:15:05] <RyanS> yeah, how steep can it climb on 10mph gearing
[20:15:59] <Hyratel> up to about 50% slope before it jsut slips
[20:16:18] <Hyratel> it's got gobs of torque - that' not the limiting factor - it's traction
[20:18:45] <RyanS> my gearmotors are worm drive and output 370rpm. But i want to limit it to about 6km/h to stop it running away too quick if something goes wrong
[20:19:28] <Hyratel> hahahahahahahahaha
[20:19:45] <RyanS> a remote battery kill switch perhaps
[20:19:54] <Hyratel> worm gear with 370RPM no load output?
[20:20:01] <Hyratel> what's your control system
[20:20:16] <Hyratel> because that's stupidfast for a worm gea
[20:22:51] <RyanS> 370 is the specs on the label, but my laser tacho said 280ish no load (granted batteries were low)
[20:23:18] <Hyratel> you can expect about that under light load
[20:23:40] <RyanS> im testing it with a wheelchair control system
[20:23:48] <Hyratel> that's still a higher axle RPM than my robot
[20:28:45] <RyanS> but im thinking a sabertooth for the motor driver, and I've also been reading about ardupilot rover (I only have *very* basic programming skills so that sounds easier to set up)
[20:30:01] <RyanS> Im going to gear it down further with chains or belts
[20:30:52] <Hyratel> get a 4:1 chain drive
[20:31:05] <Hyratel> that's a cheap solution and will get you maximum torque
[20:31:11] <Hyratel> better than software speed limits
[20:32:49] <RyanS> yeah I wasn't planning on limiting with software
[20:33:27] <Hyratel> https://www.northerntool.com/shop/tools/product_35625_35625
[20:34:51] <RyanS> here this uses sabertooth ESC and pixhawk, but it's the second video ive seen with steering issues https://www.youtube.com/watch?v=jsUzSFxwb4g
[20:35:41] <Hyratel> what do you mean by steering issues
[20:36:36] <Hyratel> that's a function of things higher in the stack that need tuning
[20:36:44] <Hyratel> the waggling?
[20:36:55] <RyanS> its 'snaking' along yeah
[20:37:02] <Hyratel> that's not the motor controller
[20:37:10] <Hyratel> that's the upper level logic
[20:39:43] <RyanS> its the autopilot unit though?
[20:40:19] <RyanS> this ones perfect https://www.youtube.com/watch?v=SgPYnMlAtXE
[20:41:59] <RyanS> Is that chain larger than pushbike chain?
[20:42:13] <RyanS> #35
[20:42:26] <Hyratel> it's just #35 roller chain
[20:42:35] <Hyratel> commonest for moving and power bits
[20:43:08] <Hyratel> it's about a third larger than bicycle chain
[20:44:18] <RyanS> ok, im in autralia, so i guess therres a metric equivalent
[20:44:37] <Hyratel> do you have Northern Tool there?
[20:44:51] <Hyratel> but you need a 12 tooth and a 60 tooth
[20:47:49] <RyanS> nah, no nothern tool
[20:48:12] <Hyratel> any farming/machinist/industrial suppliers?
[20:49:49] <RyanS> yeah
[20:50:00] <Hyratel> that's where you should look then
[20:50:18] <Hyratel> you'll want a chain breaker and more chain than you think you'll need, plus master and half links
[20:50:33] <Hyratel> and it's still more conveneint than timing/toothed belt
[20:50:40] * robotustra_ music https://www.youtube.com/watch?v=I6i9EPz-K6U
[20:50:43] <Tom_itx> #35 is used on minibikes
[20:50:50] <Tom_itx> look there too
[20:51:07] <Tom_itx> gokarts etc
[20:51:43] <Hyratel> #35 is probably generic enough that you can find parts for it even in a place with mostly metric parts
[20:51:58] <RyanS> http://www.bikebiz.com.au/categories/Parts-%26-Accessories/Motorcycle-Parts/Motorcycle-Chains%7B47%7DSprockets/
[20:53:25] <Hyratel> what kind of shaft do your motors have
[20:53:56] <RyanS> 1/2"
[20:54:15] <RyanS> keyed
[20:54:40] <RyanS> Despite being manufactured in NZ
[20:55:41] <Hyratel> http://www.andymark.com/ProductDetails.asp?ProductCode=am-0736
[20:56:28] <Hyratel> #35 roller chain, dual, 1/2" keyed bore, 12 tooth
[21:00:01] <psYbR> hi guys. any tips on getting a bot like this to drive in a straight line a bit easier?
[21:00:02] <psYbR> https://www.youtube.com/watch?v=s6ZmYSbDJ3I
[21:01:11] <Hyratel> encoders on the motor shafts, compare the RPMs. if you need an exact heading, you need a differential PID or other control loop
[21:01:53] <RyanS> i have a lathe and mill, I wonder if i can machine sprockets the same way as spur gears
[21:02:16] <Hyratel> possibly, but it'll cost more time than shipping would cost you
[21:02:36] <Hyratel> espeically if you need a fairly common size
[21:02:44] <psYbR> Hyratel: i'm using an IBC - http://www.robotmarketplace.com/products/0-IBCv2.html could I do that with this setup you reckon?
[21:04:17] <RyanS> yeah, but I have been meaning to get a dividing head anyway and 6 spockets the cost adds up
[21:04:36] <Hyratel> RyanS, if you think it's worth your time and effort, then go for it
[21:05:03] <Hyratel> psYbR, I don't see any encoder inputs
[21:05:23] <Hyratel> you need at least a microcontroller to do encoder-based RPM matched steering
[21:06:56] <psYbR> sounds difficult :P
[21:06:57] <Hyratel> psYbR, are you making a combat robot?
[21:07:00] <psYbR> yep
[21:07:24] <robotustra_> psYbR: do you have picture?
[21:07:55] <psYbR> robotustra_: this is the back half of it driving around https://www.youtube.com/watch?v=s6ZmYSbDJ3I
[21:09:13] <psYbR> there's my tacky blog post if you want to check it out in detail ;) http://tanglesgaming.com/blog/?page_id=132
[21:11:27] <robotustra_> what battery do you use?
[21:11:31] <robotustra_> Lead?
[21:12:29] <psYbR> lipo
[21:12:50] <robin314> psybr: Do you use encoders for the motorswheels?
[21:13:06] <robotustra_> Is is sumo bot?
[21:13:14] <psYbR> robin314: no they're just regular brushed motors
[21:13:37] <psYbR> robotustra_: ? it'll have a flamethrower which bolts on to the front and forms the front half of the bot
[21:13:48] <Hyratel> psYbR, encoders are independent of brushed/brushless
[21:13:51] <robin314> will it remain remote controlled? Your work looks good!
[21:15:47] <robotustra_> psYbR: For what tipe of battles it will be used?
[21:15:59] <psYbR> thx :) yeah it will be R/C. This one is for RoboWars... my other bigger bot will get LiDar and sonar and run ROS
[21:16:30] <robotustra_> I would like to see autonomous robot wars
[21:16:33] <psYbR> robotustra_: the 13.6kg / 30lb "sportsman" class - no high-kinetic-energy weapons
[21:16:46] <jhylands> robotustra_, that's what sumo is, just without the damage
[21:17:14] <robotustra_> jhylands: sumo is not so spectacular
[21:17:27] <jhylands> well, boring sumo isn't
[21:17:34] <jhylands> good sumo is pretty cool
[21:18:01] <RyanS> if encoders are reading off motor shafts vs wheels, does that create issues if the drivetrain has backlash ?
[21:20:36] <Hyratel> RyanS, for the kinds of distances we're talking about, that's a nonissue
[22:40:23] <RyanS> Hyratel: what about travelling 1km+ ?
[22:40:43] <Hyratel> autonomously?
[22:41:12] <Hyratel> do you have other ways of determining your location and spatial awareness?
[22:44:26] <RyanS> well pixhawk has gps, compass but obviously not indoors. you can use sonar, lidar, encounters (I guess they use dead reckoning or something )
[22:44:55] <RyanS> encoders*
[22:45:03] <robin314> robomagellan?
[22:48:49] <RyanS> no just around my house, street, backyard
[22:53:00] <robin314> Here is a spark in inspiration I once received:
[22:53:47] <robin314> Watching a grasshopper, after it jumped, and I realized that it had local spacial awaerness, but it's abosolute position was not needed
[22:54:10] <jhylands> robin314, that's exactly how I look at navigation as well
[22:54:33] <jhylands> we don't need to know our X-Y position in a room in order to get from one side to the other
[22:54:53] <robin314> You can do a lot without a global or extended map. Local awareness with some innaccurate location is fine
[22:55:07] <robin314> yeah, I tend to overcomplicate
[22:56:03] <robin314> sucess is not banging my toe against my dresser
[22:56:41] <RyanS> so encoders and sonar avoid obstacles because it knows how far it's been and can see obstacles?
[22:58:01] <robin314> encoders and sonar work well locally, but dead reckoning to a very large map is often unneeded
[22:58:35] <jhylands> I think maps should be vector-based, with landmarks and approximate distances and directions
[22:58:58] <robin314> I think most your navigation can be done with local sensing (sonar, etc) and a local map and a very simple vector to your gaol
[22:59:08] <robin314> Here is an old project from 2008
[22:59:09] <robin314> http://imgur.com/gallery/tFaCz
[22:59:20] <RyanS> what if i want it to go to the lounge from its current locaating if it cant get gps coordinates?
[23:00:10] <jhylands> if you have a vector-based rooms map, and you know where the exits (typically doorways) are roughly, and you know which room you start in
[23:00:14] <jhylands> then it should be doable
[23:00:51] <RyanS> new environments?
[23:01:09] <jhylands> new environments are hard, unless you can use landmarks
[23:01:24] <jhylands> If I put you in my house and tell you to find the bathroom, its non-trivial
[23:01:31] <jhylands> you have to searhc
[23:01:33] <jhylands> search
[23:01:57] <jhylands> but you also have to be able to recognize when you reach your destination
[23:03:15] <RyanS> yeah, that'd be hard for robots... our roomba has no idea
[23:06:57] <jhylands> robin - I built something similar: http://www.huv.com/Brainbot-Crawler-04.jpg
[23:11:06] <robin314> jhylands, That looks really nice. (Laser, camera, GPS = dang)
[23:11:18] <jhylands> yeah, it was a funded project
[23:11:36] <robin314> Did you have your processing done on a laptop or onboard?
[23:11:48] <jhylands> it had a 2.8 Ghz Core 2 Quad onboard
[23:11:56] <psYbR> robin314: very cool
[23:12:26] <robin314> Oh I can see it here: http://www.huv.com/Brainbot-Crawler-02.jpg
[23:13:10] <jhylands> yeah
[23:13:37] <robin314> What is the oval thing under the GPS antenna? Camera?
[23:13:40] <jhylands> https://www.youtube.com/watch?v=mXmyYyRZn6M
[23:13:47] <jhylands> no, its a compass
[23:14:57] <jhylands> well, its a 9=axis IMU
[23:16:29] <robin314> I think your software would have been even more impressive
[23:16:37] <robin314> that is a nice robot
[23:17:01] <jhylands> the problem was, I didn't understand probability theory, and you need that to deal with all the sensor data you get
[23:17:21] <robin314> Khalman filter...
[23:17:58] <jhylands> more like bayesian filter
[23:18:21] <jhylands> its all well know now, but six years ago when I was working on that, not so much
[23:23:06] <robin314> Yeah, working as an engineer doing mostly project management and not diving into the technical for the past 7 years has had its down sides
[23:23:39] <robin314> my hobbies are my saving grace for still doing technical work
[23:24:03] <jhylands> I'm lucky that I've stayed out of management completely, and just stuck to the technical side of things
[23:40:33] <Hyratel> dead reckon off frequent landmarks
[23:40:49] <Hyratel> every time you hit a new landmark, your accumulated error is zeroed