Commit Graph

197 Commits

Author SHA1 Message Date
erwincoumans
0d5dcb3cc5 setDebugObjectColor 2016-11-21 07:42:11 -08:00
yunfeibai
be5b8a3d7b Set light color in pybullet. 2016-11-20 13:14:18 -08:00
erwincoumans
9ee1c4ec24 regular OR wireframe rendering, not both
add option to perform filtering of 'getClosestPoints' using linkA/linkB.
don't use 'realtimesimulation' as default
add/remove debug items within same thread
pybullet, report contact points and normal as [x,y,z] triplet/vector, not 3 scalars
separate 'getClosestPointsAlgorithm': box-box doesn't report closest points with positive distance, and the query shouldn't impact regular 'closesst points'
2016-11-19 17:13:56 -08:00
erwincoumans
8c69fa13ca add pybullet getCameraImage, replacing renderImage, cleaner API:
always pass in width, hight and viewMatrix, projectionMatrix, optionally lightDir
added helper methods computeViewMatrix, computeViewMatrixFromYawPitchRoll, computeProjectionMatrix, computeProjectionMatrixFOV
see Bullet/examples/pybullet/testrender.py + testrender_np.py for example use
add missing base_link.stl for husky.urdf
2016-11-17 15:15:52 -08:00
erwin coumans
c0fb98861d add quadruped.py script to load and initialize the a Minitaur-like quadruped
pybullet removeConstraint, createConstraint
rename b3CreateJoint to b3InitCreateUserConstraintCommand
add int b3GetStatusUserConstraintUniqueId(b3SharedMemoryStatusHandle statusHandle);
b3SharedMemoryCommandHandle  b3InitRemoveUserConstraintCommand(b3PhysicsClientHandle physClient, int userConstraintUniqueId);
2016-11-14 14:08:05 -08:00
Erwin Coumans
c521d816c6 add user debug line/text features in pybullet + shared memory API:
addUserDebugLine,
addUserDebugText
removeUserDebugItem
removeAllUserDebugItems
2016-11-14 07:39:34 -08:00
erwin coumans
7577c6d893 add pybullet loadBullet, saveBullet (work-in-progress) and placeholder for loadMJCF. 2016-11-11 18:07:42 -08:00
erwin coumans
b150edf76b Merge remote-tracking branch 'bp/master' 2016-11-11 14:45:09 -08:00
erwin coumans
35fc8306fd pybullet load/save .bullet files 2016-11-11 14:44:50 -08:00
Erwin Coumans
3b5d0f444b various fixes
move btSimulationIslandManagerMt.cpp from BulletCollision to BulletDynamics
2016-11-10 16:18:20 -08:00
erwincoumans
9b5aa9a723 pybullet getOverlappingObjects added: report all object unique ids within a world space bounding box (aabb) 2016-11-10 11:22:22 -08:00
erwincoumans
6661b8d977 Merge branch 'master' of https://github.com/erwincoumans/bullet3 2016-11-09 21:01:11 -08:00
erwincoumans
0d47d61007 pybullet getClosestPoints 2016-11-09 21:01:04 -08:00
Erwin Coumans
6701947684 fix compile issues 2016-11-09 12:22:05 -08:00
erwincoumans
5d66ce20e0 network UDP: transmit structural DNA to deal with version/platform differences.
pybullet: allow to specify shared memory key and hostname/port for UDP.
2016-11-04 17:06:55 -07:00
erwincoumans
e35129ceaf Merge branch 'master' of https://github.com/erwincoumans/bullet3 2016-11-04 13:16:30 -07:00
erwincoumans
9708392322 work-in-progress
add UDP network connection for physics client <-> server.
also set spinning friction in rolling friction demo (otherwise objects may keep on spinning forever)
2016-11-04 13:15:10 -07:00
erwincoumans
f01389ded2 Merge pull request #842 from erwincoumans/master
added b3PhysicsParamSetInternalSimFlags command, and pybullet setInte…
2016-10-23 08:26:52 -07:00
erwincoumans
c2ca88bf44 added b3PhysicsParamSetInternalSimFlags command, and pybullet setInternalSimFlags API.
//Use at own risk: magic things may or my not happen when calling this API.

This allows to enable/disable robot assets (samurai world, gripper, KUKA robot etc) in Physics Server (and App_PhysicsServerVR etc)
1 = create robot assets
2 = create experimental box-vr-gui

