Looking good Gertlex!
Can't wait to see some more video.![]()
Looking good Gertlex!
Can't wait to see some more video.![]()
looks at calendar
So, in the last ten months, I've been very slowly progressing... Hasn't helped that (1) I'm always busy with work and (2) work is very similar, cognitively to the stuff I am doing on a mech. My next milestone is to design and make new legs. (After that I can do full robot testing/debugging/take-over-the-world!) The first step of that has been determining leg geometry, and creating tools to tell me if that geometry is better/worse, and whether it self-interferes.
(I've managed to forget a lot of the leg terminology... tibia, femur, coax, shoulder, elbow, pan... I may be miss-using terms below)
Numa V1 vs Numa V2; To get new numbers to plug into analysis, I needed new models. A profile of the AX12 servos is easy to work with in Solidworks sketch mode, so I did that; screenshots below. More compact leg design is my goal. I'll likely remove the 4th servo, too, eventually.
Numa V1 vs Numa V2; I've got jupyter notebooks that reuse the same python3 code the robot uses for IK, but pipes that workflow into a visualization approach shown below. The leg shown is moving through a gait cycle where it spends part of the time on the ground and part of the time in the air.
I've got the body closer to the ground now (but also, Numa V2 is also a double-decker chassis currently; maybe I'll move the pan servos to the bottom level though...). The below are likely confusing as they show additional lines that represent edges I'm concerned may intersect (namely, the servo bodies)... But now that I'm reviewing all this I'm slightly facepalming, as I can of course just replace the 4th servo with a long curved or open tibia, and could have skipped most of this intersection work.
Numa V1 vs Numa V2: I wanted to be able to view the nominal torque at different points in the leg's movement. Torque is arbitrary units here, and arbitrary numbers, even, as I'm just using approximate weight values for leg segments. Along the way I did better prove to myself that the weight that matters is the weight of the body, and not the weight of the legs, though! Numa V2 below here has higher torque due to the foot contact point currently being further from the shoulder joint.
I'm of course reinventing a lot, and not doing purely the essentials, but it's all worth it (except the sad part where this leaves my C/C++ skills to atrophy, probably). In particular, some skills-y takeaways from the past many months are (1) better code that's easier to test and answer questions with; (2) appreciation for what tf does for ROS; (3) using jupyter notebooks more, and better understanding how to fit them into my software development workflows.
Next I should explore what removing that 4th servo *really* does for me (and I expect it to make plenty of sense to do so, of course).
Last edited by Gertlex; 09-09-2018 at 10:06 PM.
Last edited by giantflaw; 09-12-2018 at 01:09 PM.
I'm continuing to progress nicely, especially recently. But for the moment, I have a question for the peanut gallery:
Problem: For a given leg geometry, AX-12s can be mounted in two ways, resulting in reversing the positions you send them to. Previously I handled this with a bunch of direction variables (1 or -1), but also a lot of hard-coded position offsets. In particular, it looks like I'll need to regenerate several manual poses that I use as well.
Question: Does anyone know a good reference description of how to approach cleanly handling these parameters? i.e. I imagine the best bet is if a set of manually determined values are all defined in one spot and everything else is nicely derived from them. I probably want a documented outline of how the servos are oriented in the legs, and what the various offsets are.
This problem only just re-revealed itself to me, and I haven't gone researching/thinking/experimenting yet. Figured I'd end my day checking with you all for shortcuts![]()
Peanuts incoming:
For Onyx (RIP) I defined a "standard leg" where the coordinate system is "forward/back," "out/in," and "up/down."
The IK solution then runs in terms of this standard leg, and a separate multiply-and-offset step translates from standard leg to specific leg.
This means that, yes, I have a table of offsets and multiplies for each servo. (Although IIRC, I made the math so that the servo-0 position was solution-0, leading to less need to offset by anything other than "center position for the negatives.")
So the full control loop was:
- read time
- read inputs
- for each leg:
- multiple inputs by desired gait generation based on time
- translate desired gait target foot position to standard leg coordinate system
- solve standard leg
- translate standard leg solution to servo angles
- write pose
Why do you have the AX-12's in a "Z" configuration? To shorten the horizontal distance between the hip and the ankle?
The positioning of servos 2 and 3 is pretty much just what I decided looked good, and enabled a good range of motion of the ankle.
What's your take on that choice? It sounds like you have opinions :P
At the end of the day, I won't be surprised if I regret not just doing 2DoF like cire.![]()
How much does Numa V2 currently weigh?
Still gotta weigh it. I'm worried it weighs more than I intended, but I can't find my numbers for the original Numa's total weight.
Last edited by Gertlex; 04-22-2019 at 08:28 PM.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks