/simslides

Presentation slides inside Gazebo simulations 🎥🤖

Primary LanguageC++

SimSlides

Import PDF files into robot simulation and present slides flying from slide to slide.

SimSlides

Features

  • Import PDF files into simulation through the GUI
  • Navigate through keyframes using mouse, keyboard or wireless presenter
  • Keyframes can:
    • Look at a slide (even if it has moved)
    • Move camera to a specific pose
    • Seek to specific spot in a log file
    • Go through slides stacked on the same pose
    • Write copiable HTML text to a dialog
  • ... plus all Gazebo features!

Install Gazebo

The master branch supports Gazebo version 9.

Follow the official install instructions.

Checking out a couple other tutorials is also recommended if you want to use all of Gazebo's potential to customize your presentations. Maybe you want to setup keyboard triggers? Control a robot using ROS? The possibilities are endless!

Extra dependencies

sudo apt install imagemagick

It's also recommended that you make sure ImageMagick can convert PDFs, see this.

Build

mkdir build
cd build
cmake ..
make
sudo make install
cd ..

Run SimSlides

Important: Source Gazebo, this may be in a different place depending on your Gazebo installation:

source /usr/share/gazebo/setup.sh

Run simslides:

simslides

This starts SimSlides in an empty world. You're ready to create your own presentation!

Demo

You can find a demo presentation inside the worlds directory. Run it as follows:

  1. Move to the simslides clone directory

     cd <path to> simslides
    
  2. Source Gazebo

     source /usr/share/gazebo/setup.sh
    
  3. Load the world

     simslides worlds/demo_slide.world
    

Your own presentation

You can generate your own presentation as follows:

Generate a new presentation

Generate demo

  1. On the top menu, choose Simslides -> Import PDF (or press F2)

  2. Choose a PDF file from your computer

  3. Choose the folder to save the generated slide models at

  4. Choose a prefix for your model names, they will be named prefix-0, prefix-1, ...

  5. Click Generate. A model will be created for each page of your PDF. This may take a while, the screen goes black... But it works in the end. Sometimes it looks like not all pages of the PDF become models... That's an open issue.

  6. When it's done, all slides will show up on the world in a grid.

Load previously generated slide models

If you already generated slide models with the step above, and now just want to spawn them into the world:

  1. On the top menu, choose Simslides -> Load Models (or press F3)

  2. Choose the path of the directory which includes all the slides

  3. Type in the model name prefix

  4. Load

  5. When it's done, all slides will show up on the world in a grid.

Presentation mode

Once you have the slides loaded into the world, present as follows:

  1. Press F5 or the play button on the top left to start presentation mode

  2. Press the arrow keys to go back and forth on the slides

  3. You're free to use the rest of Gazebo's interface while presenting. If you've navigated far away from the current slide, you can press F1 to return to it.

  4. At any moment, you can press F6 to return to the initial camera pose.

Existing presentations

When this project was started, all presentations were kept in different branches of the same repository. Since mid 2019, new presentations are being created in their own repositories.

Until mid 2019

  1. Move to the presentation branch, available ones are:

  2. A lot changes from one presentation to the next. Follow instructions on that branch's README to run the presentation. I've done my best to document it all, but each presentation may take some massaging to work years later.

Since mid 2019

See each repository:

History

This project started as a few bash scripts for CppCon 2015. Back then, it used to be hosted on BitBucket using Mercurial.

Over the years, the project evolved into more handy GUI plugins, and is gaining more features for each presentation.

The repository was ported to GitHub + Git in August 2019, when BitBucket dropped Mercurial support.