Add optional command-line parameter for App_PhysicsServerVR, --norobotassets, to start with an empty world, no assets in VR (no gripper, no kuka)
2016-10-23 07:14:50 -07:00
yunfeibai
9c00b4d9f4 Add texture reset API to pybullet. 2016-10-21 17:48:06 -07:00
erwin coumans
3b8090fcc1 fix a pybullet.c issue on some compilers (don't allow for (int i=...)
make the build_visual_studio_vr_pybullet_double.bat smart enough to find any Python installation in c:\python*
2016-10-19 07:42:55 -07:00
erwin coumans
f97cb7002d first version of 'getVisualShapeData' to get visual shape information to allow external renderer with pybullet and shared memory robotics API
b3InitRequestVisualShapeInformation/b3GetVisualShapeInformation in shared memory API
2016-10-18 22:05:28 -07:00
erwincoumans
33d9603e16 Add rudimentary 'saveWorld' command in shared memory API and pybullet, see examples/pybullet/saveWorld.py
Use trilinear filtering instead of bilinear
2016-10-12 23:03:36 -07:00
erwin coumans
0936ae6600 expose getNumBodies, getBodyUniqueId, getBodyInfo (char* baseName) to shared memory API and pybullet., making it easier to serialize the state of the world. 2016-09-27 12:13:45 -07:00
erwincoumans
f5e65197f4 fix pybullet.c compilation for Windows
add lego.urdf, duck.urdf (optimized using VHACD convex decomposition)
optimize Kiva shelf collision model (by hand, using boxes/Blender)
physics timescale toggle between  1 -> 0,25 -> 0
2016-09-24 11:25:05 -07:00
Mat Kelcey
36f7f44880 expose b3GetLinkState in pybullet 2016-09-23 15:57:35 -07:00
erwin coumans
310a330572 fix InverseKinematics+API for a case without tree (custom build Jacobian) 2016-09-22 13:27:09 -07:00
yunfeibai
c01f6245d0 Quick fix of pybullet for IK with orientation constraint. 2016-09-20 11:10:13 -07:00
Erwin Coumans
5e09b17baf experimental Inverse Kinematics for KUKA iiwa exposed in
shared memory api and pybullet. Will be extended for arbitrary bodies
and with target orientation (besides target position)
2016-09-13 23:37:46 +01:00
Erwin Coumans
7df9b69039 pybullet: add option to use NumPy to speed up, thanks to moof2k
option is disabled by default. When using cmake, use
cmake -DBUILD_PYBULLET=ON -DBUILD_PYBULLET_NUMPY=ON
then both testrender.py and testrender_np.py will work
without numpy only testrender.py works.
The numpy.reshape is likely a no-op when using numpy array,
so we could remove testrender_np.py...

See https://github.com/bulletphysics/bullet3/pull/774
2016-09-11 11:35:12 +01:00
Erwin Coumans
5c76b01659 allow pybullet with or without NumPy 2016-09-11 11:09:51 +01:00
erwin coumans
4ab02a07e5 Merge branch 'master' of https://github.com/erwincoumans/bullet3 2016-09-08 15:22:41 -07:00
erwin coumans
32eccdff61 Create project file for BussIK inverse kinematics library (premake, cmake)
URDF/SDF: add a flag to force concave mesh collisiofor static objects. <collision concave="yes" name="pod_collision">
VR: support teleporting using buttong, allow multiple controllers to be used, fast wireframe rendering,
Turn off warnings about deprecated C routine in btScalar.h/b3Scalar.h
Add a dummy return to stop a warning
Expose defaultContactERP in shared memory api/pybullet.
First start to expose IK in shared memory api/pybullet (not working yet)
2016-09-08 15:15:58 -07:00
Erwin Coumans
e0127bdb54 merge pybullet.c after conflicts due to Jeff's formatting pull request. 2016-09-08 11:12:58 -07:00
erwincoumans
630fcda38b fix compile issue pybullet on MSVC 2010 2016-09-03 09:53:21 -07:00
Erwin Coumans (Google)
f7522873f9 fix compile issue on Linux 2016-09-01 22:11:07 -07:00
Erwin Coumans
e98fca1e5e implement pybullet.getContactPointData(), two optional object unique ids as filter
returns a pylist of contact points. Each point has the following data:

	0     int m_contactFlags;//unused for now
         1     int m_bodyUniqueIdA;
         2     int m_bodyUniqueIdB;
         3     int m_linkIndexA;
         4     int m_linkIndexB;
         5-6-7     double m_positionOnAInWS[3];//contact point location on object A, in world space coordinates
         8-9-10     double m_positionOnBInWS[3];//contact point location on object A, in world space coordinates
         11-12-13     double m_contactNormalOnBInWS[3];//the separating contact normal, pointing from object B towards object A
         14     double m_contactDistance;//negative number is penetration, positive is distance.

         15    double m_normalForce;
2016-09-01 18:28:39 -07:00
erwincoumans
7790ee2f02 fix compile issue with pybullet.c on Visual Studio 2016-08-31 16:05:42 -07:00
erwin coumans
5b0253ed47 Remove undesired assert, it makes pybullet mistakes fail in c++
Shared memory api/pybullet: by default, set joint motors in position PD mode with target 0, to maintain 0 joint angle.
pybullet: allow setJointControlMode(body, link, POSITION_CONTROL,targetPos etc.
2016-08-18 13:10:28 -07:00
Erwin Coumans
8f21e2bca9 fix compile issue 2016-08-17 20:01:45 -07:00
Erwin Coumans
17c16ccfa0 pybullet, deal with overflow of joints (maximum of 128 joints/links per multibody at the moment)
increase from 64 to 128 joints in shared memory API/pybullet
fix potential issue in tinyrenderer, related to missing segmentation mask buffer
report error if CMD_REQUEST_ACTUAL_STATE command on a multibody that exceed the number of links,
todo: stream data to allow arbitrary large number of links in shared memory API
2016-08-17 19:35:52 -07:00
Erwin Coumans
c75bebcafe revert accidently renaming of m_depthvalues4 2016-08-12 13:55:37 -07:00
Erwin Coumans
4abe083388 fix pybullet 2016-08-11 15:58:51 -07:00
erwin coumans
a9b1544a9f Add premake support to build pybullet, Windows and Linux tested, will enable Mac in next commit.
Expose inverse dynamics to Bullet shared memory API, through b3CalculateInverseDynamicsCommandInit and
b3GetStatusInverseDynamicsJointForces command/status. See PhysicsClientExeample or pybullet for usage.
Add option for Windows and Linux to set python_lib_dir and python_include_dir for premake and --enable_pybullet option
Expose inverse dynamics to pybullet: [force] = p.calculateInverseDynamics(objectIndex,[q],[qdot],[acc])
Thanks to Jeff Bingham for the suggestion.
2016-08-09 18:40:12 -07:00
Erwin Coumans
b880ddf76b add pybullet render API with yaw/pitch/roll option
add testrender.py file
allow option to enable OpenGL hardware renderer in multithreaded sim

b3RequestCameraImageSelectRenderer(commandHandle,ER_BULLET_HARDWARE_OPENGL);
2016-08-08 14:23:44 -07:00
Erwin Coumans
f5fca86d49 remove debug printf 2016-08-02 11:14:21 -07:00
Erwin Coumans
f304fd7611 add one more pybullet renderImage API and testrender.py example
tweak Bullet Inverse Dynamics, work-around compiler issue
2016-08-02 11:12:23 -07:00
Mat Kelcey
b4cfee8745 set dft for kd to be 1.0. note: this is only applicable to CONTROL_MODE_VELOCITY 2016-07-26 16:16:18 -07:00
Mat Kelcey
4b75c5d9d0 add another combo of args to allow kd to be configured in the CONTROL_MODE_VELOCITY case 2016-07-26 11:36:34 -07:00
Mat Kelcey
b221d2ad18 add targetPosition, targetValue, kp & kd to pybullet_setJointMotorControl 2016-07-26 11:09:12 -07:00
erwin coumans
c28cd03fbd OpenVR controller can pick/drag objects. Instructions, Windows only:
Compile using premake+visual studio, and compile App_SharedMemoryPhysics_VR
Compile pybullet using cmake using cmake -DBUILD_PYBULLET=OFF -DCMAKE_BUILD_TYPE=Release ..
Create a symbolic link from c:\python\dlls\pybullet.pyd to C:\develop\bullet3\cmp\lib\Release\pybullet.dll
App_SharedMemoryPhysics_VR
Run Python. Here are some Python lines to get going:
import pybullet as p
p.connect(p.SHARED_MEMORY)
p.loadURDF("cube.urdf")
p.setGravity(0,0,-10)
p.setRealTimeSimulation(1)

Allow real-time simulation in physics server, add pybullet command setRealTimeSimulation to control it
Mesh decimation (reduce number of triangles/vertices) using a Blender modifier for Kuka IIWA and Husky
Disabled the 'glFlush' commands in GLInstancingRenderer.
Add VR controller methods to examples\CommonInterfaces\CommonExampleInterface.h
Use the ANSI version in Windows file/string operations instead of unicode, hope this doesn't break builds.
2016-07-17 23:50:11 -07:00
Mat Kelcey
588bd007e7 bug fix for pybullet_applyExternalForce where linkId wasn't actually being used in b3ApplyExternalForce call 2016-07-13 21:20:41 -07:00
Mat Kelcey
048c01d7c4 Merge branch 'master' of git://github.com/bulletphysics/bullet3 into addFovToRenderImage 2016-07-12 13:52:25 -07:00
erwin coumans
02582e3a78 shrink down cube size of BasicDemo 10 times (it looked ginormous in VR) from 2x2x2 meter to 0.2
add test for VR HUD/sub-titles
fix issue in previous commit, partial string use %.8s not %8.s
use long long int in b3Clock
fix warning/error in pointer alignment in serialization
Fix pybullet Windows compilation.
(thanks to bkeys/https://github.com/bulletphysics/bullet3/pull/687)
2016-07-09 15:09:09 -07:00
Mat Kelcey
54979a0f89 pybullet renderimage with projection matrix calculated using field of view 2016-07-08 15:47:50 -07:00
Erwin Coumans
35b260b252 Merge remote-tracking branch 'bp/master' 2016-07-08 08:20:16 -07:00
erwin coumans
60d2b99151 Physics runs in a separate thread from rendering in PhysicsServerExample (preliminary)
Improve rendering performance. OpenVR experience is smooth now.
commit needs a bit more testing before pushing in main repo.
2016-07-07 19:24:44 -07:00
Jasmine Hsu
993bd52fe2 fix minor issues - arg parse size, spelling, duplicate function definition 2016-07-07 13:56:32 -07:00
Jasmine Hsu
43011bdb3b merge upstream/master to latest commit ed9be25 2016-06-27 13:53:43 -07:00
Jasmine Hsu
f6bead7152 edit method definitions (docstring) for calling renderImage() 2016-06-27 13:51:28 -07:00
Jasmine Hsu
e24ec9e8c0 nearVal and farVal as params 2016-06-27 13:18:12 -07:00
Jasmine Hsu
5d5e7df7c5 exposing near/far values as params; commented out debug printf which caused failed checks 2016-06-27 11:19:57 -07:00
erwincoumans
ed9be25570 Merge pull request #669 from hellojas/loadURDF
fix loading urdf at default position (0,0,0)
2016-06-26 19:12:20 -07:00
Erwin Coumans
013dbda023 implement a few more pybullet methods:
pybullet_applyExternalForce, pybullet_applyExternalTorque, pybullet_setTimeStep,
pybullet_resetBasePositionAndOrientation,
pybullet_getQuaternionFromEuler,
pybullet_getEulerFromQuaternion
2016-06-26 18:18:30 -07:00
Jasmine Hsu
d339cf5b74 ability to call renderImage with three vectors: camera position, target position, and up vector 2016-06-24 15:30:43 -07:00
Jasmine Hsu
aa91042ac8 merge bullet master 2016-06-24 15:20:46 -07:00
Erwin Coumans
c17c39c2c9 move PD control from PhysicsServerCommandProcessor into btMultiBodyJointMotor
improvements/changes in pybullet API
2016-06-24 11:06:56 -07:00
Erwin Coumans (Google)
6d1948e79e tweaks in pybullet and shared memory C-API:
allow to reset the state of a single joint
allow to set the target/mode for a single joint motor at a time
rename pybullet API: initializeJointPositions -> resetJointState
2016-06-24 07:31:17 -07:00
Jasmine Hsu
976e228be0 remove print debugger 2016-06-23 14:05:36 -07:00
Jasmine Hsu
e0448c7613 fix loading urdf at default position (0,0,0) and adding b3 cmd to change orientation if args provided 2016-06-23 14:00:44 -07:00
Erwin Coumans
2cd0eba257 re-introduce old method in pybullet for temporary back-wards compatibility
b3JointControlCommandInit requires 3 args, but it was only 2,
use b3JointControlCommandInit2 for now.
2016-06-23 08:40:36 -07:00
Erwin Coumans
8b96e2de3c a few pybullet tweaks to set desired joint motor targets (pos/vel/torque) 2016-06-22 23:21:47 -07:00
Erwin Coumans
f5ffb11bc5 fix bus error on Raspberry Pi, unaligned float access when loading STL files
fix pybullet Python 3 issue (PyString_FromString -> PyBytes_FromString and PyInt_FromLong -> PyLong_FromLong)
2016-06-23 05:10:00 +00:00
erwincoumans
0b249361c2 fix a c99 issue in pybullet 2016-06-21 09:01:27 -07:00
erwincoumans
01cad7c2a5 fix return type in pybullet
.
2016-06-20 15:00:35 -07:00
erwincoumans
b58978184c fix C99 issue, use malloc, not variable sized array.
.
2016-06-20 14:58:56 -07:00
Erwin Coumans
53a0772257 fix some issues related to controlling a robot/multibody beyond body index 0
(most testing happened with a single robot/multibody so far)
preliminary pybullet.setJointControl implementation
2016-06-16 18:46:34 -07:00
Jasmine Hsu
03fded3dc7 getJointPositions returns a list of all joint positions for a given bodyIndex 2016-06-15 14:21:04 -07:00
Jasmine Hsu
934725554f remove initializeJointPosition as setting one joint is not supported 2016-06-14 15:21:50 -07:00
Jasmine Hsu
d6ab1ab434 initialize a single joint position for a given body index 2016-06-14 14:58:36 -07:00
Jasmine Hsu
d53d6366de get the state of a specific joint given a body index 2016-06-14 14:35:45 -07:00
Jasmine Hsu
55560e114e merge bulletphysics:master to commit:b06e1cb 2016-06-14 14:13:54 -07:00
Jasmine Hsu
eeaff0747b return joint state given a joint index and body index 2016-06-14 14:08:24 -07:00
erwincoumans
6523df336e Fix pybullet Windows build errors: C99 requires variables to be defined at the start of the function.
Improve CMake Windows support to build PyBullet (BUILD_PYBULLET)
Implement b3LoadSdfCommandInit in shared memory API
Implement pybullet SDF loading binding, in loadSDF API
TODO for SDF support is provide way to query object/link/joint information.
2016-06-13 10:11:28 -07:00
Jasmine Hsu
9c5a7925f0 add internal set matrix function 2016-06-10 15:14:00 -07:00
Jasmine Hsu
b0c7c086e3 render image with ability to set pixel resolution and initial camera position 2016-06-10 15:07:41 -07:00
Erwin Coumans
98d2f91f3c fix flipped tinyrenderer image 2016-06-09 12:12:46 -07:00
Erwin Coumans
d2e50d045b fix issues related to camera width/height
add width,height as arguments to pybullet.renderImage(x,y,[viewMat4x4],[projMat4x4])
2016-06-07 16:11:58 -07:00
Erwin Coumans
1c7f87aff1 implement first draft of pybullet.renderImage for synthetic camera
remove a few debug printf from tinyrenderer
2016-06-06 18:54:05 -07:00
erwin coumans
68545fb71a fix pybullet.getPositionAndOrientation crash/issues 2016-05-26 15:58:10 -07:00
Erwin Coumans
535ee33e3b fix build3/stringify.sh
fix some compile issues
2016-05-25 15:37:28 -07:00
Erwin Coumans
bd1620eda8 add pybullet.getBasePositionAndOrientation
add missing file to pybullet CMakeLists.txt
2016-05-24 15:29:26 -07:00
Erwin Coumans
cdd6954ada fix pybullet cmake compilation 2016-05-18 15:07:42 -07:00
erwin coumans
99073e03f7 Allow to compile pybullet on Windows, using CMake
(got it to run, rename pybullet.dll into pybullet.pyd and copy in c:\python34\dlls)
Update test.py
Allow to compile pybullet using Python 3.x and 2.7
2016-05-10 00:57:54 -07:00
Erwin Coumans
938db633df fixes in build system 2016-05-03 23:34:48 -07:00
Erwin Coumans
fb65c29033 use "world" to make door static (instead of using mass = 0)
minor improvements to pybullet
2016-05-03 12:59:21 -07:00
Erwin Coumans
1d0f038aad add initial pybullet module, using the shared memory API
(for now, start the example browser in 'physics server',
then compile using premake --python option,
then run python in the bin folder (so it finds pybullet.so)
and run the test.py script in examples/pybullet folder.
The robotics shared memory C API is very suitable for this.
2016-04-30 11:18:54 -07:00