Coder Social home page Coder Social logo

webots-cloud's Introduction

webots.cloud

This repository holds the contents of https://webots.cloud

For more information, refer to the webots.cloud documentation page.

webots.cloud is implemented as a Single Page Application (SPA), including the following URL model:

In addition, specific URLs correspond to different Webots materials.

Scenes and animantions are hosted directly on webots.cloud:

type data host sample URL
scene webots.cloud https://webots.cloud/S0_2Q8O (the URI starts with /S)
animation webots.cloud https://webots.cloud/AQnPNle (the URI starts with /A)

Demos and competitions are hosted on GitHub repositories:

type data host sample URL
demo github.com https://webots.cloud/run?url=https://github.com/user/my-repo/blob/master/worlds/example.wbt
competition github.com https://webots.cloud/run?url=https://github.com/user/my-repo/blob/master/worlds/example.wbt

Scene

A scene is a simple 3D model corresponding to a Webots world file. Scenes are static, that is nothing is moving. However, the users can change the viewpoint and zoom in to observe details in a scene.

Animation

An animation is an animated model. It is usually the recording of a simulation that can be played back by the users.

Simulaton

Demo

A demo is a complete Webots simulation project including a world file and one or several robot controllers. It may demonstrate some research achievement: a robot solving a problem or demonstrating some interesting capabilities. It may include some robot window displaying sensor data or other data representing the internal state of the robot. The robot window may also include the possibility for the user to interact with the simulation while it is running. For example there could be some buttons to ask the robot to perform some speficic actions, or a slider to apply a force to the robot, or a checkbox to open or close a door, etc. To setup a Webots repository that contains a demo, you should create it from the https://github.com/cyberbotics/webots-demo-template template repository. Then, you should commit your specific files: worlds, controllers, protos, robot windows, etc. Finally, you should add a new demo from the https://webots.cloud/demo page and indicate the GitHub URL of your Webots world file, including the tag (or branch) name, e.g., https://github.com/cyberbotics/webots/blob/R2021b/projects/languages/python/worlds/example.wbt.

Competition

A competition is a simulation scenario which proposes a challenge involving one or two participants. A robot has to address a problem and its behavior is evaluated against a performance metric.

Technical Details

Database

webots.cloud holds a database of GitHub repositories containing a Webots simulation:

id type url title stars
1 competition https://github.com/me/my_competition Obstacle Avoidance Competition 94
3 demo https://github.com/me/my_demo My Webots demo 12

Dockerfile

The version information specified in the Dockerfile at the root of the repository indicates which version of Webots is required to run the simulation.

For example:

FROM cyberbotics/webots:R2020b-rev1-ubuntu20.04
ARG PROJECT_PATH
RUN mkdir -p $PROJECT_PATH
COPY . $PROJECT_PATH

webots.yaml

webots.cloud parses the webots.yaml file at the root level of a repository to determine the type of Webots repository, publishing permission, etc. allowing to run the simulation in the cloud.

Type

Currently, we support 2 different types of repositories:

Demo

This is a simple simulation that can be run interactively. The webots.yaml file should contain a reference to the demo type and a publish setting, for example:

type: demo
publish: true

By default, publish is set to true. All worlds found in the same directory as the specified world will be be used by webots.cloud and listed as interactive run sessions. When publish is set to false the simulation will not be uploaded and can be removed from webots.cloud on resynchronization.

Competition

This type of repository should contain the scenario of a competition, including a supervisor process performing the evalution of the controller(s) and a publish setting.

type: competition
publish: true

Setup of a Simulation Server Infrastructure

Follow the instructions here.

webots-cloud's People

Contributors

benjamindeleze avatar jean-eudes-le-retour avatar omichel avatar stefaniapedrazzi avatar thomasoliverkimble avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

pinkdiamond1

webots-cloud's Issues

Link to webots.cloud documentation

Personally I think that a link to the dcoumentation is currently missing.
I know that the documentation has been added to the Webots User Guide, but regular users will never find it without a direct link.

Refreshing competition animation bug

When clicking the view button in the leaderboard of a competition, the corresponding animation is correctly opened and played.
However, if I refresh the animation page, it cannot reload the animation.
The error:
(error) File not found: https://raw.githubusercontent.com/cyberbotics/wrestling/undefined/storage/wb_a

