Skip to content

Communicating with the emulator

nikalc edited this page May 26, 2021 · 11 revisions

Summary

Enabling communication between the SmartRover and the user was a core functionality. Not only would it provide the user with data and information upon activation but also enable remote control for a closer to real life experience. In addition to that we wanted to grant users with full control. Enabling them to make decisions, set mission tasks and make information surrounding the vehicle from its speed to its whereabouts accessible at their fingertips!

Highlights

  • MQTT communication gateway for remote sensing and control. Also reducing update rates whilst maximising bandwidth.
  • MQTT communication gateway for sending and receiving data. Enabling communication remotely.
  • Fast, efficient and highly reliable and safe communication to elevate the user experience. All via the MQTT messaging protocol.
  • Integrated camera for livestreams, snapshots and visual picture of the martian environment from the SmartRovers perspective.
  • Real time data displayed of the SmartRovers every movement.

Description

Milestone 2 was were our efforts were designated to creating and establishing a communication gateway via MQTT by keeping bandwidth requirements to a minimum, reducing update rates to mere seconds, maximising bandwidth along with establishing remote sensing and control. Perfectly suitable for our project both in terms of technicality and with resembling a close to real life experience which is something that runs through our entire work.

The gateway for sending data and commands between the SmartRover and the frontend website is something which uniquely identifies our project. The design model of client/server which MQTT is based upon is well beyond suitable for our application where it allows us to utilise all of its benefits to maximise the user experience. Making our application fast, efficient and highly reliable and safe. Thus centralising all the decision making to the user.

Screenshot 2021-05-21 at 20 23 30

The true beauty of the frontend application is that all and i mean all the relevant and necessary data is accessible to the user through the frontend application under Manual Control. Do you wonder about the SmartRovers telemetry? Its there! Do you want a livestream of the excursion and maybe take snapshots of the martian environment? It's there! Do you want real time data of the SmartRovers every movement? No worries, we have a Serial Feed that displays all the relevant information in real time and in time order so that you can efficiently trace back any activity that the SmartRover performs. Im not finished yet, do you want to give commands to steer the SmartRover remotely through commands? Well, that is also possible through the terminal. It is therefor safe to say that MQTT underpins all the listed functionalities because of the unique gateway it creates. It serves as a backbone because without it none of the above would be able to become realised. So we have a lot to thank MQTT for!

Functional Requirements:

  • The system shall be able to send commands from the front end website to the emulator
  • The system shall allow for the User to control the SmartRover manually
  • The system shall allow for the User to set the SmartRover to drive autonomously
  • The system shall allow for control with buttons
  • The system shall allow for control with text commands
  • The system shall allow for the user to control the speed of the SmartRover
  • The system shall allow for the user to control the direction of the SmartRover

Non-functional requirements:

  • The system shall have a safe connection to the MQTT server where a backup server is set in place in case of breakdown
  • The system shall transmit data from the emulator to the MQTT server autonomously while activated by the user
  • The system shall transmit data from the emulator to the MQTT server within 1 second after pressing the button
  • The buttons shall be easily identified by the User
  • The different functions for the buttons shall be easily understood by the User
  • The text commands shall be easy to understand for the User
  • The system shall allow for the User to easily connect to the MQTT server