-
Notifications
You must be signed in to change notification settings - Fork 7
teword better trajectory #2
Comments
@rcywongaa again in case you didn't get noticed |
Sorry for the delay, I must have misconfigured my notifications to keep missing issues... I'm also struggling to fix this issue, as mentioned in the README, the solver actually does not solve until optimum, instead terminates with the following error message
I am still looking into the problem, looking into ways to increase the integer storage size. I'd be curious of the jumping motion you managed to achieve with your modified settings, perhaps you can fork and/or give me the link to your repo so I can have a look? It would be especially interesting if your settings managed to solve the problem to optimum. You can look at the generated |
@rcywongaa hello! I forked your repository and pushed the jump planner code here. But on mine computer the SNOPT output is:
I think the solved problem is far from optimum. We added centroidal dynamics contrains, Kinematic constraints, etc, but I think we need add more cost and set more specific cost weigh |
I have some thoughts to explore the way to solve the trajectory:
And, maybe it is time to ask Prof. Russ Tedrake for help! I am going to discuss with them at StackOverflow and see if they have any advice. |
By the way, do you use Zhihu (a Chinese social media)? I find someone with the same nickname as you. |
And here is the StackOverflow post |
From this message, it is certain that the optimization failed. Likely it is stuck at a local minimum or there are some errors in the constraints (or a combination of both and more). Since it failed to find a feasible solution, the solution you see is violating some constraints and is likely physically impossible (e.g. the strong joint vibrations you see).
All of these are good ideas. (1) might be done by locking some joints or replacing it with a robot with fewer joints. It might be tricky though since you still want to maintain enough joints for the robot to actually be able to execute the jump. (2) would also help and is also likely to solve the infeasibility problem. However, I have yet to find an efficient way of troubleshooting constraints. Most have been based on gut-feel, trial and error, and blind luck with frequent unfruitful results. I'd also like to learn how to do this properly... Looking at your implementation though, I have a few comments
(3) As mentioned by Honkai, this can be very effective in getting the optimizer out of a local optimum. But won't work if the constraints are wrong themselves. (4) This would be similar to (3), since you'll be guessing all variables across the trajectory (over all time
Nope, I don't use Zhihu |
@rcywongaa sorry for the delay! Back to the trajectory optimization again. Find a post related to the I am still trying to adjust these constraints. So I start from just standing. The main problem I find is the
The Strange thing is that when adding eight contact points, snopt will fail with
rather than
Although I replaced this, it didn't work for the Hope these little details help, thinks~ |
@rcywongaa hello, nice to see your updates. |
And I think the |
By the way, in my problem, normalizing the contact force variable is And now I'm quite sure that the |
I tested fix contact force related inappropriateness, and the exit flag changed to |
I can push the test if you need. |
Hi @zisang , it's very encouraging to see you making progress! Please push the test and make a PR, I'd be very interested in the changes! Could you elaborate a bit on normalizing the contact force variables? I'm not sure I completely understand. Do you mean adding a constraint that the contact forces must sum to something? Indeed the |
@rcywongaa I created a pull request. Both the active contact number and the dimension of the |
Quite hard for me to express clearly in English, feel free to ask any questions. |
Ah I understand now, let me give that a try as well! |
hello! I am here to discuss this with you again.
Do you have any advice on generating a better trajectory, that is at least good enough for a controller to apply to a robot?
I tried your Planner.py, and based on it I changed the
in_stance
sequence,initguess
ofq
, and add differentq_cost
.The optimizer does generate a jumping motion, but with large joint vibration, and I think it is not applicable to the controller.
I am not sure what to ask if I start a StackOverflow question, so I want to discuss it with you first.
If you are interested in the jumping motion, I am glad to push the code to github.
The text was updated successfully, but these errors were encountered: