#robotics Logs

Apr 02 2020

#robotics Calendar

03:09 AM Jak_o_Shadows: Most of my work is simulation...
03:15 AM Jak_o_Shadows: Mostly of things you can't actually build
03:15 AM Jak_o_Shadows: and the other half the time, it's of things that we've got, but are hard to diagnose because of their complexity
03:15 AM Jak_o_Shadows: for example, my team just tested some hardware
03:15 AM Jak_o_Shadows: it probably didn't work.
03:15 AM Jak_o_Shadows: at the time, everybody thought it did
03:15 AM Jak_o_Shadows: compare it to a simulation, wouldv'e been obvious
03:56 AM mrdata: cool
08:44 AM katsumi: meeh
08:44 AM katsumi: https://www.youtube.com/watch?v=MUnUKoUmSeU&list=RDxoYWa8LvrYA&index=10
12:47 PM veverak: well
12:47 PM veverak: arducam did not naswered :/
01:05 PM i-make-robots: I'm trying gradient descent to solve inverse kinematics. The cost function (distance to target) for translation is easy. What's a good cost function for difference of rotation?
01:05 PM veverak: sec
01:05 PM i-make-robots: I tried absolute difference of matrixes, which is silly. I also tried some "angle between quaternions" I'd seen in blog posts. angle between two 4d elements doesn't make much sense, right?
01:06 PM i-make-robots: my translation cost is usually much much bigger than the rotation cost, so the arm slides to target but doesn't rotate the wrist into position.
01:07 PM veverak: well
01:07 PM veverak: ideally
01:07 PM veverak: the distance of rotation and translation is two-dimensional vector
01:07 PM veverak: 'distance' and 'angle distance'
01:07 PM veverak: (smallest angle)
01:08 PM veverak: i-make-robots: in case of robot, I found a 'fucntion' that merges these values - it's based on radius of the robot
01:08 PM veverak: i-make-robots: 'alpha*radius' gives you arc the robot has travel when it rotates
01:09 PM veverak: so the distance of 'alpha' rotation becames equivavlent to the case when robot moves 'alpha*radius' forward
01:09 PM veverak: which is of course relevant only for robots, but it works quite well
01:10 PM veverak: *for mobile robots
01:18 PM i-make-robots: my robot is an arm, and the base is not mobile.
01:18 PM i-make-robots: https://www.marginallyclever.com/products/sixi-robot-arm/
01:19 PM veverak: but the idea should be simple
01:19 PM veverak: *same
01:19 PM i-make-robots: then I don't get it :(
01:19 PM veverak: you find distance equivavalent of angular change
01:19 PM veverak: in case of mobile two wheeled robot it's radius of the wheels
01:19 PM i-make-robots: degrees changed?
01:20 PM veverak: wait
01:20 PM veverak: you have only angular change in case of robot arm no?
01:20 PM veverak: I think I amy mistunderstood the problem?
01:37 PM i-make-robots: I have two matrixes: the current end effector pose and the target end effector.
01:38 PM i-make-robots: to run gradient descent I need a cost function. I tried sum(abs(target[x][y]-current[x][y]))
01:38 PM i-make-robots: it vastly overweighs translation, because the rotation parts are never more than 2.
01:39 PM veverak: well
01:40 PM veverak: so we have two poses
01:40 PM veverak: you need to be able to get distance of the poses as two-dim vector
01:40 PM veverak: which is made of 'translation distance' and 'angular distance'
01:42 PM veverak: to get final distance, you can make weighted sum: p1*translation_distance + p2*anglur_distance
01:42 PM veverak: and just play with the coefficients
01:43 PM veverak: (p1,p2)
01:43 PM veverak: or write some smarter function, but I think that working on the pair fo distances is sensible approach here
01:45 PM i-make-robots: I tried that. ugly magic numbers.
01:45 PM i-make-robots: worked some of the time.
01:45 PM veverak: depends
01:45 PM veverak: for mobile robotics, p1 = 1, p2 = radius of the robot
01:45 PM veverak: that works quite well
01:46 PM i-make-robots: i really appreciate you taking the time to brainstorm this. I'm looking for advice from someone who has definitely conclusively solved this thing, because those people are out there.
01:49 PM veverak: the converison can be more generic
01:49 PM veverak: f1(translation_distance) + f2(angular_distance)
01:49 PM veverak: or even more complex
01:49 PM veverak: for me the generic idea is to figure out equivavlents
01:49 PM veverak: I mean, 'to what translation distance, should rotation around 30 degrees bee equal to?'
01:50 PM veverak: you answer this manually for let's say 3-4 angles
01:50 PM veverak: based on that you try to figure out function
06:22 PM i-make-robots: veverak - I think I got it now. I project a point along the X and Y axies of each matrix. Then my cost function is the difference between center, X handle, and Y handle for each matrix. I'm disappointed that the projection distance is still a single magic number, but the results speak for themselves and I've got better things to do :)
06:22 PM i-make-robots: Thanks for talking me through it earlier. I really appreciate your time.
06:22 PM i-make-robots: Bonus, the new method is half the lines of code and has no problems with sigularities.
06:23 PM veverak: nice
06:23 PM veverak: :)
06:23 PM veverak: i-make-robots: I think this will always be a magic number
06:23 PM veverak: but maybe you can train neuron network for this :D
06:27 PM i-make-robots: that's a lot more magic numbers (weights)...
06:28 PM veverak: :D
09:07 PM rue_mohr: i-make-robots, aggr?
09:07 PM rue_mohr: yea, k, you on?
09:24 PM i-make-robots: ?
09:24 PM i-make-robots: yes hello?
09:24 PM i-make-robots: rue_mohr?
09:24 PM i-make-robots: Bueller? ....Bueller?
09:30 PM rue_mohr: heh
09:30 PM rue_mohr: you were asking about my controller?