Online robotics simulation application
A manufacturer of educational robotics kits for children.
The client had a task to develop a system for teaching robotics.
- At the beginning of the project, the team needed to evaluate which technologies suit best for the task.
- The system should allow simulating the process of building a robot, connecting electronic components, programming (using the client's own development environment) and virtual testing of the assembled robot.
- The system should be a browser app and run under Linux systems, as well as integrate into the client's existing infrastructure.
To determine the technology stack, our development team measured performance of the available 3D engines and assessed features and difficulties in the implementation of the solution using each engine. Based on the results of the study, it was decided to use Unity; in particular, its ability to build applications on WebGL platform, which allows the application to run in the browser.
Angular was chosen as the framework for developing the client part of the application, as it allows embedding the solution into client’s existing infrastructure and adopt styles and components.
Next, we developed an application for creating a robot, which consists of four parts / steps.
1. The builder scene
The scene presents a set of parts available to create a single structure. The system allows inspecting the assembly from different angles and exploring design features of each part: not all parts can be connected to each other; some parts can move along other parts.
Most of the interface of this scene is written on Angular; an additional module was developed for communication with Unity—transferring and receiving information from the scene.
Connecting electronic parts
In this scene, the user connects robot’s electric components to the controllers. This step is very important: incorrect connecting can result in unpredictable behaviour of the program. On this stage, only Angular components are used, Unity is not involved.
The robot is programmed in a Scratch-like programming environment. This part had been developed by the client; our task was to integrate the programming module into the new system.
When the robot is assembled and programmed, the user can test it on a 3D test site. Based on the data from the previous three steps, the system creates a realistic simulation of various scenarios of the robot behaviour. The success of the test depends on correctness of electronic parts connection and programming accuracy.
To implement this step, the development team created a system that simulates physical processes of the robot’s operation:
- the real weight of the parts and the features of their physical interaction with electronic components are taken into account;
- the axles, when voltage is applied to the motors, rotate and rotate the parts attached to them;
- the motors’ torque is identical to the real;
- parts with rigid connection move as a whole;
- the sensors process the information according to the client's specification.
The simulation is performed step by step: at each step, the developed interpreter processes the corresponding program commands and transmits the data to the simulation of physical processes, where the movement of parts is calculated.
Outsourcing software development tasks allowed the client to create the product quickly and efficiently due to the involvement of experienced specialists and effective organization of the development process. The client is satisfied with the result.
The new system allows organizing robotics training completely online, without the need to purchase a real set of robotic builder kits, which is especially important for remote regions and thus allows attracting more students.
Related CasesRead all
Implementing LTI 1.3 for LMS
Implementation of the latest version of the standard, LTI 1.3 and in particular LTI Advantage.
OneRoster 1.2 Integration for LMS
A solution for passing grade information from the LMS to a student information system (SIS)
Multitask Machine Learning
A solution maintaining multi-task learning, i.e. ability of the AI to solve several learning tasks at the same time.