Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

MEC3027/8058 Assignment

Introduction

You are to develop a scale model autonomous car to take part in a model car version of the  24 hour Le Mans race. The track consists of barriers at each side of the road with signs positioned at 100m from the next corner (a sign of 1 indicates a gentle bend up to a sign of 3 for a sharp bend). The car should be rear wheel driven (1 motor to drive both rear wheels)  with Ackermann steering (using a servo motor to set steering angle). The car needs to relay all sensor information back to a Labview based interface and this Labview interface will also send signals to the car for steering and speed control. The car should be full autonomous but with the option of manual override in case of any unforeseen problems. You do not need to complete the mechanical design of the car (a basic schematic will suffice) but you will need to develop any electrical circuitry and any program coding to complete the task.

Specifications

Drive

The vehicle is battery powered and has a single sensored dc motor to drive the rear wheels. This motor is to be driven both forward and reverse via a L293D chip. For the main program demonstration, this motor may be driven open loop (see additional requirements below).     The steering is to be accomplished with a servo motor. You should use an edited figure from https://en.wikipedia.org/wiki/Ackermann_steering_geometryto show approximately where you would place these motors. A Labview program will issue values (to a master Arduino) to be used by these motors appropriately.

Sensors

You must include the following sensors on your car:

   an ultrasonic sensor placed at the front of the car (the car should slow down if something

is in front of it) and ultrasonic sensors placed on each side of the car (to maintain position in the centre of the road)

   a bumper (microswitch or similar) to immediately stop the vehicle if a collision is

detected (ideally the Labview interface gives you the option of what to do next following such an event)

   a light sensor to enable automated operation of the headlights (the Arduino should be

programmed to ensure appropriate operation of these headlights)

   a slave Arduino (for example Slave IMU) connected via I2C that transmits magnetometer

readings to the master Arduino use a potentiometer input into this slave Arduino to set car direction

   a slave Arduino (for example Slave CAMERA) connected via I2C that transmits an output

from a neural network to the master Arduino – use 3 digital pins of this slave Arduino to   represent a value of 1, 2 or 3 being output from the neural network (see additional requirements below). Note that you do not need to include any actual camera module on this Arduino.

Labview interface / control

   The interface needs to clearly display all sensor information. The Labview interface

should be able to initially load in sensor calibration data from a file so that values being received from the Arduino can be adjusted/scaled accordingly.

   Fuzzy logic controller should be used to control the speed and direction of the vehicle

when it is automatic mode (using ultrasonic, compass and camera information) . This controller should have the ability to steer the car and drive it at appropriate speeds.

   A manual control mode should be available on the Labview interface to override the

automatic mode if desired.

   Communication between the Arduino and Labview interface should be done by

displaying an appropriate set of characters and then manually entering these into the serial monitor/text input. You should try to include transmission error checking in this process.

Aesthetics

   Your Labview interface needs to clearly display all relevant information and have user

functionality (the user can use the interface to enter data/commands for any manual modes). The interface should be self-explanatory – someone not familiar with your         project should be able understand the interface from the information/instructions given on it.

   The wiring of your Tinkercad circuit needs to be tidy with sensors/motors/etc placed

roughly where they are shown on the schematic.

   You Arduino program needs to be well structured with comments to indicate what

sections of program code is for. Someone not familiar with your program (although they can program themselves) should be able to easily understand your program from the comments given in the code.

Additional

In separate demonstration programs, you should also aim to show:

   how you would accomplish PID closed loop control of the drive motor (forward direction

only), this should be tuned appropriately. Note: do not include this in your main vehicle simulation circuit as it will significantly reduce the speed of your simulation.

   a way to process images from a camera to visually recognise the cornering signs, you

should use Matlab software to demonstrate this part.

Submission details

You are required to prepare a 10 minute video presentation of your work in mp4 format       (anything in the range 8 to 12 minutes will be acceptable) . You should use screen recordings of your work (these can be annotated with additional text) and a verbal description (voice    over) to explain the points you are making. The format of the presentation should be in the  following order (as outlined in W8_Demo_assignment section 5.2):

1) A schematic of your solution to the problem and a bullet list of what the vehicle can achieve (i.e. what you will be demonstrating in this video).

2) Give a view of the overall Tinkercad circuit, Labview program and Labview interface.

3) Demonstrate each bullet point listed in step 1. You will need to show the code, the circuit and a demonstration of it working to the specification you have claimed.

4) Finish your presentation by slowly scrolling through all your program code whilst giving a verbal summary of the complete project (a recap on what you have achieved).

Additional points:

   It is very important to demonstrate that your code and circuit function (i.e. actually

work). Also demonstrate any solutions you have when things do not work as expected (for example what does your program do if it thinks it has an incorrect sensor reading).

   Even if some part of your solution is not working, you should try and demonstrate how

far you got with this aspect. We will be marking on the principle of ‘start at 0 and get points for each relevant piece of project development’ rather than losing marks for parts not working. We want to see how much work you have done and give you credit for it.

   Make sure your video is sharp (we will need to be able to read any text on the screen) and voice over is clear. Your video ideally needs to be less than 100 MB in size.

Dates for submission:

You should aim to submit your work to Canvas by 5pm on Friday 16th  December. Note that  there can be delays in this process (Tinkercad software not working for 24 hours, slow upload time during submission). You need to account for this in your planning and work around any technical difficulties, submit what you have done by the deadline. Start the         assignment early and give yourself plenty of time to mitigate against any unforeseen delays. Of course, you can submit your work prior to this date if you wish.

The maximum file size you can upload is around 100 MB and therefore you should try to   keep your submission to within this limit. If all else fails you will need to upload your video to YouTube and for your submission, submit a text file with the URL of the YouTube link.

Marking Criteria

It is important to use your presentation time allowance to efficiently demonstrate all the goals you have achieved for this project. We will stop watching after 12 minutes so be sure   to keep within time (anything after that time will not be watched/marked and therefore you will not get credit for it). Remember that each examiner will be marking around 10 hours of presentation video so it is important that you present clear explanations on what you are demonstrating.

Marking is based on how well it appears that you have achieved each of the required project objectives (therefore be very clear in your presentation on each point you have achieved and show that it works). Your overall mark for this assignment is based on the following criteria:

0 – 40: Little evidence of work done, basic requirements of functional Arduino and Labview not met.

40 – 50: Car and Labview functions but to a very basic level.

50 – 60: Good effort, you have demonstrated you have understood the material to a reasonable level and your car and Labview interface are suitably designed and meet all the essential specifications although design could be more robust (important detail is missing).

60 – 70: Excellent effort, very good understanding of the material with either essentials   done to a robust standard (everything needed has been done) or essential and additional specifications have been done to a reasonable standard.

70 – 100: Exceptional work, you have completed everything required to a very high standard and you have produced a robust solution to the problem in which every scenario during the  car’s race has been accounted for. This may include relevant additional developments beyond what was given in the tutorials.

Final points

Your submission must be your own unique solution. You can ask your colleagues for advice but what you submit must be your own work. Evidence of plagiarism will be penalised.

You will not be able to ask academic staff any technical questions about the assignment, i.e. how to do something. However you may post any non-technical questions on the discussion board if there is something that is not clear about the assignment (note that unless this is a  personal issue, this must be posted on the discussion board rather than email so that everyone can see the answer). If in doubt you can always post the question and I can reply   with either an answer or (if the question is not suitable) with ‘You will need to work that out for yourself’ . In the latter case, the answer is probably somewhere in your tutorial notes.