preparing for 2.82 release
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
preparing for 2.82 release
Just to let you know:
I am applying processing some issues from the issue tracker, apply some patches, and prepare for a Bullet 2.82 release.
It is mostly bug fixes, because I have been working on Bullet 3.x mainly (at http://github.com/erwincoumans/bullet3) and Bullet 3 is making good progress on GPU.
Thanks,
Erwin
I am applying processing some issues from the issue tracker, apply some patches, and prepare for a Bullet 2.82 release.
It is mostly bug fixes, because I have been working on Bullet 3.x mainly (at http://github.com/erwincoumans/bullet3) and Bullet 3 is making good progress on GPU.
Thanks,
Erwin
-
- Posts: 10
- Joined: Mon Sep 09, 2013 4:54 pm
- Location: Buenos Aires, Argentina
Re: preparing for 2.82 release
Just curious, what language are you using for GPU access?
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: preparing for 2.82 release
OpenCL is used for the GPU, it is pretty much a subset of C, C99.
I'm organizing the code so that most of the implementation can be shared with regular CPU code, and possibly DX11 DirectCompute or CUDA.
I'm organizing the code so that most of the implementation can be shared with regular CPU code, and possibly DX11 DirectCompute or CUDA.
-
- Posts: 10
- Joined: Mon Sep 09, 2013 4:54 pm
- Location: Buenos Aires, Argentina
Re: preparing for 2.82 release
Is it possibly to implement it in Cg so that it is architecture free? Just asking, I was about to start learning and coding my project in Cg till I found this library...Erwin Coumans wrote:OpenCL is used for the GPU, it is pretty much a subset of C, C99.
I'm organizing the code so that most of the implementation can be shared with regular CPU code, and possibly DX11 DirectCompute or CUDA.
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: preparing for 2.82 release
Cg is not generic enough to develop general purpose collision detection and constraint solver. You could use Cg for a simplified implementation.
What do you mean by "architecture free"? OpenCL works on NVIDIA, AMD and Intel GPUs on all operating systems.
What do you mean by "architecture free"? OpenCL works on NVIDIA, AMD and Intel GPUs on all operating systems.
-
- Posts: 10
- Joined: Mon Sep 09, 2013 4:54 pm
- Location: Buenos Aires, Argentina
Re: preparing for 2.82 release
and also works on ARM gpus, Idk i guess i meant to make stand alone from any lib... but that doesn't make any sense.Erwin Coumans wrote:Cg is not generic enough to develop general purpose collision detection and constraint solver. You could use Cg for a simplified implementation.
What do you mean by "architecture free"? OpenCL works on NVIDIA, AMD and Intel GPUs on all operating systems.
-
- Posts: 171
- Joined: Sun Jan 17, 2010 4:47 am
Re: preparing for 2.82 release
Erwin,
Do you have a change list for 2.82 yet or is that still in progress?
Aside from the GPU pipeline, do you have a change list for Bullet 3?
Also in Bullet 3 is the GPU pipeline going to be the only supported pipeline or is it an upgrade of Bullet 2 with added GPU support?
Do you have a change list for 2.82 yet or is that still in progress?
Aside from the GPU pipeline, do you have a change list for Bullet 3?
Also in Bullet 3 is the GPU pipeline going to be the only supported pipeline or is it an upgrade of Bullet 2 with added GPU support?
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: preparing for 2.82 release
I am still reducing the long list in the issue tracker, before making a Bullet 2.82 release.Mako_energy02 wrote:Erwin,
Do you have a change list for 2.82 yet or is that still in progress?
The change log is basically the commit messages here, from SVN revision 2613 (Bullet 2.81) until now.
See https://code.google.com/p/bullet/source/list
Bullet 3.x will be a OpenCL GPU-only pipeline, for the first releases. If you need a CPU pipeline, you use Bullet 2.x. Note that Bullet 2.x and 3.x can co-exist in the same binary, there are no naming/linking conflicts.Aside from the GPU pipeline, do you have a change list for Bullet 3?
Also in Bullet 3 is the GPU pipeline going to be the only supported pipeline or is it an upgrade of Bullet 2 with added GPU support?
You can track progress through the commits to Bullet 3.x here: https://github.com/erwincoumans/bullet3/commits/master
-
- Posts: 18
- Joined: Tue Sep 24, 2013 12:29 pm
Re: preparing for 2.82 release
Will the Featherstone Solver be added in this release?
looking forward to it~
looking forward to it~
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: preparing for 2.82 release
I am looking at the moment if I can add a preview of the Featherstone implementation into Bullet 2.82.
If I can do a basic integration with the Bullet constraint solver for contacts/limits, and I can create a basic sample, I may do it.
Thanks,
Erwin
If I can do a basic integration with the Bullet constraint solver for contacts/limits, and I can create a basic sample, I may do it.
Thanks,
Erwin
-
- Posts: 463
- Joined: Fri Nov 30, 2012 4:50 am
Re: preparing for 2.82 release
Would this mean the implementation would work with motor joints but not with sleeping? If sleeping is the only thing keeping it from being something other than preview then I'm sure you won't get any complaints After all, if you need featherstone then sleeping is usually a far less important thing.Erwin Coumans wrote:I am looking at the moment if I can add a preview of the Featherstone implementation into Bullet 2.82.
If I can do a basic integration with the Bullet constraint solver for contacts/limits, and I can create a basic sample, I may do it.
Thanks,
Erwin
Look forward to finally having an implementation, it'll help some of my old projects be much more stable.
-
- Posts: 36
- Joined: Sun Feb 10, 2013 6:52 pm
Re: preparing for 2.82 release
Since Bullet 3.x won't have a CPU pipeline for the first releases (is it eventually planned?), will Bullet 2.x continue receiving improvements alongside 3.x?Erwin Coumans wrote: Bullet 3.x will be a OpenCL GPU-only pipeline, for the first releases. If you need a CPU pipeline, you use Bullet 2.x. Note that Bullet 2.x and 3.x can co-exist in the same binary, there are no naming/linking conflicts.
You can track progress through the commits to Bullet 3.x here: https://github.com/erwincoumans/bullet3/commits/master
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: preparing for 2.82 release
I do spend some time processing the issue tracker, so bug fixes and improvements by users will still improve Bullet 2.x
For the Bullet 2.82 there are various bug fixes, and preliminary support for Featherstone btMultiBody, using reduced/general coordinates.
For the Bullet 2.82 there are various bug fixes, and preliminary support for Featherstone btMultiBody, using reduced/general coordinates.
This is a new Featherstone implementation, that has not been discussed before. I am currently integrating it into Bullet 2.x. I might be able to enable 'sleeping' for btMultiBody. The first version might not have all constraints/motors implemented yet.Would this mean the implementation would work with motor joints but not with sleeping?
-
- Site Admin
- Posts: 4221
- Joined: Sun Jun 26, 2005 6:43 pm
- Location: California, USA
Re: preparing for 2.82 release
I am close to the Bullet 2.82 release, this week: some testing, documentation update and a demo for the new MLCP solver.
The btMLCPSolver is a replacement for the btSequentialImpulseConstraintSolver, that explicitly creates the full MLCP A matrix and b vector.
You can use PGS, Lemke, Dantzig or PATH solver . If the MLCP solver doesn't produce a result, there is an automatic fallback to the original btSequentialImpulseConstraintSolver.
Here is an example how to use it:
It is the first introduction of the btMultiBody (Featherstone) and btMLCPSolver to Bullet, we will improve the implementation in upcoming releases. I have some more MLCP solvers (Lemke, COMPASS etc) that are not ready for release yet. Another idea to explore is to allow fine-grain control when a certain MLCP solver is used (when large mass rations are detected for example, or when strong motors are needed), per simulation-island for example.
The btMLCPSolver is a replacement for the btSequentialImpulseConstraintSolver, that explicitly creates the full MLCP A matrix and b vector.
You can use PGS, Lemke, Dantzig or PATH solver . If the MLCP solver doesn't produce a result, there is an automatic fallback to the original btSequentialImpulseConstraintSolver.
Here is an example how to use it:
Code: Select all
bool useSI = false;
btConstraintSolver* sol = 0;
if (useSI)
{
sol = new btSequentialImpulseConstraintSolver;
} else
{
//choose the actual MLCP backend
// btDantzigSolver* mlcp = new btDantzigSolver;
//btSolveProjectedGaussSeidel* mlcp = new btSolveProjectedGaussSeidel;
btPATHSolver* mlcp = new btPATHSolver;
sol = new btMLCPSolver(mlcp);
}
m_constraintSolver = sol;
m_dynamicsWorld = new btDiscreteDynamicsWorld(m_dispatcher,m_overlappingPairCache,m_constraintSolver,m_collisionConfiguration);
//the MLCP solvers don't support split impulse yet
m_dynamicsWorld->getSolverInfo().m_splitImpulse=false;
-
- Posts: 463
- Joined: Fri Nov 30, 2012 4:50 am
Re: preparing for 2.82 release
This is an amazing addition to Bullet, perhaps more useful than GPU only acceleration, at least for robotics. With this, I can see more people moving towards Bullet within my lab, since some wanted a worldstep equivalent. On the topic of robotics, since Bullet doesn't have a (documented) motorized joint with friction, I am currently using an overconstrained joint comprised of two motor joints (one with target speed and torque, other with target zero velocity and some friction torque value, not ideal but gives physically accurate results for the simple robots I tried it on). Would this still be possible in the current implementations of featherstone and the alternative solvers? From what I can find, the joint stacking works just fine in the sequential impulse solver because both motors are never solved at the same time, but since the solving method is different, other solvers may give odd results right?Erwin Coumans wrote:I am close to the Bullet 2.82 release, this week: some testing, documentation update and a demo for the new MLCP solver.
The btMLCPSolver is a replacement for the btSequentialImpulseConstraintSolver, that explicitly creates the full MLCP A matrix and b vector.
You can use PGS, Lemke, Dantzig or PATH solver . If the MLCP solver doesn't produce a result, there is an automatic fallback to the original btSequentialImpulseConstraintSolver.
It is the first introduction of the btMultiBody (Featherstone) and btMLCPSolver to Bullet, we will improve the implementation in upcoming releases. I have some more MLCP solvers (Lemke, COMPASS etc) that are not ready for release yet. Another idea to explore is to allow fine-grain control when a certain MLCP solver is used (when large mass rations are detected for example, or when strong motors are needed), per simulation-island for example.
And +1 to per-island solving, could be a good mix between accuracy and speed, especially when mixing things like robots and moving environments (a box on a box is just an obstacle, but a box touching a robot is important data )