Commit Graph

2076 Commits

Author SHA1 Message Date
Jeongseok Lee
8857638ded Revert C++ code changes to make the PR small 2018-07-18 11:57:34 -07:00
Jeongseok Lee
6323309f89 Fix c++11-narrowing errors in multibody examples 2018-07-10 09:22:41 -07:00
Erwin Coumans
ac59886960 fix hidden API 2018-06-27 07:39:56 -07:00
Erwin Coumans
dffff4d3b6 Merge remote-tracking branch 'bp/master' 2018-06-26 08:58:38 -07:00
erwincoumans
e023d94b32
Merge pull request #1775 from bingjeff/marios_fix_global_variables
remove some debug globals from third_party/bullet
2018-06-26 08:58:27 -07:00
Erwin Coumans
21b089b0d7 Merge remote-tracking branch 'bp/master' 2018-06-26 08:57:44 -07:00
YunfeiBai
812c229736 Remove the pdController when maxForce = 0 2018-06-24 17:06:16 -07:00
Jeffrey Bingham
f2afb4af35 remove some debug globals from third_party/bullet
There are some debug global variables that prevent using bullet safely on multi-threaded environments (tsan failures).

PATCH from marioprats@
2018-06-23 22:01:41 -07:00
erwincoumans
49b0ec08e1 PyBullet: allow to replace existing debug lines in addUserDebugLine through the replaceItemUniqueId argument
See batchRayCast.py for example usage
2018-06-22 16:47:20 -07:00
erwincoumans
6b2cae1b1d
Merge pull request #1769 from RanTig/parallel_raycast_fix
Several fixes for the parallel raycasts
2018-06-22 15:49:56 -07:00
Tigran Gasparian
618e3230a4 Fix: Use function context reference instead of value 2018-06-22 20:41:02 +02:00
erwincoumans
784f0fdc04 Merge branch 'master' of https://github.com/erwincoumans/bullet3 2018-06-22 09:28:14 -07:00
erwincoumans
55e185fe39 PyBullet loadURDF in useMaximalCoordinated=True (btRigidBody), support lower/upper limits for revolute joints. 2018-06-22 09:28:07 -07:00
Erwin Coumans
092e39a9e5 PyBullet urdfEditor example, use the pybullet_utils version (more up-to-date) 2018-06-22 09:18:55 -07:00
Erwin Coumans
fcde193d52 PyBullet.setPhysicsEngineParameter: only update solverResidualThreshold if valid values is given 2018-06-20 13:18:08 -07:00
Tigran Gasparian
b84eb8af74 Several fixes for the parallel raycasts
- Limits the maximum number of threads to 64, since btThreadSupportPosix
and btThreadsupportWin32 don't support more than 64 bits at this moment,
due to the use of UINT64 bitmasks. This could be fixed by using
std::bitset or some other alternative.
- Introduces a threadpool class, b3ThreadPool, which is a simple wrapper
around btThreadSupportInterface and uses this instead of the global task
scheduler for parallel raycasting. This is actually quite a bit faster
than the task scheduler (~10-15% in my tests for parallel raycasts),
since the advanced features (parallelFor) are not necessary for the
parallel raycasts.
- Puts 16*1024 of MAX_RAY_INTERSECTION_MAX_SIZE_STREAMING in
parentheses, since it otherwise causes problems with other operators
of equal precedence and introduces a smaller constant for Apple targets.
- Refactors the parallel raycasts code and adds some more profiling.
2018-06-19 18:41:42 +02:00
erwincoumans
42c9d9aa3c lazy creation of batch scheduler, it causes issues with the physics. 2018-06-16 13:59:03 -07:00
erwincoumans
c55720fb41 Merge branch 'master' of https://github.com/erwincoumans/bullet3 2018-06-16 12:28:38 -07:00
erwincoumans
7924d51665 PyBullet: deal with backward compatibility of b3RaycastBatchAddRay:
use b3RaycastBatchAddRays API to enable MAX_RAY_INTERSECTION_BATCH_SIZE_STREAMING num rays.
Old API (b3RaycastBatchAddRay) sticks to 256 rays, MAX_RAY_INTERSECTION_BATCH_SIZE.
2018-06-16 12:28:21 -07:00
Erwin Coumans
b94df12081 add missing pthread link in App_HelloBulletRobotics 2018-06-16 10:20:43 -07:00
erwincoumans
04d03d10be Fix memory leak due to batchRayCast never deleting the btTaskScheduler.
(and issue with TaskScheduler/btTaskScheduler.cpp, add JobQueue::exit, call it first, since it uses the m_threadSupport which was deleted before the destrucor was called.
Use a hashmap to store user timers, to avoid allocating many identical strings.
2018-06-16 09:37:53 -07:00
erwincoumans
cb1fce7899 revert exposing getSharedMemoryStreamBuffer / adding to command structure
use 16k rays by default
add uploadRaysToSharedMemory method
2018-06-16 08:14:00 -07:00
erwincoumans
23f9250e04 Merge remote-tracking branch 'bp/master' 2018-06-16 06:58:10 -07:00
erwincoumans
d660042d76
Merge pull request #1763 from YunfeiBai/master
Add the pdControlPlugin to the joint control C API, and add the PD co…
2018-06-16 06:57:50 -07:00
erwincoumans
75ec8f3fd9 PyBullet: add batchRayCast.py example 2018-06-16 06:20:15 -07:00
erwincoumans
f517b03534 Expose pushProfileTimer / pop ProfileTimer in PhysicsClient API to benchmark Python parts of PyBullet.
reduce 'm_cooldownTime' from 1000 microseconds to 100 microseconds (overhead in raycast is too large)
If needed, we can expose this cooldown time.
Replace malloc by btAlignedObjectArray (going through Bullet's memory allocator)
2018-06-16 06:19:49 -07:00
erwincoumans
bb8cbcdaae Merge remote-tracking branch 'bp/master' 2018-06-16 06:06:18 -07:00
erwincoumans
5b3e43d4d8
Merge pull request #1760 from RanTig/ParallelRaycasts
Adds multithreading support for batch ray casts.
2018-06-16 05:54:34 -07:00
Alexis David Jacq
6adea4964f
forgot one "isAlive" to change 2018-06-16 14:00:05 +02:00
Alexis David Jacq
50b5edd7b5
isDone instead of isAlive 2018-06-16 13:53:05 +02:00
Erwin Coumans
fbbd675ed6 expose PyBullet API to wakeup/put objects to sleep, enable/disable deactivation
fix wakeup -> reset deactivation clock
2018-06-15 21:26:26 -07:00
YunfeiBai
1c0de3c4cb Add the pdControlPlugin to the joint control C API, and add the PD control mode (also available in pybullet). Modify the pdControl pybullet example to use the PD control mode with setJointMotorControl API. 2018-06-15 17:59:26 -07:00
Alexis David Jacq
292a3f1cf6
methode isAlive
Method def isAlive(self), which defaults to return self._alive < 0, and each environment can override this method (Half Cheetah would implement return False)

(In response to bea468fb93)
2018-06-15 17:55:20 +02:00
Tigran Gasparian
54986593c5 . 2018-06-15 17:46:31 +02:00
Tigran Gasparian
0b1dca3d9c Updates the documentation for the pybullet function rayTestBatch to include the numThreads parameter. 2018-06-15 17:46:12 +02:00
Alexis David Jacq
a57c480f28
Update gym_locomotion_envs.py
As suggested in https://github.com/bulletphysics/bullet3/pull/1759. The default isDone lets done = alive<0, and a special case is made for halfcheetah, forcing done=False. 
I had to pass the 'alive' condition as an additive parameter of WalkerBaseBulletEnv.
2018-06-15 17:38:35 +02:00
Erwin Coumans
976fea4eca fix saveRestoreState.py example 2018-06-15 08:31:39 -07:00
Tigran Gasparian
d244cf6061 Changes the default number of rays per thread from 32 to 16, when the user lets Bullet decide. 2018-06-15 17:13:10 +02:00
Tigran Gasparian
08409cae9f Adds multithreading support for batch ray casts.
To enable the feature, enable the BULLET2_MULTITHREADING option.

Increases the number of rays that can go in a batch request by storing
them in the shared memory stream instead of the shared memory command.
Adds the API b3RaycastBatchSetNumThreads to specify the number of
threads to use for the raycast batch, also adds the argument numThreads
to the pybullet function rayTestBatch.
Rays are distributed among the threads in a greedy fashion there's a shared
queue of work, once a thread finishes its task, it picks the next
available ray from the task. This works better than pre-distributing the
rays among threads, since there's a large variance in computation time per ray.

Some controversial changes:
- Added a pointer to PhysicsClient to the SharedMemoryCommand struct, this
was necessary to keep the C-API the same for b3RaycastBatchAddRay, while
adding the ray to the shared memory stream instead of the command
struct. I think this may be useful to simplify other APIs as well, that
take both a client handle and a command handle.
- Moved #define SHARED_MEMORY_MAX_STREAM_CHUNK_SIZE to
SharedMemoryPublic. This was necessary for the definition of
MAX_RAY_INTERSECTION_BATCH_SIZE.
2018-06-15 16:47:04 +02:00
erwincoumans
25c5e87dc2 PyBullet.loadURDF, expose flags=URDF_INITIALIZE_SAT_FEATURES 2018-06-13 15:35:56 -07:00
Erwin Coumans
c27fb4003e path -> const 2018-06-12 21:26:34 -07:00
erwincoumans
4f0959a136
Update b3RobotSimulatorClientAPI_NoDirect.h 2018-06-12 21:17:43 -07:00
Erwin Coumans
e24da97140 revert GJK change yet again, some degenerate case / regression 2018-06-12 19:52:38 -07:00
erwincoumans
08d84d6ce3 fix getLinkState usage 2018-06-12 17:00:16 -07:00
erwincoumans
4d6741f5cd PyBullet: expose STATE_LOGGING_ALL_COMMANDS and STATE_REPLAY_ALL_COMMANDS
See examples/pybullet/examples/commandLogAndPlayback.py for an example.
2018-06-12 16:56:45 -07:00
erwincoumans
459d07a302 add example for enableSAT, using separating axis test (instead of GJK) for contact between polyhedral convex hull shapes (and convex hull vs triangle in a concave triangle mesh) 2018-06-12 16:10:49 -07:00
erwincoumans
97c6937388 Simplify GJK. Still needs double precision for large differences of feature scales.
Extract faces directly from btConvexHullComputer (in initializePolyhedralFeatures), instead of reconstructing them, thanks to Josh Klint in #1654
PyBullet: use initializePolyhedralFeatures for convex hulls and boxes (to allow SAT)
PyBullet: expose setPhysicsEngineParameter(enableSAT=0 or 1) to enable Separating Axis Test based collision detection for convex vs convex/box and convex versus concave triangles (in a triangle mesh).
2018-06-12 16:08:46 -07:00
erwincoumans
a342af0382 remove getLinkState from API, it automatically calculated forwardKinematics and propagates velocities, which is very expensive. 2018-06-11 23:49:34 -07:00
erwincoumans
62485abafe PyBullet: disable deterministic pairs by default
PyBullet: Only set static when sleeping is enables (todo: figure out issue with determinism)
2018-06-11 17:32:44 -07:00
Erwin Coumans
38469deec7 getNumLinks -> getNumDofs, to make sure fixed objects don't transfer activation state 2018-06-11 11:41:33 -07:00