RoboSim (ROBOtics + SIMulator) is a projects that aims to create an easy to use and easy to customize rigid body physics simulator for robotics applications. The project is currently under early development.
You can see the current state of the simulator in the following video:
Note: These instructions have been tested on Linux, but there should be no problems following them on Windows (or Mac) as well.
Before you begin, ensure you have met the following requirements:
For the collision detection and response we decided it was a better option to use an already available package (I could not take the burden of programming all of the collisions)
- hpp-fcl (Human path planner fast collision library) : (We use the 2.4.4 version)
- For linux :
mkdir build
cd build
cmake .. -DBUILD_PYTHON_INTERFACE=OFF
make
sudo make install
- octomap : (We use the 1.9.6 version)
mkdir build
cd build
cmake ..
make
sudo make install
- You also need eigen :
sudo apt install libeigen3-dev
To install RoboSim, follow these steps:
- Clone this repository recursively:
git clone --recursive https://github.com/your_username/RoboSim.git
- Navigate to the cloned repository:
cd RoboSim
- Use CMake to build the project :
mkdir build
cd build
cmake ..
make
- URGENT : Fix a bug related to memory management: Currently it is not possible to create a world instance in a sub context and return a pointer of that instance to the current context (An issue with the colliders from hpp::fcl shared poiters arises).
- Build intructions/Tutorial
- Documentation
- [-] Interface Simulator <-> Visualizer (WIP)
- Collisions
- [-] Add collision shapes
- Sphere
- Box
- Cylinder
- Capsule
- Plane (There might be issues with the plane)
- Heightmap
- Collision detection and respose implemeted using hpp::fcl (human path planner fast colision library).
- Collision groups.
- [-] Add collision shapes
- Constraints
- Contact constraints.
- Prismatic joint constraint
- Limited
- Driven
- Damped
- Revolute joint constraint
- Limited
- Driven
- Position driven
- [-] Speed driven (It is implemented but there are errors on the implementation: target speed doesnt match the actual speed).
- Damped
- Spherical joint
- Limited
- Damped
- URDF importer
- Loading and placement of componets ok -> Problems with contacts and joints
- Paralelization with OpenMP