2015-07-23 01:06:05 +00:00
# ifndef PHYSICS_CLIENT_C_API_H
# define PHYSICS_CLIENT_C_API_H
2015-09-17 06:09:10 +00:00
//#include "SharedMemoryBlock.h"
# include "SharedMemoryPublic.h"
2015-07-23 01:06:05 +00:00
# define B3_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name
B3_DECLARE_HANDLE ( b3PhysicsClientHandle ) ;
2015-09-17 06:09:10 +00:00
B3_DECLARE_HANDLE ( b3SharedMemoryCommandHandle ) ;
B3_DECLARE_HANDLE ( b3SharedMemoryStatusHandle ) ;
2015-07-23 01:06:05 +00:00
# ifdef __cplusplus
extern " C " {
# endif
2015-09-17 16:37:44 +00:00
///make sure to start the server first, before connecting client to physics server
2015-09-17 06:09:10 +00:00
b3PhysicsClientHandle b3ConnectSharedMemory ( int key ) ;
2015-07-23 01:06:05 +00:00
void b3DisconnectSharedMemory ( b3PhysicsClientHandle physClient ) ;
2015-09-17 16:37:44 +00:00
///check if a command can be send
2015-07-23 01:06:05 +00:00
int b3CanSubmitCommand ( b3PhysicsClientHandle physClient ) ;
2015-09-17 16:37:44 +00:00
//blocking submit command and wait for status
b3SharedMemoryStatusHandle b3SubmitClientCommandAndWaitStatus ( b3PhysicsClientHandle physClient , b3SharedMemoryCommandHandle commandHandle ) ;
///non-blocking submit command
2015-09-17 06:09:10 +00:00
int b3SubmitClientCommand ( b3PhysicsClientHandle physClient , b3SharedMemoryCommandHandle commandHandle ) ;
2015-07-23 01:06:05 +00:00
2015-09-17 16:37:44 +00:00
///non-blocking check status
b3SharedMemoryStatusHandle b3ProcessServerStatus ( b3PhysicsClientHandle physClient ) ;
int b3GetStatusType ( b3SharedMemoryStatusHandle statusHandle ) ;
2015-08-02 21:00:43 +00:00
int b3GetNumJoints ( b3PhysicsClientHandle physClient ) ;
2015-07-23 01:06:05 +00:00
2015-08-02 21:00:43 +00:00
void b3GetJointInfo ( b3PhysicsClientHandle physClient , int linkIndex , struct b3JointInfo * info ) ;
2015-07-23 01:06:05 +00:00
2015-09-17 06:09:10 +00:00
b3SharedMemoryCommandHandle b3InitRequestDebugLinesCommand ( b3PhysicsClientHandle physClient , int debugMode ) ;
void b3GetDebugLines ( b3PhysicsClientHandle physClient , struct b3DebugLines * lines ) ;
b3SharedMemoryCommandHandle b3InitPhysicsParamCommand ( b3PhysicsClientHandle physClient ) ;
int b3PhysicsParamSetGravity ( b3SharedMemoryCommandHandle commandHandle , double gravx , double gravy , double gravz ) ;
int b3PhysicsParamSetTimeStep ( b3SharedMemoryCommandHandle commandHandle , double timeStep ) ;
2015-07-31 06:22:44 +00:00
2015-09-17 06:09:10 +00:00
b3SharedMemoryCommandHandle b3InitStepSimulationCommand ( b3PhysicsClientHandle physClient ) ;
2015-07-31 06:22:44 +00:00
2015-09-17 06:09:10 +00:00
b3SharedMemoryCommandHandle b3InitResetSimulationCommand ( b3PhysicsClientHandle physClient ) ;
2015-08-28 00:51:31 +00:00
2015-09-17 06:09:10 +00:00
b3SharedMemoryCommandHandle b3LoadUrdfCommandInit ( b3PhysicsClientHandle physClient , const char * urdfFileName ) ;
2015-07-31 06:22:44 +00:00
///all those commands are optional, except for the *Init
2015-09-17 06:09:10 +00:00
int b3LoadUrdfCommandSetStartPosition ( b3SharedMemoryCommandHandle commandHandle , double startPosX , double startPosY , double startPosZ ) ;
int b3LoadUrdfCommandSetStartOrientation ( b3SharedMemoryCommandHandle commandHandle , double startOrnX , double startOrnY , double startOrnZ , double startOrnW ) ;
int b3LoadUrdfCommandSetUseMultiBody ( b3SharedMemoryCommandHandle commandHandle , int useMultiBody ) ;
int b3LoadUrdfCommandSetUseFixedBase ( b3SharedMemoryCommandHandle commandHandle , int useFixedBase ) ;
2015-07-31 06:22:44 +00:00
2015-08-02 21:00:43 +00:00
///Set joint control variables such as desired position/angle, desired velocity,
///applied joint forces, dependent on the control mode (CONTROL_MODE_VELOCITY or CONTROL_MODE_TORQUE)
2015-09-17 06:09:10 +00:00
b3SharedMemoryCommandHandle b3JointControlCommandInit ( b3PhysicsClientHandle physClient , int controlMode ) ;
///Only use when controlMode is CONTROL_MODE_POSITION_VELOCITY_PD
2015-09-25 05:42:22 +00:00
int b3JointControlSetDesiredPosition ( b3SharedMemoryCommandHandle commandHandle , int qIndex , double value ) ;
2015-09-17 06:09:10 +00:00
int b3JointControlSetKp ( b3SharedMemoryCommandHandle commandHandle , int dofIndex , double value ) ;
int b3JointControlSetKd ( b3SharedMemoryCommandHandle commandHandle , int dofIndex , double value ) ;
2015-08-02 21:00:43 +00:00
//Only use when controlMode is CONTROL_MODE_VELOCITY
2015-09-25 05:42:22 +00:00
int b3JointControlSetDesiredVelocity ( b3SharedMemoryCommandHandle commandHandle , int dofIndex , double value ) ; /* find a better name for dof/q/u indices, point to b3JointInfo */
2015-09-17 06:09:10 +00:00
int b3JointControlSetMaximumForce ( b3SharedMemoryCommandHandle commandHandle , int dofIndex , double value ) ;
2015-08-02 21:00:43 +00:00
///Only use if when controlMode is CONTROL_MODE_TORQUE,
2015-09-17 06:09:10 +00:00
int b3JointControlSetDesiredForceTorque ( b3SharedMemoryCommandHandle commandHandle , int dofIndex , double value ) ;
2015-08-02 21:00:43 +00:00
///the creation of collision shapes and rigid bodies etc is likely going to change,
///but good to have a b3CreateBoxShapeCommandInit for now
//create a box of size (1,1,1) at world origin (0,0,0) at orientation quat (0,0,0,1)
//after that, you can optionally adjust the initial position, orientation and size
2015-09-17 06:09:10 +00:00
b3SharedMemoryCommandHandle b3CreateBoxShapeCommandInit ( b3PhysicsClientHandle physClient ) ;
int b3CreateBoxCommandSetStartPosition ( b3SharedMemoryCommandHandle commandHandle , double startPosX , double startPosY , double startPosZ ) ;
int b3CreateBoxCommandSetStartOrientation ( b3SharedMemoryCommandHandle commandHandle , double startOrnX , double startOrnY , double startOrnZ , double startOrnW ) ;
int b3CreateBoxCommandSetHalfExtents ( b3SharedMemoryCommandHandle commandHandle , double halfExtentsX , double halfExtentsY , double halfExtentsZ ) ;
2015-08-02 21:00:43 +00:00
2015-09-17 06:09:10 +00:00
b3SharedMemoryCommandHandle b3CreateSensorCommandInit ( b3PhysicsClientHandle physClient ) ;
2015-09-25 05:42:22 +00:00
int b3CreateSensorEnable6DofJointForceTorqueSensor ( b3SharedMemoryCommandHandle commandHandle , int jointIndex , int enable ) ;
2015-09-17 06:09:10 +00:00
int b3CreateSensorEnableIMUForLink ( b3SharedMemoryCommandHandle commandHandle , int linkIndex , int enable ) ;
2015-08-02 21:00:43 +00:00
2015-09-17 06:09:10 +00:00
b3SharedMemoryCommandHandle b3RequestActualStateCommandInit ( b3PhysicsClientHandle physClient ) ;
2015-09-25 05:50:34 +00:00
void b3GetJointState ( b3PhysicsClientHandle physClient , b3SharedMemoryStatusHandle statusHandle , int jointIndex , struct b3JointSensorState * state ) ;
2015-09-25 05:42:22 +00:00
int b3PickBody ( struct SharedMemoryCommand * command ,
double rayFromWorldX , double rayFromWorldY , double rayFromWorldZ ,
double rayToWorldX , double rayToWorldY , double rayToWorldZ ) ;
int b3MovePickedBody ( struct SharedMemoryCommand * command ,
double rayFromWorldX , double rayFromWorldY , double rayFromWorldZ ,
double rayToWorldX , double rayToWorldY , double rayToWorldZ ) ;
int b3RemovePickingConstraint ( struct SharedMemoryCommand * command ) ;
2015-07-23 01:06:05 +00:00
2015-09-17 06:09:10 +00:00
2015-07-23 01:06:05 +00:00
# ifdef __cplusplus
}
# endif
# endif //PHYSICS_CLIENT_C_API_H