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:
=
2015-05-28 16:05:24 -07:00
parent 8005b7167e
commit 82576d0bee
13 changed files with 489 additions and 1 deletions

View 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