Fluid Simulation

2014-12-01

An experimental particle based fluid simulation plugin has been added to Gazebo, which can be tested in the tutorials. In order to run the simulation an Nvidia graphics card with cuda support is required and to have Fluidix library installed.

The fluids simulation is based on the Smoothed-particle Hydrodynamics method. All the particle interactions are computed on the GPU, thus allowing us to simulate thousands of fluid particles at interactive speeds.

The interaction between the physics engine running in Gazebo and the fluid engine is done using a world plugin loaded in the .world file. This interaction represents a two way communication between the engines: first Gazebo sends all its collisions (object shapes) to be loaded in the fluid engine and initialises them with their current position and orientation. Afterwards the fluid is loaded with the given particle numbers and its volume. During runtime the collisions (object shapes) poses from Gazebo are constantly updated in the fluid engine, and interaction with the fluid are computed. As a response the fluid engine sends the forces and torques that are needed to be applied on the objects from Gazebo.

In order to visualise the fluid, the plugin also sends the current poses of all the particles on a topic to which a visualisation plugin is subscribed, and renders them over the current scene.

There are still many parts to be added to the simulation, some of them are mentioned at the end of the tutorial.

This work has been contributed by Andrei Haidu.

The Gazebo team at OSRF has been hard at work setting up a simulation environment for the DARPA HAPTIX project. The goal of HAPTIX is to "develop new science and technology to achieve closed-loop control of dexterous mechatronic prostheses that will provide amputees with prosthetic limb systems that feel and function like natural limbs".

Teams participating on HAPTIX will have access to a customized version of Gazebo that includes models for ARATand the Johns Hopkins APL arm. We have also developed a custom GUI interface, shown below, for testing and development purposes.

This project also marks the first time Windows and Matlab users can interact with Gazebo, thanks to our new cross-platform transport library. The scope is limited to the HAPTIX project, however plans are in motion to bring the entire Gazebo package to Windows.

If you are not a participant in the HAPTIX project, you can still check out the code and run through our tutorials. For more information visit the HAPTIX mini-page at http://gazebosim.org/haptix.

With the release of Gazebo 4 came support for Oculus Rift. Since then, a team of students from the National University of Singapore have implemented an engaging and user-friendly software package for navigating through a simulation environment.

Mohit Shridhar, a 2nd year Computer Engineering student, and his partner David Tat Wai Lee, a 2nd year Industrial and Systems Engineering student, completed an internship at HopeTechnik where they had a chance to work with Gazebo and ROS for the first time. During their internship they worked on project SESTO, an AGV designed to carry medical supplies in hospitals. The target hospital was under construction, which left the team with no way to conduct proper tests. Mohit and David were tasked with simulating the AGV's navigation system in Gazebo along with a model of the hospital.

After creating models in Blender and Solidworks, Mohit and David discovered the Oculus Rift support in Gazebo. With the addition of a PS3 joystick, the team had a first-person perspective into the simulated environment. They quickly got carried away, and added a plethora of features to the Gazebo Navigator which can been seen in the video below.

For those interested in using the Oculus-Rift Gazebo Navigator; the code is available at https://github.com/MohitShridhar/oculus_gazebo_navigator.

During his internship with OSRF, Alex Henning developed FRCSim for the FIRST Robotics Competition (FRC). FRC is a competive high school robotics program where students build 120lb robots and compete against other robots while working on alliances. FRCSim is a set of plugins that integrates Gazebo and WPILib, the robot library used by teams, so that they can work together to allow the same code to run on FRC robots and on Gazebo simulated robots. Until recently, students on FRC teams needed access to physical robots to test their code, practice programming, and learn WPILib in just six short weeks. FRCSim currently ships with models of two actual robots and experimental support is on the way to allow teams to import their own robots into Gazebo.

Alex implemented WPILibSim in both Java and C++. He also developed Gazebo plugins for a variety of sensors and actuators, created a simplified installer for FRC teams and integrated with the WPILib Eclipse-based development tools. The current integration using the Eclipse plugins makes running the code in simulation almost identical to deploying for the real robot, the only difference is the user selects "Run in simulation" instead of "Deploy to robot". The plugin also ships with example programs that can be run and modified by students. Check out the following video for more information.

FRCSim is currently part of the closed FRC Beta and should be available to everyone in January, 2015. With its deployment, students will be given greater access to simulation environments to help them learn to program robots. It will also give them experience with simulation, which is being used more and more as part of modern robotics projects.

References

Download (4.0.0)

Changelog | Migration Guide | Roadmap


Highlights for 4.0.0

  • Vehicle suspension models
  • Oculus Rift support
  • Razer Hydra support
  • Copy and paste models via GUI
  • Custom road textures
  • Support for DART 4.1
  • Extruded polyline geometry

Website updates

We are moving a few web assets from gazebosim.org to externally hosted locations. This is done in an effort to reduce the maintenance effort required by OSRF. The following list details what resource are being moved: