#robotics Logs

Dec 27 2020

#robotics Calendar

02:07 AM rue_bed: orlock, the dir pins to the drivers?
02:14 AM rue_bed: you didn't get one of those worthless cnc boards with the built in drivers did you?
04:20 AM Jak_o_Shadows: Hmm, veverak, were you using any kind of AI/machine learning for your stuff?
04:21 AM Jak_o_Shadows: I mean, I've never quite followed what you are doing too well, but it always sounds like you have quite a powerful thing going
05:17 AM veverak: Jak_o_Shadows: nope
05:17 AM veverak: there may be some place for it
05:17 AM veverak: otherwise it's standard motion planning
05:18 AM veverak: (shortest path in graph - graph is state space of the robot)
05:18 AM Jak_o_Shadows: Fair
05:18 AM Jak_o_Shadows: Friend and I are dipping our toes in
05:18 AM Jak_o_Shadows: I'm kinda interested in using it to find gaits for legs
05:19 AM veverak: sure, that is possible
05:22 AM veverak: Jak_o_Shadows: idea is simple, you define (mathematically) your "state space" (usually some sort of math vector)
05:22 AM veverak: you define expansion function - 'if robot is in state X, what states it can get into from that?'
05:22 AM veverak: and you implement A* over it
05:23 AM Jak_o_Shadows: Continuing the leg example, would you use the leg angles, or end effector position?
05:23 AM veverak: I use leg angles
05:23 AM veverak: to be precise, I have discretized leg angles
05:23 AM veverak: (so, I work with leg angles: 0...24, and somwhere is formula that converts it to real angles, makes a lot of stuff much simpler)
05:23 AM veverak: (and it's uint8_t)
05:24 AM Jak_o_Shadows: So how do you come up with the weights for the A*?
05:24 AM veverak: professional guessing :/
05:24 AM veverak: in case of only leg movement
05:24 AM veverak: if you know the torque of the thing and have proper3D model
05:25 AM veverak: *of the joints
05:25 AM veverak: and have central of mass, weight, etc...
05:25 AM veverak: with little bit of math, you can make some guess of how long will the `state change` take
05:25 AM veverak: thing is, that is also relative to actually orientation of the body
05:27 AM Jak_o_Shadows: Ok. So how do you say which state you want to get to?
05:27 AM Jak_o_Shadows: in the end
05:27 AM veverak: for leg movement, I have algorithm that selects 2-3 points on the ground, where I want the leg to move to
05:27 AM veverak: in case of leg, I do not have 'expansion function', but I generated full state graph - it's all in the memory
05:28 AM veverak: so I just find closest valid state to each point
05:28 AM veverak: (valid -> not in collision)
05:28 AM Jak_o_Shadows: Yeah. I like that
05:28 AM Jak_o_Shadows: For your leg position algorithm - I THINK that's where I want the ML to come in
05:29 AM veverak: sure
05:30 AM veverak: I want to use ML for the cost assesment
05:30 AM veverak: "guess cost" -> "measure it" -> "update"
05:30 AM Jak_o_Shadows: Oh yeah, I like that as well
05:30 AM Jak_o_Shadows: I proposed something like that at work, but it got shut down
05:31 AM Jak_o_Shadows: and they just threw another like 20% processing time on
05:31 AM veverak: huh
05:31 AM veverak: I mean, it's valid point
05:31 AM veverak: because the state of the hardware changes
05:31 AM veverak: and as I tend to find out, manufacturer sometimes does shitty job at specifing stuff properly
05:32 AM Jak_o_Shadows: Eh, this was all simulation - I was proposing a way to bypass SOME of the simulation by ML
05:32 AM veverak: you are limited in simulation by what you know about the hardware as I am aware...
05:34 AM Jak_o_Shadows: Simulation was pretty well validated (and crazy expensive to do that as well).
05:34 AM veverak: I see
05:35 AM Jak_o_Shadows: But hey, if "Let's throw 1000 cores at it" is the solution...
05:36 AM veverak: :/
05:36 AM veverak: I need to hack the servos
05:37 AM veverak: and I am 'article ready'
05:37 AM veverak: (internal regulator sucks, won't push full power into it when target position is close)
05:37 AM veverak: (which in case of small movements where the servo supports the entire robot is quite often)
05:37 AM Jak_o_Shadows: It's all the little things isn't it - the things that the big groups have sorted.
05:38 AM veverak: sure
05:38 AM Jak_o_Shadows: Like, having to hack own servos, or make own controller.
05:38 AM veverak: we got dynamixels for different project
05:38 AM veverak: I DO NOT EXPECT THAT KIND OF PROBLEMS
05:38 AM veverak: Jak_o_Shadows: it's serial bus servo
05:38 AM veverak: I also found out that 'velocity control' is just direct PWM control
05:38 AM veverak: so I wrote PID over that
05:38 AM veverak: it seems to work in tests (they simulate the servo)
05:38 AM Jak_o_Shadows: lol.
05:38 AM veverak: so, now in real life :)
05:39 AM Jak_o_Shadows: So yeah, the big groups have that sort of thing as instutional knowledge
05:39 AM veverak: it literally seems that the position control in this thing is just PID withou the I
05:40 AM Jak_o_Shadows: ... Does that even theoretically work?
05:42 AM veverak: it works for some stuff
05:42 AM veverak: it was funny in different scenario
05:43 AM veverak: unfolding sequence - the limbs are under the robot
05:43 AM veverak: at certain point, two joints have to lift the entireb ody
05:43 AM veverak: -> 'small lift' - was not able to lift it even a bit
05:43 AM veverak: -> 'so, let's incrase the distnace' - the motherfucker jumped on my table
05:43 AM veverak: (so servos are strong enough, just convice the regulator to use that)
05:44 AM Jak_o_Shadows: lol, yeah, because no I means it'll settle for a small error
05:47 AM veverak: so I am finally writing 'console' for controlling just one servo
05:47 AM veverak: with lua bindings
05:47 AM veverak: finish setting the PID values
05:47 AM veverak: and I suppose I can manually tune the controller in real life with that
05:48 AM Jak_o_Shadows: I should get my serial servo driver board to be compatible with the dynamiexel protocol
06:00 AM veverak: that is not hard
06:00 AM veverak: I have the protocol implemented I think
06:00 AM veverak: (did not tested it yet)
06:00 AM veverak: now to implement the registry table
06:02 AM Jak_o_Shadows: Yeah, it'll just be a neat feature to add
06:02 AM Jak_o_Shadows: Mybe if I get bored waiting for V3 of the PCB's to arrive
06:07 AM veverak: hmmm
06:08 AM veverak: we got student that wants to develop custom PCB+FW for the servos I am using
06:11 AM Jak_o_Shadows: Firmware is 100% the hard part
06:11 AM Jak_o_Shadows: Even if you are talking a digital servo with the h-driver on it and all
06:14 AM veverak: yeah
06:14 AM veverak: tell me about it
06:15 AM veverak: my FW just get's data, implements simple state machine, and sends it to the next part
06:16 AM veverak: 5k lines of C++ code, without _lib_ that is shared with other stuff
06:16 AM veverak: (but I went full retartd on error handling)
06:41 AM ATSystems: It terrifies me that I aspire to build robots, yet have basically no idea about what has been said in the last few hours :/
06:42 AM ATSystems: The mechanical part? a snap. Making them run without killing my wife? Not so much.
06:43 AM Jak_o_Shadows: veverak does things a little less slap-dash than most of us, and is also further along
06:43 AM ATSystems: Yeah, I get that vibe.
06:43 AM veverak: (well, I am trying to get my Phd. in this, so .. I have to )
06:44 AM ATSystems: I have my 55 switch matrix ready to go for onboard sensors, end stops etc, thats a nice start
06:44 AM ATSystems: oh neat!
06:44 AM ATSystems: Where do you want to take it?
06:44 AM veverak: faculty of informatics - masaryk univerzity in brno - czech republic
06:45 AM veverak: (I got masters from there)
06:45 AM ATSystems: I should have been clearer :) In which direction would you like to take your career? Aerospace? Earth sciences etc?
06:45 AM veverak: ah, robotics :)
06:46 AM veverak: I like motion planning for legged robots
06:46 AM veverak: and got certain ... attitude ... to make it distributed system
06:46 AM veverak: so, anything similar to that is fine
06:47 AM ATSystems: I'd say I hope you do better than the DARPA biped folks, but honestly, watching those machines tumble while trying to open doors is legitimately some of the funniest things you'll see on youtube
06:48 AM veverak: :D
06:48 AM veverak: my dream is making open source SW for legged robots that is actually used by the world
06:49 AM ATSystems: Love it man
06:49 AM ATSystems: or ma'am
06:49 AM ATSystems: I would like to open source my frame designs once they have been built and tested
06:50 AM veverak: that's the thing
06:50 AM veverak: it's not yet in a state when I would be willing to recommend it to somebody
06:50 AM veverak: :/
06:50 AM ATSystems: lots of hexawalkers and star wars styled tricycle bots
06:50 AM Jak_o_Shadows: Problem with open sourcing it is that everybody is going to want to do one little thing different
06:51 AM ATSystems: At least you know that though veve, better to be sure than release something half cooked and loose your audience
06:52 AM ATSystems: sleepytime here in Australia, night folks :)
06:52 AM veverak: night
06:52 AM Jak_o_Shadows: night
06:53 AM veverak: Jak_o_Shadows: yeah, I am prepared to be jerk saying "Fuck you, it was not designed for this"
06:53 AM Jak_o_Shadows: lol
06:54 AM Jak_o_Shadows: Also, I think my reward is fundamentally broken, because the further you go, the lower the reward gets.
06:55 AM veverak: also, my knowledge about motion planning
06:55 AM veverak: Jak_o_Shadows: the code for motion planning itself is actually simple
06:55 AM veverak: and pretty straightforward
06:55 AM veverak: BUT
06:55 AM veverak: finding what it is actually doing and what is actually happening (as in debugging) is complex as hell
06:55 AM veverak: it's the "simple thing - complex behavior" case
06:56 AM Jak_o_Shadows: That's where the fun comes from though!
06:56 AM veverak: in one prototype I stored the motion planning steps (as what states were discovered when) in SQL database and analyzed that
06:56 AM veverak: where "analyzed" means I've got bucnh of scripts analyzing various stuff about it
06:56 AM veverak: no single magical tool
06:57 AM Jak_o_Shadows: Yeah, i'm familiar with that kind of thing
06:58 AM Jak_o_Shadows: the "writing more code to analyse what your thing is doing thatn it took to do the thing"
06:58 AM veverak: yeah
06:59 AM veverak: (but I am dropping SQL for this)
06:59 AM veverak: it's problematic
06:59 AM veverak: -> it will spew the data into local .json or something
07:06 AM Jak_o_Shadows: Thought about HDF5?
07:07 AM Jak_o_Shadows: Lots of small files an be fairly problematic as well
07:08 AM veverak: hmmm
07:08 AM veverak: never heard of it
07:08 AM veverak: Jak_o_Shadows: yeah, I was thinking one file
07:08 AM veverak: but, not actually big json
07:08 AM veverak: rather one file with 'one json' per line
07:09 AM veverak: the json lines are fairly simple, it's just there is a lot of them
07:09 AM veverak: so I suppose this way could be fast for both generation and parsing
07:09 AM veverak: (and one file of reach _type_ of json struct)
07:09 AM veverak: ~ 6-7 files per motion planner run
07:11 AM Jak_o_Shadows: I have had fairly good experience with HDF5 - mostly from Matlab and Python though. Guy at work uses it from C++ though
07:11 AM Jak_o_Shadows: It's very hierarchircal, which can be good
07:12 AM veverak: interesting
10:40 AM sorki is now known as srk
07:30 PM briand2 is now known as AI4AI