Presentation slides inside robot simulations 🎥🤖
Import PDF files into robot simulation and present flying from slide to slide.
SimSlides consists of plugins for two simulators: Gazebo Classic and Ignition Gazebo. There are different features for each simulator.
Checking out a couple other tutorials is also recommended if you want to use each simulator's potential to customize your presentations. Maybe you want to setup keyboard triggers? Control a robot using ROS? The possibilities are endless!
SimSlides' main branch supports both Gazebo Classic and Ignition. It's ok if you don't have both simulators installed, only the plugin for the simulator present will be compiled.
The main branch supports Ignition Citadel, Edifice and Fortress.
Follow the official install instructions.
The main branch has been tested on Gazebo version 11.
Follow the official install instructions.
Extra dependencies:
sudo apt install imagemagick
It's also recommended that you make sure ImageMagick can convert PDFs, see this.
By default, SimSlides will try to build against Ignition Citadel and Gazebo 11.
For other Ignition versions, set the IGNITION_VERSION
environment variable
before building. For example:
export IGNITION_VERSION=fortress
SimSlides can be built with a basic cmake workflow, for example:
mkdir build
cd build
cmake ..
make
sudo make install
cd ..
Be sure to add your CMAKE_PREFIX_PATH
to LD_LIBRARY_PATH
, for example,
when following the steps above, you should do this before running:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
It's also possible to build SimSlides inside a colcon workspace.
Run simslides:
simslides_ignition
Important: Source Gazebo, this may be in a different place depending on your Gazebo installation:
source /usr/share/gazebo/setup.sh
Run simslides:
simslides_classic
This starts SimSlides in an empty world. You're ready to create your own presentation!
You can find a demo presentation inside the worlds
directory.
The same demo works for both simulators.
Run it as follows:
Move to the simslides clone directory
cd <path to> simslides
(Only for Gazebo classic) Source Gazebo
source /usr/share/gazebo/setup.sh
Load the world
simslides_ignition worlds/demo_slide.sdf
simslides_classic worlds/demo_slide.sdf
You can generate your own presentation as follows:
On the top menu, choose SimSlides -> Import
PDF (or press F2
)
Choose a PDF file from your computer
Choose the folder to save the generated slide models at
Choose a prefix for your model names, they will be named prefix-0
, prefix-1
, ...
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.
When it's done, all slides will show up on the world in a grid.
A world file is also created, so you can reload that any time.
Once you have the slides loaded into the world, present as follows:
Press F5
or the play button on the top left to start presentation mode
Press the arrow keys to go back and forth on the slides
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.
At any moment, you can press F6
to return to the initial camera pose.
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.
Move to the presentation branch, available ones are:
CppCon2015
: CppCon, September 2015
BuenosAires_Nov2015
: University of Buenos Aires, November 2015
Chile_Nov2015
: Universidad de Chile, November 2015
IEEE_WiE_ILC_2016
: IEEE Women in Engineering International Leadership Conference, May 2016
ROSCon_Oct2016
: ROSCon, October 2016
ROSIndustrial_Jan2017
: ROS Industrial web meeting, January 2017
OSS4DM_Mar2017
: Open Source Software for Decision Making, March 2017
OSCON_May2017
: Open Source Conference, May 2017
ROSCon_Sep2017
: ROSCon, Sep 2017
Brasil_Mar2018
: Brasil visits, Mar 2018
QConSF_Nov2018
: QConSF, Nov 2018
UCSC_Feb2019
: University of California, Santa Cruz, Feb 2019
QConAI_Apr2019
: QCon.ai, Apr 2019
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.
See each repository / world:
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.