RoPod/Tutorials/Load heightmap in GAZEBO: Difference between revisions

From Control Systems Technology Group
Jump to navigation Jump to search
No edit summary
No edit summary
Line 27: Line 27:
2. Convert SVG to openSCAD file
2. Convert SVG to openSCAD file


To convert from SVG to openSCAD Inkscape needs to be installed. After installation, a plugin needs to be added to Inkscape. See step 2 on this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/
To convert from SVG to openSCAD Inkscape needs to be installed. After installation, a plugin needs to be added to Inkscape. See step 2 on this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step2 . For the installation of the plugin you need to copy the paths2openscad.py AND the paths2openscad.inx files.


When creating the openSCAD file you can choose the height(mm) and the smoothing factor. Values of 1000 mm (Maximum allowed in the configuration) and 0.5 respectively work fine.


3. Render and create STL file


Follow step three from this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step3 . Thus, render the file and export it as STL.


3. Render and create STL file
4. Use STL file in GAZEBO


4. Use STL file in GAZEBO
As a final step, you can use the generated STL file in GAZEBO. It is IMPORTANT to scale DOWN the mesh 1000 times. This because the default units in the STL file are milli-meter and in GAZEBO are meters. If you wish a world higher than 1000mm choose an appropriate scale in z-direction.

Revision as of 15:00, 18 September 2017

In principle Gazebo can load directly heightmaps specified in a png grayscale file. However, after following some tutorials the script did not succeed in loading a heightmap.

As an alternative, one can convert the heightmap into a 3D mesh file and load it in GAZEBO, which works straightforward. The conversion could be made in a program like blender, however here directions are given using open source software.

The conversion process is divided in several steps:

1. Convert PGM to SVG

The conversion is made using the program potrace. If not installed, run:

sudo apt install potrace

Next, use the resolution of your heightmap to compute the corresponding dpi resolution. Use this formula:

dpi resolution = 25.4 / #mmperpixel

For the heightmap of the lab, the resolution is 25mm/pixel, thus 1.016 dpi. Next run the potrace command as follows:

potrace -s heightmap.pgm -a 0 -r 1.016

Then a file named heightmap.svg is created.

2. Convert SVG to openSCAD file

To convert from SVG to openSCAD Inkscape needs to be installed. After installation, a plugin needs to be added to Inkscape. See step 2 on this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step2 . For the installation of the plugin you need to copy the paths2openscad.py AND the paths2openscad.inx files.

When creating the openSCAD file you can choose the height(mm) and the smoothing factor. Values of 1000 mm (Maximum allowed in the configuration) and 0.5 respectively work fine.

3. Render and create STL file

Follow step three from this link http://www.instructables.com/id/Make-a-3D-print-from-a-2D-drawing/#step3 . Thus, render the file and export it as STL.

4. Use STL file in GAZEBO

As a final step, you can use the generated STL file in GAZEBO. It is IMPORTANT to scale DOWN the mesh 1000 times. This because the default units in the STL file are milli-meter and in GAZEBO are meters. If you wish a world higher than 1000mm choose an appropriate scale in z-direction.