{"id":24519805,"url":"https://github.com/chapulina/simslides","last_synced_at":"2025-04-14T10:11:59.167Z","repository":{"id":53951977,"uuid":"204216011","full_name":"chapulina/simslides","owner":"chapulina","description":"Presentation slides inside robot simulations 🎥🤖","archived":false,"fork":false,"pushed_at":"2022-09-16T23:04:16.000Z","size":758016,"stargazers_count":64,"open_issues_count":8,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-27T23:24:38.810Z","etag":null,"topics":["gazebo","gui","ignition","ignition-gazebo","ignition-robotics","keyframes","pdf","presentation","robot-simulation","robotics","simulation","slides"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chapulina.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-24T21:44:26.000Z","updated_at":"2024-10-14T18:46:06.000Z","dependencies_parsed_at":"2023-01-18T12:00:35.109Z","dependency_job_id":null,"html_url":"https://github.com/chapulina/simslides","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chapulina%2Fsimslides","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chapulina%2Fsimslides/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chapulina%2Fsimslides/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chapulina%2Fsimslides/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chapulina","download_url":"https://codeload.github.com/chapulina/simslides/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248860190,"owners_count":21173342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gazebo","gui","ignition","ignition-gazebo","ignition-robotics","keyframes","pdf","presentation","robot-simulation","robotics","simulation","slides"],"created_at":"2025-01-22T01:52:30.106Z","updated_at":"2025-04-14T10:11:59.145Z","avatar_url":"https://github.com/chapulina.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimSlides\n\nImport PDF files into robot simulation and present flying from slide to slide.\n\n\u003cimg src=\"images/SimSlides_logo.png\" alt=\"SimSlides\" width=\"200\"\u003e\n\n## Features\n\nSimSlides consists of plugins for two simulators:\n[Gazebo Classic](http://gazebosim.org/) and\n[Ignition Gazebo](https://ignitionrobotics.org/). There are different features for\neach simulator.\n\n### Ignition\n\n![SimSlides Ignition](images/SimSlides_Ignition.gif)\n\n* Navigate through keyframes using **mouse**, **keyboard** or wireless **presenter**\n* Keyframes can:\n    * Look at a **slide** (even if it has moved)\n    * **Move camera** to a specific pose\n    * Go through slides **stacked** on the same pose\n* ... plus all **Ignition** features!\n\n### Gazebo classic\n\n![Generate demo](images/SimSlides_importPDF.gif)\n\n* Import **PDF** files into simulation through the GUI\n* Navigate through keyframes using **mouse**, **keyboard** or wireless **presenter**\n* Keyframes can:\n    * Look at a **slide** (even if it has moved)\n    * **Move camera** to a specific pose\n    * Seek to specific spot in a **log** file\n    * Go through slides **stacked** on the same pose\n    * Write copiable HTML **text** to a dialog\n* ... plus all **Gazebo** features!\n\n---\n\nChecking out a couple other tutorials is also recommended if you want to\nuse each simulator's potential to customize your presentations. Maybe you\nwant to setup keyboard triggers? Control a robot using\n[ROS](https://www.ros.org/)? The possibilities are endless!\n\n## Install\n\nSimSlides' main branch supports both Gazebo Classic and Ignition. It's ok if\nyou don't have both simulators installed, only the plugin for the simulator\npresent will be compiled.\n\n### Ignition\n\nThe main branch supports Ignition Citadel, Edifice and Fortress.\n\nFollow the official install [instructions](https://ignitionrobotics.org/docs/fortress/install).\n\n### Gazebo Classic\n\nThe main branch has been tested on Gazebo version 11.\n\nFollow the official install [instructions](http://gazebosim.org/tutorials?cat=install).\n\nExtra dependencies:\n\n    sudo apt install imagemagick\n\n\u003e It's also recommended that you make sure ImageMagick can convert PDFs, see\n\u003e [this](https://stackoverflow.com/questions/42928765/convertnot-authorized-aaaa-error-constitute-c-readimage-453?answertab=active#tab-top).\n\n## Build SimSlides\n\nBy default, SimSlides will try to build against Ignition Citadel and Gazebo 11.\nFor other Ignition versions, set the `IGNITION_VERSION` environment variable\nbefore building. For example:\n\n```\nexport IGNITION_VERSION=fortress\n```\n\nSimSlides can be built with a basic cmake workflow, for example:\n\n    mkdir build\n    cd build\n    cmake ..\n    make\n    sudo make install\n    cd ..\n\nBe sure to add your `CMAKE_PREFIX_PATH` to `LD_LIBRARY_PATH`, for example,\nwhen following the steps above, you should do this before running:\n\n    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH\n\nIt's also possible to build SimSlides inside a\n[colcon](https://colcon.readthedocs.io/en/released/) workspace.\n\n## Run SimSlides\n\n### Ignition\n\nRun simslides:\n\n    simslides_ignition\n\n### Gazebo classic\n\n*Important*: Source Gazebo, this may be in a different place depending on your\nGazebo installation:\n\n    source /usr/share/gazebo/setup.sh\n\nRun simslides:\n\n    simslides_classic\n\nThis starts SimSlides in an empty world. You're ready to create your own presentation!\n\n## Demo\n\nYou can find a demo presentation inside the `worlds` directory.\nThe same demo works for both simulators.\n\nRun it as follows:\n\n1. Move to the simslides clone directory\n\n        cd \u003cpath to\u003e simslides\n\n1. (Only for Gazebo classic) Source Gazebo\n\n        source /usr/share/gazebo/setup.sh\n\n1. Load the world\n\n        simslides_ignition worlds/demo_slide.sdf\n        simslides_classic worlds/demo_slide.sdf\n\n## Your own presentation\n\nYou can generate your own presentation as follows:\n\n### Generate a new presentation\n\n![Generate demo](images/SimSlides_importPDF.gif)\n\n1. On the top menu, choose `SimSlides -\u003e Import` PDF (or press `F2`)\n\n1. Choose a PDF file from your computer\n\n1. Choose the folder to save the generated slide models at\n\n1. Choose a prefix for your model names, they will be named `prefix-0`, `prefix-1`, ...\n\n1. Click Generate. A model will be created for each page of your PDF. This\nmay take a while, the screen goes black... But it works in the end.\nSometimes it looks like not all pages of the PDF become models... That's\nan open issue.\n\n1. When it's done, all slides will show up on the world in a grid.\n\n1. A world file is also created, so you can reload that any time.\n\n### Presentation mode\n\nOnce you have the slides loaded into the world, present as follows:\n\n1. Press `F5` or the play button on the top left to start presentation mode\n\n1. Press the arrow keys to go back and forth on the slides\n\n1. You're free to use the rest of Gazebo's interface while presenting.\n   If you've navigated far away from the current slide, you can press `F1`\n   to return to it.\n\n1. At any moment, you can press `F6` to return to the initial camera pose.\n\n## Existing presentations\n\nWhen this project was started, all presentations were kept in different\nbranches of the same repository. Since mid 2019, new presentations are being\ncreated in their own repositories.\n\n### Until mid 2019\n\n1. Move to the presentation branch, available ones are:\n\n    * `CppCon2015`: [CppCon, September 2015](https://www.youtube.com/watch?v=PXdQwFSJwQ8)\n\n    * `BuenosAires_Nov2015`: University of Buenos Aires, November 2015\n\n    * `Chile_Nov2015`: Universidad de Chile, November 2015\n\n    * `IEEE_WiE_ILC_2016`: [IEEE Women in Engineering International Leadership Conference, May 2016](https://www.youtube.com/watch?v=gTLYT881oao)\n\n    * `ROSCon_Oct2016`: [ROSCon, October 2016](https://vimeo.com/187699565)\n\n    * `ROSIndustrial_Jan2017`: [ROS Industrial web meeting, January 2017](https://www.youtube.com/watch?v=qOhfEweo7V8)\n\n    * `OSS4DM_Mar2017`: [Open Source Software for Decision Making, March 2017](https://www.youtube.com/watch?v=7PsKBUaddDU)\n\n    * `OSCON_May2017`: [Open Source Conference, May 2017](https://www.youtube.com/watch?v=Xj026G6rNvE)\n\n    * `ROSCon_Sep2017`: [ROSCon, Sep 2017](https://vimeo.com/236482055)\n\n    * `Brasil_Mar2018`: Brasil visits, Mar 2018\n\n    * `QConSF_Nov2018`: [QConSF, Nov 2018](https://www.youtube.com/watch?v=Gwbk6Qf_TqY)\n\n    * `UCSC_Feb2019`: University of California, Santa Cruz, Feb 2019\n\n    * `QConAI_Apr2019`: [QCon.ai, Apr 2019](https://www.infoq.com/presentations/robot-simulation-real-world/)\n\n1. A lot changes from one presentation to the next. Follow instructions on that\nbranch's `README` to run the presentation. I've done my best to document it all,\nbut each presentation may take some massaging to work years later.\n\n### Since mid 2019\n\nSee each repository / world:\n\n* [ROSConJP 2019](https://github.com/chapulina/rosconjp_2019) ([video](https://vimeo.com/370247782))\n* [ROSCon 2019](https://github.com/chapulina/roscon_gz_ros2/) ([video](https://vimeo.com/378683414))\n* ROS-Industrial Conference 2019: ([video](https://www.youtube.com/watch?v=QAi6bORqQno))\n* [All Things Open 2020](https://github.com/chapulina/ATO2020_Ignition) ([video](https://www.youtube.com/watch?v=FheYuaMYJHg))\n* [Open Source 101 2021](https://app.ignitionrobotics.org/chapulina/fuel/worlds/Open%20Source%20101) ([video](https://www.youtube.com/watch?v=VHffp5kYLEg))\n\n## History\n\nThis project started as a few bash scripts for CppCon 2015. Back then, it used\nto be hosted on BitBucket using Mercurial.\n\nOver the years, the project evolved into more handy GUI plugins, and is\ngaining more features for each presentation.\n\nThe repository was ported to GitHub + Git in August 2019, when BitBucket\ndropped Mercurial support.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchapulina%2Fsimslides","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchapulina%2Fsimslides","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchapulina%2Fsimslides/lists"}