Back button reloads the simulation

If you follow this link and you wait until the simulation runs, then you press the back button of your browser, you won't get back here immediately: it will reload the simulation. You will have to press back once more to get back here.

Login menu disappears if mouse is too far right

If your mouse is on the right side of the button (i.e. around the "v" symbol), the menu appears however if you try to click one of the sub-menu (ex: settings), when you move the mouse there, the menu disappears. More of an annoyance than a bug.

Ability to make competition match animations persistent

My understanding is that currently the animations visible in the leaderboard are temporary, meaning when a new run occurs the existing one gets deleted. To keep the interest high and/or gather more attention to the competition we might want to semi-regularly publish interesting matches elsewhere (twitter, discord, linkedin, ...) so it would be nice if there was an option somewhere (just for admins or open to anybody) that would save the animation. By that I mean the animation files should be uploaded to the "animations" tab so that a permanent link to it persists that we can share.

PROTO subcategories order changes

For some of the PROTO categories, the order of the subcategories changes after clicking multiple times on the selected category icon.

I can reproduce it for Furniture, Building and Exterior:
Screenshot from 2023-07-05 09-24-22

Screenshot from 2023-07-05 09-24-27

Better errors

When an error is raised by the php, like for example YAML file error: type not defined., the error is not displayed for the user and the loading icon do not stop, so it is hard to:

  • Understand that there is an issue.
  • Fix it

Full page reload should be avoided when searching on webots.cloud

When searching on webots.cloud (e.g. in the Proto tab), the page is reloaded (in realtime) after typing a few letters to search results based on what the users entered. The issue is that there is a timing between two letters that would erase the last letter because it was typed exactly at the moment of the page reload.

The solution would be to reload only the table and not the complete page to avoid affecting the search bar.

Running database/webots-cloud.sql gives syntax errors

Describe the Bug

Running database/webots-cloud.sql on a blank MySQL database gives three syntax errors:

  1. a duplicate column error:

(Duplicate column name 'viewed')

Lines 39 and 48 both create the same viewed column. Deleting line 48 and the comma at the end of line 47 seems to solve the error.

  1. two additional syntax errors:

(You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MODIFY `id` int(11) NOT NULL AUTO_INCREMENT' at line 1)

Replacing the semicolons at the end of lines 53 and 105 with commas seems to solve these errors.

Steps to Reproduce

  1. Create a new MySQL database
  2. source the file webots-cloud.sql in the MySQL console
  3. Errors pop up during the execution of the file

Expected behavior

The script should configure the database without any errors.

System

  • Ubuntu 22.04
  • MySQL ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Suggestion for Improving the Presentation of PROTOs

Currently the PROTOs are shown as a detailed list and they can be previsualized using the mouse tool-tip. I propose that for a better user experience, we change the presentation of these PROTOs from a detailed list to a grid format. This will provide users with a more comprehensive and visual overview of the available PROTOs, making it easier for them to find inspiration or to download the PROTOs they need, without having a specific idea in mind. Moreover, a grid format would also be suitable for showcasing scenes, animations, and simulations. To provide users with the same information as the list, we could also display detailed information about each PROTO, scene, animation, or simulation alongside its image or just under it.

Reduce precision of progress percentage

It seems that the progress percentage is using too high precision.
This is not very useful and makes difficult to understand what this number 96.2962962629629 means.
Tested on testing.webots.cloud:
image

Display only my scenes/animations

Following a discussion in #59, we should a way to display only the scenes/animations of the current user.
A "mine" checkbox next to the search box could be a solution.

Trash icon for simulations

When a user is logged it, the trash icon for animation loaded by the user itself is blue and all the others are red.
But for simulations there is not this difference and all the trash are red.

I don't know if there is a reason for this.
But it is very useful to have anything that identifies which are the scenes/animations/simulations loaded by the current users, given that there is not even a user column in the table.

Maybe a future feature could to add a filter to show only the own scenes/animations/simulations/servers.

Main content is not centered

The layout is currently not very nice (tested both on Firefox and Chrome).
For example:

  • I would expect the table to be centered in the page
  • I would expect the "Previous" and "Next" buttons to be aligned with the right border of the table, (similarly as the pages 1, 2, etc. buttons are aligned to the left border)

Screenshot from 2022-09-27 08-33-41

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.