Csse3010 Project
Csse3010 Project
CSSE3010 Project
Autonomous Remote Control of a Sorting Machine
(30% – 60 Marks)
Git and BlackBoard: Monday, 4pm in week 13, 2023
Final Demo: Your session in week 13, 2023
Last Updated: April 26, 2023
ECP Hurdle: Not required to be submitted.
(Closed Shoes MUST BE Worn in the labs)
1 Learning Aims
• Apply your knowledge and skills developed in Stages 1–4 into a new combined design.
2 Resources
• Nucleo-F429ZI platform
• Keypad
3 Academic Integrity
All assessment is individual. You should feel free to discuss aspects of C programming and
assessment specifications with fellow students, and discuss the related APIs in general terms.
You should not actively help (or seek help from) other students with the actual coding of your
assessment. It is cheating to look at another student’s code and it is cheating to allow your
code to be seen or shared in printed or electronic form. You should note that all submitted
code will be subject to automated checks for plagiarism and collusion. If we detect plagiarism.
or collusion (outside of the base code given to everyone), formal misconduct proceedings will
be initiated against you. If you’re having trouble, seek help from a member of the teaching
staff. Don’t be tempted to copy another student’s code. You should read and understand the
statements on student misconduct in the course profile and on the school web-site: https:
//www.itee.uq.edu.au/itee-student-misconduct-including-plagiarism
Page 1 of 9
CSSE3010 2023 Project
Contents
1 Learning Aims 1
2 Resources 1
3 Academic Integrity 1
4 Introduction 3
5 Project Overview 3
Page 2 of 9
CSSE3010 2023 Project
4 Introduction
This project will build on your knowledge from stages 1-4. You will be working individually
for all core tasks. The project is designed to have you demonstrate your knowledge of practical
content and ability to integrate new functionality into your program for the Autonomous Sorting
Controller (ASC). The sorter is used to select and move different objects (differentiated by
colour). The sorter is a computer numerical controller machine that can move in 3 dimensions.
The sorter has a suction head that can be used to hold an object. The sorter’s suction head
can also rotate and change the orientation of the object.
5 Project Overview
The Autonomous Sorting Controller (ASC) consists of the following sections:
• ASC System: Control the Sorter with the keypad and radio transmitter.
• ASC Radio Transmitter: Control the Sorter using the radio control link.
• ASC Extended System Control: Add extra task control of the ASC system
Page 3 of 9
CSSE3010 2023 Project
Mylib
The ASC system Mylib Task and register files (sxxxxxx ascsys.c, sxxxxxx ascsys.h) must
be placed in the mylib folder.
Mylib
The radio transmitter Mylib Task and register files (sxxxxxx txradio.c, sxxxxxx txradio.h,
myconfig.h) must be placed in the mylib folder. The radio task and register Mylib files must
only control the radio and not do any Sorter operations. There should be a radio TX queue to
transmit packets via the radio interface.
Page 4 of 9
CSSE3010 2023 Project
Note all X,Y and Z coordinates are absolute. The rotational angle is also absolute.
An example XYZ packet payload: XYZ10011050
This will move the Sorter head to the following coordinates: X=100mm, Y=110mm and
Z=50mm. (Assume origin is bottom left corner).
Page 5 of 9
CSSE3010 2023 Project
Protocol Operation
The JOIN packet must be sent before the XYZ packet can be sent. The JOIN packet allows
the sender to use the Sorter. If the JOIN packet is not sent first, then the Sorter will reject
all XYZ packets from the sender. The JOIN packet ensures that only one user can exclusively
use the Sorter, at one time. If another user sends a JOIN packet, then control of the Sorter is
passed to that user.
The Z position of the Sorter’s head should be displayed as a number (in mm) on the top right
side of the OLED. The current rotation angle of the Sorter’s head should be displayed as a
number (in degrees) in the bottom right side of the OLED screen.
6.5 MyLib
All OLED Mylib task and register files must be placed in the mylib folder.
MyLib
You must extend your Mylib register driver for the keypad (from previous stages) and add
ttask functionality. Keypad related mylib files must be located in the mylib folder. Each key
should be mapped to an Event Group Bit. When any key is pressed, the onboard red
LED must be toggle.You must use a task to control the keypad. Use elements (e.g. event
bits, queues, semaphores, etc). Note; the keypad mylib must control/interact with the Sorter’s
mylib driver and not directly control the Sorter by transmitting radio packets.
Page 6 of 9
CSSE3010 2023 Project
Table 5: Key Assignment: Points - [X, Y ]. For the new, del and sys keys, see Section 6.7.
1 2 3 A
Point [0,0] Point [75,0] Point [150,0] Lower Z by
10mm
4 5 6 B
Point [0,75] Point [75,75] Point [150,75] Raise Z by
10mm
7 8 9 C
Point [0,150] Point [75,150] Point Rotate +10◦
[150,150]
0 F E D
Toggle Vac- new del sys
uum on/off
Note the following pins must be used for the keypad (Row 2 is different to previous stages)
Mylib
The ASC extended system control Mylib Task files (sxxxxxx ascext.c, sxxxxxx ascext.h)
must be placed in the mylib folder. A controlling task and Event bits should be used.
Page 7 of 9
CSSE3010 2023 Project
You are required to reuse and expand upon your mylib library in this project. You should
include additional files to your library. You must follow the mylib task, cli and register guide-
lines. Peripherals used should have corresponding task and register files. Register files are to
be used by the task files.
If you do not use your mylib library in this project, you may be penalised across various project
criteria resulting in a substantial loss of marks.
main.c Functions
Functions that do not relate to the initialisation e.g. moving functions, must not be included
in main.c. Functions called in main.c must only be used to initialise the system, not to control
the system. Design task implementations should be done with tasks, using task mylib files.
FreeRTOS
You must demonstrate in your code, that you have used the features provided by FreeRTOS.
Tasks MUST be used to implement various features of the system.
Page 8 of 9
CSSE3010 2023 Project
NOTE: Version Control – You MUST use version control as part of your develop-
ment process. This means that because the project is a bigger task than the stages,
you should have a NUMBER of commits including the FINAL version which is the
one being assessed. If that is not the case, you will not be assessed.
You must show that you have git commits in weeks 11 and 12, or you will not be
assessed. You must be marked off for git commits in week 12, in your lab session.
Each task is allocated a number of marks. Full marks will be awarded to seamless, well inte-
grated tasks with no errors. Part marks may be awarded for partially working solutions. You
must be able to demonstrate functionality to achieve marks.
8.1 Deductions
There are a set of basic expectations for your demonstration. Where demonstrations are par-
ticularly poor and do not meet these expectations, marks will be deducted. This is to ensure
students who have made the effort to meet the expectations are rewarded, and prevent cumber-
some marking demonstrations. Prepare to have your work demonstrated, as might be done in a
performance review or client demonstration. A course staff member will lead the demonstration
and direct you as needed. They will be marking you during and after the demonstration, so it
is wise to ensure that your work is clearly evident to them.
The following situations will result in the allocated deduction. Deductions can only be deducted
a single time. If you have questions, talk to course staff.
Deduction Reason
8 Not building on the work done in stages e.g. not using mylib structure specified
in stages.
4 Excessively unreadable code (no conformity to mylib or general style guide)
4 Significant disregard or no conformity to the mylib or general style guide)
4 Reprogramming the Nucleo at any point throughout the demo
4 Interrupt handling function is long-running.
4 Not being ready to demo when asked, or taking a long time to demo function-
ality when asked.
2 Excessive switching of modes, poor usability, disjoint demonstration
2 Excessive resetting of the Nucleo
2 Commented out code
Page 9 of 9