CS计算机代考程序代写 c++ Excel algorithm Department of Electrical Engineering and Electronics

Department of Electrical Engineering and Electronics

ELEC230

Robotic Systems – Assignment 3

Roomba Vacuum Cleaner Gazebo Simulation in C++
Module ELEC230

Coursework name Assignment 3

Component weight 30%

Semester 2

HE Level 5

Lab location

• Coding and simulation off-campus within a suitable IDE and

using ROS installed on Ubuntu, usually operating on a virtual

machine (e.g. in VirtualBox) using your own PC/laptop.

• If there are significant difficulties with this, Remote Teaching

Centre Service (RTCS) machines are available with VirtualBox

installed (https://www.liverpool.ac.uk/csd/pc-centres/remote/ ). If

you would like to take advantage of this, contact the lecturers for

information on how to go about using this service for

assignment work.

• Appropriate lecturer or demonstrator support is available during

timetabled ELEC230 virtual labs (see below)

• Additionally, if the EEE Building opens for general

access, relevant PC labs may be possible to use as

timetabled, or at other allowable times for private study.

Work Individual

Timetabled time

7.5 hours (1.5 hours available in the Week 5 lab, plus 3 hours each in

Week 6 and Week 7 labs, as described above). Virtual labs are

timetabled as Wednesdays 10am – 1pm on MS Teams, unless the lab

format changes in this period.

Note: lab time is not exclusively devoted to the Assignment, but also

to practical work relevant to the current stage of the course. The

Assignment builds on ~40 prior hours of synchronous online C++,

Linux and ROS tutorials and 15+ hours of lecture material available on

CANVAS as videos, pdfs and written notes.

Suggested private

study
8 hours including report-writing

Assessment method
Individual, formal, word-processed reports in the format instructed in

the Marking Criteria, along with other files listed in “What to hand in”.

Submission format Online via CANVAS.

Plagiarism / collusion
Standard University penalties and procedures apply for plagiarism and

collusion.

Submission deadline Wednesday 14th April 2021, 23:59

https://www.liverpool.ac.uk/csd/pc-centres/remote/

Late submission Standard University penalties apply

Resit opportunity August resit period (if total module failed)

Marking policy Marked and moderated independently

Anonymous marking Yes

Feedback Via comments on your CANVAS submission, online

Learning outcomes

▪ (BH1) Understanding Linux and the mechanisms provided for

multi-tasking

▪ (BH2) Understanding the features of an Object Orientated

Programming language and the ability to code in C++

▪ (BH4) Understanding the ROS system

▪ More specifically: understanding the package management

system in ROS; understanding and implementing robot

simulation using ROS, Turtlesim, Gazebo

Continues on next page

Marking Criteria

Section Marks
Indicative characteristics

Adequate / pass (40%) Very good / Excellent

P
re

s
e
n

ta
ti

o
n

,
a
n

d
s

tr
u

c
tu

re

10%

▪ Contains document with

cover page (title,

background, academic

integrity declaration), a

discussion page, and

screenshots (see below)

▪ Contains original source

code, manifest file,

CMakeLists.txt, launch files

▪ Comprehensible language;

punctuation, grammar and

spelling accurate

▪ Equations legible, numbered

and presented correctly

▪ Appropriate use of technical,

mathematic and academic

terminology and conventions if

relevant

▪ Word processed with consistent

formatting

▪ Pages are numbered; figures and

tables are captioned

▪ All sections are clearly

signposted

▪ Correct cross-referencing (of

figures, tables, equations) and

citations where relevant

In
tr

o
d

u
c
ti

o
n

,

M
e
th

o
d

,
D

e
s
ig

n

50%

▪ Problem background is

introduced clearly

▪ Clear, original code and

comments

▪ Code is clearly laid out and

appropriately commented

▪ Design of each code

segment follows a logical

sequence

▪ Code is tidy, efficient and

easy to follow / understand

▪ Some discussion of the

procedures undertaken

▪ Excellent understanding of the

problem background is

displayed

▪ Comments show excellent

understanding of syntax and

semantics

▪ Coding is elegant and, where

relevant, sophisticated for each

task, while remaining easy to

follow

▪ Principle of “DRY1” is followed

▪ Discussion of what worked and

what did not

▪ Discussion of all the testing

carried out

R
e
s
u

lt
s

40%

▪ Screenshots of program

output are presented for

each task, including the full

desktop with relevant

windows and the taskbar

with date and time, as

evidence of original work

▪ Screenshots and code

demonstrate at least partially

correct operation

▪ Screenshots and code

demonstrate successful, correct

output for every task

1 Don’t Repeat Yourself

ELEC 230 C++ Assignment 3 (2020-2021) – 30% weighting

Aim of this assignment

The aim of this assignment is to give you a way in to writing software for controlling a

(simulated) robot using the Robot Operating System (ROS).

In this assignment you will create a ROS node to drive the robot around with a simple

wanderer algorithm, very like a ‘Roomba’ robot vacuum cleaner. The robot should

move forward until it reaches an obstacle, then rotate in the same position until the

way ahead is clear, then move forward again and repeat.

Continues on next page

Rules and Requirements of your Assignment

You code must be executable in a Linux environment without any modification. For

you to work and be able to execute the assignment, make sure you have a ROS

Distribution (i.e., noetic) wit Gazebo installed. For more information please have a

look at the lecture notes and lab sessions in CANVAS.

Before you start this assignment, you should make sure that you understand the

concepts in ROS tutorials 1-6, 8, 11 or 12, and 13 (These were covered in lab sheets

1-4). In addition, go over all the code samples from class and make sure you

understand them thoroughly. Finally, make sure that the turtlebot_gazebo packages

are installed on your machine.

The Assignment

1. First make a new ROS package called wander_bot, with the appropriate

dependencies. If you need a refresher, please consult either the lecture material

or ROS.org tutorials.

2. Create a launch File. This launch file needs to run the Gazebo simulator and the

wander_bot node that you are going to write without the user needing to invoke

them separately.

3. Your task is now to write the wander_bot node. The node should implement a

simple algorithm:

• If the robot is moving sufficiently close to an obstacle in front of it, then

rotate it in the direction that is freer from obstacles (i.e., if there is an

obstacle on the robot’s right, it should turn left) until the way ahead is

clear;

• If there is no obstacle blocking its path, move forward as a default.

• You can use the Stopper node we used in Week 4 as a template

for this assignment.

4. Verify that the wander_bot node works, by running it and watching the robot in

the simulator.

Continues on next page

https://wiki.ros.org/ROS/Tutorials

The Rules

1. Make sure that your code is tidy and well-commented. (You can make your code

tidier in terms of indentations by using the Reformat code option inside the

Clion IDE).

2. This goes without saying: you should do this lab work on your own. All the work

you turn in should be yours, and not done in collaboration with anyone else. If

you use any external sources of inspiration, other than ros.org, then let us know

in a README file.

What to Hand In

You should hand in everything that someone else needs to run your code.

For this assignment, that means:

• Your source code. This should be adequately commented, so that each distinct

part of the code is clearly explained.

• manifest file,

• CMakeLists.txt,

• launch files.

You should also include:

• A Word document including a 1-page cover sheet with title, background and

academic integrity declaration, followed by no more than 1 page of discussion

of: procedures followed; what worked and what did not; the testing carried out.

The rest of your Word document should include screenshots as described in the

Marking Criteria. These should be presented as numbered figures, referred to

(where relevant) in your discussion.

You should not hand in executable files, or any other files that can be regenerated.

Your code should be able to run after writing these two commands in a terminal:

catkin-make –pkg wander_bot

roslaunch wander_bot wander_bot.launch

Continues on next page

http://ros.org/

Helpful Resources

If you have any questions, where a requirement is unclear, or there are some concepts

where you need additional information, you must use the CANVAS “Assignment 3”

discussion board (DB) to ask questions.

▪ You are encouraged to answer each other’s questions in the CANVAS DB.

▪ You are, however, not to share code of any kind, documents, or links to

websites, other than CANVAS links to lecture notes.

▪ Any e-mails and/or MS Teams chats regarding the assignments will be not taken

into consideration, and will be duly ignored.

▪ The only exception is emails about extenuating circumstances.

Helpful insights into how ROS works and details of the Gazebo simulation software

can be found at ROS.org.