Comments (10)
Indeed there is an issue. I think it comes from the contact model that is based by default on collision geometries instead of frames. The former is supposed to be more realistic but untested for now and numerically unstable model. I'm going to rework internally this part of the engine in a near future to handle generic collisions (collisions of all bodies with the ground plus auto-collisions).
For now, here is a PR fixing your issue ! Basically it is sufficient to overwrite the default options, so there is no need to fix jiminy itself. But it you want, I could make a new release of Jiminy that includes these changes.
By the way, I would advice you to use the environment with low-level PID controllers: ANYmalPDControlJiminyEnv
from jiminy.
I see you did some work based on jiminy here. If you have any question or want me to give you some advice / code review, do not hesitate. The documentation of jiminy is quite poor and providing a comprehensive tutorial would be amazing !
from jiminy.
Thanks!
Yes, it's an assignment for a Master's. Once we're finished I'm happy to make a tutorial from it. :)
from jiminy.
So, in the end do you need me to release a new version fixing the issue or you are planning to overwrite the base configuration manually?
from jiminy.
I overwrote the base configuration in my downloaded version of the package, so no worries!
from jiminy.
Perfect !
from jiminy.
Hello,
I am on the same team working on the ANYmal RL project. I managed to train it to stand for 20 seconds but it really struggles to move (maybe a few tiny steps forward only). I am thinking to use the ANYmalPDControlJiminyEnv as you recommended, but when I checked the action space for this environment, I got:
Dict(Q:Box([-0.72 -9.42477796 -9.42477796 -0.49 -9.42477796 -9.42477796 -0.72 -9.42477796 -9.42477796 -0.49 -9.42477796 -9.42477796], [0.49 9.42477796 9.42477796 0.72 9.42477796 9.42477796 0.49 9.42477796 9.42477796 0.72 9.42477796 9.42477796], (12,), float64), V:Box(-7.5, 7.5, (12,), float64))
Would it be okay if you could give us a brief explanation as what do they mean? I know they are upper and lower limits, but why separately to Q and V? Sorry for asking as I am not familiar with PID controls.
Thank you so much for your help in advance!
from jiminy.
There is one PID controller per motor. Each of them are responsible for the sending actual torque based on the error between the current and target state for the motors. More details are available here. In this case, the action is no longer the torque directly, but the target state of each motor. These low-level PID controllers are supposed to update the current torque at a higher rate than the action. More information about why doing this is important can be found in the sub-section about the action space of my preprint available on arxiv.
For simplicity, I advice you to only ignore completely the target velocity and set it to zero systematically, so that the policy only output the desired position of the motors and not the combination of both position and velocity.
from jiminy.
from jiminy.
No problem ! Feel free to ask if you need more details or you have any additional question :)
from jiminy.
Related Issues (20)
- [python/viewer] Bidirectional communication in onscreen mode with Panda 3D.
- [python] Rationalize Python dependencies HOT 2
- Modelling flexible link robots using virtual link/joint method HOT 44
- [core] Add backlash.
- Adding position constraint HOT 14
- [core] Add smooth random ground profile generation HOT 1
- [core] Get rid of confusing `system` hierarchy HOT 1
- [misc] Bad docstring formatting for Boost::Python bindings. HOT 3
- [python] Get rid of `use_theoretical_model` HOT 2
- [python/robot] Add option to specify a list of extension modules where to look for motors and sensors.
- [core] Improve performance of hpp-fcl collision detection using functors
- [jiminy/log] More effective way to restore model. HOT 4
- [core] Speed-up simulation by avoid unecessary computations HOT 1
- Feature Request: migrate from gym to gymnasium HOT 5
- [core] Add support of state aggregation and transmission constraints
- [core] Remove all `...All()` methods from sensors and motors
- [core] Add notion of algebra to sensor.
- [viewer] Add Open3d backend HOT 2
- [core] Add hybrid contact model
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jiminy.