added preliminary shared memory physics client/server
fix a bug in CommonMultiBodyBase: don't use data if it hasn't been allocated
This commit is contained in:
73
examples/SharedMemory/SharedMemoryInterface.h
Normal file
73
examples/SharedMemory/SharedMemoryInterface.h
Normal file
@@ -0,0 +1,73 @@
|
||||
#ifndef SHARED_MEMORY_INTERFACE_H
|
||||
#define SHARED_MEMORY_INTERFACE_H
|
||||
|
||||
#define SHARED_MEMORY_KEY 12345
|
||||
#define SHARED_MEMORY_MAGIC_NUMBER 64738
|
||||
#define SHARED_MEMORY_MAX_COMMANDS 64
|
||||
|
||||
enum SharedMemoryServerCommand{
|
||||
CMD_URDF_LOADING_COMPLETED,
|
||||
CMD_URDF_LOADING_FAILED,
|
||||
|
||||
CMD_SERVER_STATE_UPDATE_COMPLETED,
|
||||
CMD_STEP_FORWARD_SIMULATION_COMPLETED,
|
||||
CMD_MAX_SERVER_COMMANDS
|
||||
};
|
||||
|
||||
enum SharedMemoryClientCommand{
|
||||
CMD_LOAD_URDF,
|
||||
CMD_STATE_UPDATED,
|
||||
CMD_STEP_FORWARD_SIMULATION, //includes CMD_REQUEST_STATE
|
||||
CMD_MAX_CLIENT_COMMANDS
|
||||
};
|
||||
|
||||
#define SHARED_MEMORY_SERVER_TEST_C
|
||||
#define MAX_DEGREE_OF_FREEDOM 1024
|
||||
#define MAX_NUM_SENSORS 1024
|
||||
#define MAX_URDF_FILENAME_LENGTH 1024
|
||||
|
||||
struct CommandArguments
|
||||
{
|
||||
double m_deltaTimeInSeconds;
|
||||
char m_urdfFileName[MAX_URDF_FILENAME_LENGTH];
|
||||
};
|
||||
|
||||
struct SharedMemoryExampleData
|
||||
{
|
||||
int m_magicId;
|
||||
int m_clientCommands[SHARED_MEMORY_MAX_COMMANDS];
|
||||
int m_serverCommands[SHARED_MEMORY_MAX_COMMANDS];
|
||||
|
||||
int m_numClientCommands;
|
||||
int m_numProcessedClientCommands;
|
||||
|
||||
int m_numServerCommands;
|
||||
int m_numProcessedServerCommands;
|
||||
|
||||
|
||||
double m_stateQ[MAX_DEGREE_OF_FREEDOM];
|
||||
double m_stateQdot[MAX_DEGREE_OF_FREEDOM];
|
||||
double m_stateSensors[MAX_NUM_SENSORS];//these are force sensors and IMU information
|
||||
|
||||
CommandArguments m_clientCommandArguments[SHARED_MEMORY_MAX_COMMANDS];
|
||||
CommandArguments m_serverCommandArguments[SHARED_MEMORY_MAX_COMMANDS];
|
||||
|
||||
};
|
||||
|
||||
#define SHARED_MEMORY_SIZE sizeof(SharedMemoryExampleData)
|
||||
|
||||
|
||||
|
||||
|
||||
class SharedMemoryInterface
|
||||
{
|
||||
public:
|
||||
virtual ~SharedMemoryInterface()
|
||||
{
|
||||
}
|
||||
|
||||
virtual void* allocateSharedMemory(int key, int size) =0;
|
||||
virtual void releaseSharedMemory(int key, int size) =0;
|
||||
};
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user