Implementation

Solution Statment

We envision a solution that meets our clients needs by transitioning the current workflow to a highly interactable graphical user interface (GUI) that lowers the barrier of entry to use ROS. The GUI will remove any need for the students to use the command line and will only allow students to make valid configurations for the RC car. By abstracting away complexities involved in utilizing ROS to make a vehicle run, students will be able to instead focus on ascertaining an effective and enjoyable learning experience. Additionally, we will have a communication toolkit that enables a kill switch mechanism for the car. This will ensure the safety of every student involved and the safety of our client’s very expensive product; the vehicle itself.

Key highlights of our software include:

Implementation Overview

Implementation Overview

This is our implementation of how our system works. The user starts by interacting with the GUI. From there they select configuration options. After the user has the set configuration options they either select start car or start simulation. If they press the start car button a script sends all of the required files to the car. This also starts the car and starts the process of running it. There are two emergency stop mechanisms that we are installing. This is a stop car button on the GUI and a script on the car. This ensures that we are able to stop it if we lost connection.

Architecture Overview

Architecture Overview

In this image we are showing how our architecture is set up. The system is broken into 3 main modules.

  • Options Module:

    This is where the user will select all of the modules in order to run the car or simulation. These options are brought in from the configuration file. In our configuration window there is variable that we save the selected values to. In this module we are also able to save and load a profile into the GUI for you to use again.

  • Logging Module:

    In our logging Module we are able to pull information from all of the main functionalities and put them in our console. This is such an important part of the GUI since we want to make sure the user understand whats going on. This is also a way to make sure that if there are errors we would be able to show them there. This is also more user friendly since they do not have to look at a very confusing log files.

  • Driving Module:

    The driving module conists of four aspects:

    • Start Car:
    • This is where the user is able to select a configuration and then pass the parameters to the car and runs the car.

    • Stop Car
    • This is a button that when the user pushes this button it stops the car.

    • Start Simulator
    • This is so the user is able to see what the car will run like in a simulated version. That way if anything happens nothing is actually going to happen to the car itself.

    • Emergency Stop Script
    • This is a script sitting on the car when it car is running listening to for a lost in connection with the GUI. If there is any lost in connection the car will stop so it doesn't get damaged.

Solution Overview

GUI

This is our solution overview and what the GUI should look like so users can easily work with the system.