Question: Java Client/Server Robotic Navigation Application In this assignment you are should to develop a Java client/server application that sends and receives data to/from a PC

Java Client/Server Robotic Navigation Application

In this assignment you are should to develop a Java client/server application that sends and receives data to/from a PC and an embedded Linux device such as the BeagleBone Black (BBB) or Raspberry Pi (RPi). Given the shortened academic semester due to COVID19, the assignment can be completed entirely on a single desktop machine and all tasks are simulated.

All tasks are to be performed on a single desktop machine/laptop

Assignment Task: A Client/Server Robot Navigation Management System. In this assignment you should build a client/server application, where multiple client devices (simulated embedded robots) send their location and status to a server where this information is displayed graphically on a server map display.

The Graphical Display Server

In this application the desktop PC is the graphical robot display server. The server should have the following features:

On execution it should open a server socket and wait for connections (e.g., on port 5000) from multiple robot client devices

. The server should have a GUI that is built using AWT. It should display graphical location information on an (x,y) graphical grid, where North is at the top.

The server should be able to accept connections from many robots (limited to a maximum of 5 for the purpose of testing).

The display should show the (x,y) location and orientation of every robot client that is connected to the server. This is the current position.

Each robot has a name, size, status (e.g., active, disconnected) and role. This information needs to be displayed on the GUI when that robot is selected with the mouse. The server should calculate the distance between each robot and evaluate if two robots are in danger of colliding using the current position and the size of the robots in question. For example, this could be performed by asking if the distance between the two robots > sum of the radii + a safety margin?

The GUI should provide a display of the last three positions (e.g., using a different colour)

The collision safety margin should be configurable

. Add two other features of your choice that you deem necessary and/or useful. List them explicitly in your report. Remember that the server can connect to multiple clients at the same time so design your client/server applications appropriately. For example,

Structure your code appropriately to allow the server to hold multiple connections open. The client/server pair should send and receive objects of a class of your own design, which describes the robot movement. It should include the following properties: robot name, current position, velocity, direction, time of update, and any other properties that you deem necessary. The Robot Client Application In this application each robot application should run on the desktop device. The client should have the following features:

You should pass the server address and the robot name (e.g., localhost) to the client as a command line argument when you execute it

. The client application should have a GUI that allows you to push buttons to go forward, backward, rotate left, rotate right, and to choose a speed.

The client should send an update every 30 seconds, regardless of whether the robot is moved or not.

The client should display the current connection status and the last time that a message was successfully sent to the server.

Add a novel feature of your own design. Testing You should demonstrate that your architecture is working correctly by simultaneously connecting at least three robot clients to the server simultaneously. Show screen captures of your system in action under this condition to demonstrate that it is working correctly. Code Provided I have provided you with template code and it MUST BE USED AS THE BASIS OF YOUR SOLUTION. Do *not* use RMI or any other Java Messaging Protocols, only use the template code provided for network communication. This code is in the following files:

ThreadedServe

r ThreadedConnectionHandler

DataTimeServices

Client Marking You should describe how you achieved these points using the section headings: Design, Implementation/Coding and Documentation

: Design - the overall design and features of your system.

Implementation/Coding - is the implementation of your design and the quality of your code for both the interface/client and server. Most of the marks are allocated for this component.

Documentation - refers to the final report and the commented code. The final report should describe your design, features, interesting code segments, your messaging format etc. It should include screen grabs of your client/server in action (use ALT-PrtScr to grab a window view). Submission Instructions Report

Submit an electronic report, as described above, which must be in PDF (.pdf) format. Code and executable

Your code should also be submitted with your assignment and it should be functional (comment out features that are crashing your application). Please provide instructions for the tutors on how to run your assignment. Please include the .java and .class files. The code should be placed in one 7zip or rar format file.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!