{"id":32386238,"url":"https://github.com/ihmcrobotics/simulation-construction-set-2","last_synced_at":"2025-10-25T02:59:38.834Z","repository":{"id":39583817,"uuid":"222312468","full_name":"ihmcrobotics/simulation-construction-set-2","owner":"ihmcrobotics","description":"Graphical user interface for visualizing control variables from either a server, a log file, or a simulation.","archived":false,"fork":false,"pushed_at":"2025-10-02T18:05:36.000Z","size":75745,"stargazers_count":16,"open_issues_count":74,"forks_count":0,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-10-02T20:14:43.729Z","etag":null,"topics":["data-visualization","humanoid-robot","robotics","simulation"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ihmcrobotics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-11-17T21:09:38.000Z","updated_at":"2025-10-02T18:05:34.000Z","dependencies_parsed_at":"2023-10-23T19:28:18.525Z","dependency_job_id":"8146ed52-07fd-40cc-9e8c-1748d456a643","html_url":"https://github.com/ihmcrobotics/simulation-construction-set-2","commit_stats":null,"previous_names":[],"tags_count":118,"template":false,"template_full_name":null,"purl":"pkg:github/ihmcrobotics/simulation-construction-set-2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihmcrobotics%2Fsimulation-construction-set-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihmcrobotics%2Fsimulation-construction-set-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihmcrobotics%2Fsimulation-construction-set-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihmcrobotics%2Fsimulation-construction-set-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ihmcrobotics","download_url":"https://codeload.github.com/ihmcrobotics/simulation-construction-set-2/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ihmcrobotics%2Fsimulation-construction-set-2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280897668,"owners_count":26409960,"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","status":"online","status_checked_at":"2025-10-25T02:00:06.499Z","response_time":81,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["data-visualization","humanoid-robot","robotics","simulation"],"created_at":"2025-10-25T02:59:14.005Z","updated_at":"2025-10-25T02:59:38.829Z","avatar_url":"https://github.com/ihmcrobotics.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![SCS2](logo/SCS2.png)\n\n![scs2](https://maven-badges.herokuapp.com/maven-central/us.ihmc/scs2-definition/badge.svg?style=plastic)\n![buildstatus](https://github.com/ihmcrobotics/simulation-construction-set-2/actions/workflows/main-gradleCI-build.yml/badge.svg)\n\n# Install standalone application on Ubuntu 22.04 (Recommended)\n\n1. Install Java 17: `sudo apt install openjdk-17-jdk`\n2. Download the latest release (`scs2-[version].deb`) from the [releases page](https://github.com/ihmcrobotics/simulation-construction-set-2/releases).\n3. Install the package:\n    - Open your favorite terminal application (Ctrl+Alt+T)\n    - `sudo dpkg -i scs2-[version].deb`\n4. Shortly after the install completed, the desktop application should be available in the application menu as `SCS2 Session Visualizer` (`Super` key, then\n   start looking up for SCS2).\n5. If you want to run SCS2 from the command line, you can add the following line to your `~/.bashrc` file: `export PATH=$PATH:/opt/scs2-[version]/bin`.\n    - You can then run SCS2 from the command line with: `SCS2SessionVisualizer`\n    - The application accepts arguments, for instance:\n        - `SCS2SessionVisualizer --help` to get the list of available arguments.\n        - `SCS2SessionVisualizer -l /path/to/log/file` to load a log file.\n        - `SCS2SessionVisualizer -l /path/to/log/file -r /path/to/robot/urdf/file` to load a log file and a robot definition file.\n\nTo uninstall SCS2, run: `sudo dpkg -r scs2`\n\n# This is still an experimental version\n\nThis version is not bug-free and still misses lots of features.\nDo not expect a fully functional application, however the main features should be available to make it usable.\nIf you'd like to help improving this application, please provide feedback on\nthe [GitHub issue page](https://github.com/ihmcrobotics/simulation-construction-set-2/issues).\n\nAny type of feedback would be greatly appreciated, in particular:\n\n- If the application throws an exception, the most helpful set of information is: strack-trace of the exception (available from the console) and the steps you\n  proceeded through the GUI before getting the exception so it can be reproduced locally.\n- Missing minor features: when it feels like there should be that one small option, for instance a button to reset a view or something, available to the user\n  but it's not there. They're often easy to implement without involving large development and still make the application much better.\n- Missing major features: provide context or a concrete example illustrating the need for a new major feature. A major feature is for instance: the ability to\n  record videos (already in the roadmap) or the ability to do some post-processing on the YoVariables. It will very likely take a while to implement it, but may\n  be so much worth it.\n- GUI visual feel: Ugh that button is ugly... That background could be darker... Well if that helps making the GUI look nicer, everybody will enjoy it.\n- GUI unexpected/frustrating behavior: When after hitting that button 30 times you're still expecting a different result and that is frustrating... If you can\n  provide the details on what's unexpected/frustrating and what you would expect, that'll help make the GUI fell smoother to work with.\n\n# GUI differences and limitations w.r.t. to SCS1\n\n- Where is the search panel? See that hamburger control in the top left corner of the 3D view? There, click it.\n- Where do you create empty charts? You see that small blue square with an inverted triangle in the top left corner of the chart area? There, click it.\n- There's too few control buttons, where the others? See that \"plus\" button? There, click it.\n- The navigation controls for the 3D view differ from SCS1, they are the same to our other JavaFX GUI applications though and all controls are available when\n  using a touchpad instead of a mouse.\n- Overhead plotter navigation controls differ from SCS1. Left click'n'drag: translate. Mouse wheel: zoom in/out. Note that all controls are available when using\n  a touchpad instead of a mouse.\n- The camera is not tracking the robot?? Right click on the graphic you want to track.\n- Can I visualize a log? Go to the menu `Session \u003e Start log session...`.\n- Can connect to a remote session? Go to the menu `Session \u003e Start remote session...`.\n\n# Main new features compared to SCS1 Visualizer\n\n## `YoComposite`\n\nA `YoComposite` is a group of `YoVariable`s that represents a high-level of information.\nThe main advantage of `YoComposite`s is the ability to search for a specific type of composite which better filters searched, and also the ability to plot all\nthe components of the composite over one or more charts given a predefined configuration.\n\nThere is a default set of `YoComposite` defined in SCS2:\n\n- `YoTuple2D` \u0026 `YoTuple3D`: represent respectively 2D \u0026 3D points and/or vectors.\n- `YoQuaternion`: represents orientations defined as quaternions.\n- `YoYawPitchRoll`: represents orientations defined as Euler angles or yaw-pitch-roll angles.\n\nTo search for a certain `YoComposite`, open the search panel, to right of the search field, click that button with \"...\" and change the search target in the\ndialog that pops up.\n\nCustom `YoComposite`s can be defined view the menu _YoComposite \u003e YoCompositePattern properties..._\nPreferred chart configurations for each custom composite can also be defined there. You can export/import custom `YoComposite` to a file via _YoComposite \u003e\nLoad/Save YoCompositePattern..._.\n\n## `YoGraphic`\n\nWhile `YoGraphic` were available in SCS1 by implementing them in Java, they are available from the GUI in SCS2.\n\n`YoGraphic3D` represents the group of 3D graphics that will show up in the 3D view, while `YoGraphic2D` represents the group of 2D graphics that will show up in\nthe overhead plotter. The latter can be displayed via the menu _YoGraphic \u003e Overhead Plotter_.\n`YoGraphic`s can be created via the menu _YoGraphic \u003e YoGraphic properties..._. You can export/import `YoGraphic` to a file via _YoComposite \u003e Load/Save\nYoGraphic..._.\n\n# System properties:\n\n- `scs2.home`: [String] Defines the home folder in which SCS2 is saving configuration files.\n- `scs2.session.buffer.initialsize`: [Integer] Defines the default buffer size for any type of session.\n- `scs2.session.buffer.recordtickperiod`: [Integer] Defines the default record frequency for any type of session.\n- `scs2.session.runrealtime`: [Boolean] If defined, the simulation will not go faster than real-time.\n- `scs2.session.playrealtime`: [Boolean] Defines the default real-time rate when playing back data for any type of session.\n- `scs2.session.buffer.publishperiod`: [Long] Defines the default period in nanoseconds at which the GUI is refreshed for any type of session.\n- `scs2.session.gui.mainwindow.loadconfig`: [Boolean] Determines whether or not the main window configuration (width, height, position, maximized or not) from\n  the configuration file. Enabled by default, can be disabled if the behavior is not desired.\n- `scs2.session.gui.buffersize.loadconfig`: [Boolean] Determines whether or not the buffer size should be initialized from the configuration file. Disabled by\n  default, can be enabled if the behavior is desired.\n- `scs2.session.gui.yovariable.enablefuzzysearch`: [Boolean] If a `YoVariable` cannot be found by name in the session registry, when loading configuration file,\n  the fuzzy search can help retrieving it. This helps with variable rename or with variable that gets moved. Disabled by default. The search can be\n  computationally expensive and is currently blocking the rendering thread.\n- `scs2.session.gui.skybox.theme`: [String] Allows changing skybox theme. 3 options: `CLOUDY_CROWN_MIDDAY` (default), `SCS1`, and `CUSTOM`. When `CUSTOM` is\n  set, the path to the skybox image file(s) is to be provided as well.\n- `scs2.session.gui.skybox.custompath`: [String] Defines the path to load a custom skybox, not that the skybox theme is to be set to `CUSTOM` for this property\n  to be used. The path should lead to either a single image file that contains the 6 panes to use as the skybox (looks like an unfolded box), or lead to a\n  directory that contains 6 image files named: Top, Bottom, Left, Right, Front, and Back and which file extension can be either `*.png`, `*jpg`, or `*.bmp`.\n- `scs2.session.gui.loadconfig.synchronous`: [Boolean] Modifies the behavior for initializing a session:\n    - `true` best attempt is made at initializing sequentially, increasing initialization time and improving predictability of when the GUI is fully\n      initialized. This is expected to improved the accuracy of `SessionVisualizerControls.waitUntilVisualizerFullyUp()`.\n    - `false` initialization is done in parallel, decreasing initialization time and impairing the ability to predict when the GUI is fully initialized.\n- `scs2.session.gui.loadconfig.time`: [Boolean] Whether to print the time taken for initialization.\n\n# Environment variables:\n\n- `SCS2_HOME`: [String] Defines the home folder in which SCS2 is saving configuration files.\n- `SCS2_SKYBOX_THEME`: [String] Allows changing skybox theme. 3 options: `CLOUDY_CROWN_MIDDAY` (default), `SCS1`, and `CUSTOM`. When `CUSTOM` is set, the path\n  to the skybox image file(s) is to be provided as well.\n- `SCS2_SKYBOX_CUSTOM_PATH`: [String] Defines the path to load a custom skybox, not that the skybox theme is to be set to `CUSTOM` for this property to be used.\n  The path should lead to either a single image file that contains the 6 panes to use as the skybox (looks like an unfolded box), or lead to a directory that\n  contains 6 image files named: Top, Bottom, Left, Right, Front, and Back and which file extension can be either `*.png`, `*jpg`, or `*.bmp`.\n- `SCS2_GUI_LOAD_SESSION_SYNCHRONOUS`: [Boolean] Modifies the behavior for initializing a session. See `scs2.session.gui.loadconfig.synchronous` above.\n\n# Useful Tools classes:\n\n- `URDFTools`: for creating a `RobotDefinition` from a URDF file.\n- `SDFTools`: for creating a `RobotDefinition` from a SDF file.\n- `DefinitionIOTools`: for writing/reading definitions into/from XML file.\n- `SimMultiBodySystemTools`: common operations with system composed of `SimRigidBodyBasics` and `SimJointBasics` which are used to define the robot in\n  simulation.\n- `SharedMemoryIOTools`: for writing a `SharedBuffer` into a data file and reading a `SharedBuffer` from a data file.\n- `JavaFXMissingTools`: provides additional tools for working with JavaFX.\n- `YoGraphicConversionTools` (in `ihmc-graphics-description`): for converting SCS1 `YoGraphic` and `Artifact` into SCS2 `YoGraphicDefinition`.\n- `SegmentedLine3DTriangleMeshFactory`: for creating a 3D \"noodle\" that goes through 3D waypoint.\n- `VisualDefinitionFactory`: for creating `VisualDefinition`.\n- `YoGraphicDefinitionFactory`: for creating `YoGraphicDefinition`.\n\n# Repository Projects:\n\n- `scs2-definition`: This project gathers classes to help define: robots, terrain environment, yoGraphics, visuals, and so on. It is meant to be a low-level\n  project with low overhead in terms of dependencies such that it can easily be imported in other low-level projects.\n- `scs2-shared-memory`: This project provides an implementation for a yoVariable buffer. This buffer allows storing yoVariable values over time which in turn\n  allows playing back simulation data for instance. This project is meant to remain rather low-level in terms of dependency and limit the scope to yoVariables.\n- `scs2-session`: This project defines the base implementation of a session. A session is an abstract base layer for defining a simulation session, log session,\n  or remote session.\n- `scs2-simulation`: This project provides the implementation for the simulation backend as well as 2 physics engines: contact point based physics engine (SCS1\n  like) and an impulse based physics engine.\n- `scs2-bullet-simulation`: This project provides a new physics engine that is a bridge to Bullet.\n- `scs2-session-logger`: This project provides the backend for log session and remote session.\n- `scs2-session-visualizer`: This project provides tools for the SCS2 GUI that are graphics engine agnostic.\n- `scs2-session-visualizer-jfx`: This project provides a JavaFX implementation of the SCS2 GUI.\n- `scs2-simulation-construction-set`: This project provides the class `SimulationConstructionSet2` which bundles backend and frontend of SCS2 in a similar\n  fashion as `SimulationConstructionSet` in SCS1.\n\n# Known issues:\n\nSee [Wiki - Known Issues](https://github.com/ihmcrobotics/simulation-construction-set-2/wiki/Known-Issues-and-workaround).\n\n# External references:\n\n## Icons:\n\n- \u003cimg src=\"scs2-session-visualizer-jfx/src/main/resources/icons/valid-icon.png\" alt=\"Valid icon\" width=\"25\"/\u003e \u0026 \u003cimg src=\"scs2-session-visualizer-jfx/src/main/resources/icons/invalid-icon.png\" alt=\"Invalid icon\" width=\"25\"/\u003e icons from \u003ca href=\"https://icons8.com/icons/\"\u003eIcons8\u003c/a\u003e\n\n## Skybox:\n\n- \u003cimg src=\"scs2-session-visualizer-jfx/src/main/resources/skybox/cloudy/Front.png\" alt=\"Skybox\" width=\"50\"/\u003e default skybox from \u003ca href=\"https://assetstore.unity.com/packages/2d/textures-materials/sky/farland-skies-cloudy-crown-60004\"\u003eCloudy Crown Skybox\u003c/a\u003e\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihmcrobotics%2Fsimulation-construction-set-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fihmcrobotics%2Fsimulation-construction-set-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fihmcrobotics%2Fsimulation-construction-set-2/lists"}