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

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

25%

Semester

2

HE Level

5

Lab location

Bld 502 PC room B and C

Work

Individual

Timetabled time

28 hours - including all lab time & lectures

Suggested private study

10 hours – including report-writing

Time spent?

Please record how long it took you athttps://bit.ly/EEECARES

 

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

Sunday 24th  March 2024, 23:59

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.

Marking Criteria


Marking criteria submissions will be marked against, are given below. A gradient from Fail, good, very good and excellent will be applied to each.

Component

Criteria

Pts

 

 

 

 

 

 

Files submitted

Report: Title Page Present?

1

Report: Are figures captioned?

1

Report: Table of Contents Present?

1

Code: CMakeList.txt file submitted and compiles?

2

Code:  Launch File Submitted and runs without

error?

 

2

package.xml file submitted, with description?

 

2

 

 

 

 

 

Report

Background section (Focussing on ROS and

Gazebo etc)

 

5

Screenshots Provided? (Do they show something

useful and are done systematically?)

 

15

Discussion (Show understanding of what the commands are doing, understanding of the

different files, logic the robot follows etc...)

 

20

 

 

 

 

 

Code

Code Commented (More than original comments)

5

Does the Robot Move?

3

Does the Robot Stop when it detects Obstacle?

5

Does the Robot Rotate intelligently after it Stops?

(turning both ways will result in higher pts)

 

30

Does the Robot Navigate for a prolonged time

without crashing?

 

8

 

Penalty Points e.g. going over page count,   amendments had to be made to get code to

compile and run etc.

 

0

Total

100

Aim of this assignment

The aim of this assignment is to give you away into 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. While this can be achieved with a robot that can rotate in one direction, e.g. left only, higher marks will be awarded for submissions that rotate in both directions. The robot in the simulation should be able to move around its environment for a prolonged period (3-5 minutes), without colliding with an object.

Rules and Requirements of your Assignment

Your code must be executable in a Linux environment without any modification. Code submitted which requires modification to run will result in penalty points. For you to work and be able to execute the assignment, make sure you have a ROS2 Distribution (i.e., Foxy) with 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 basic ROS concepts such as compiling and running a node, both from the command line and through launch files. Finally, make sure that the turtlebot_gazebo packages are installed on your machine, these were presented in Week 4 lecture notes.

The Assignment

1.   Pull code from github into your ROS2 workspace /src folder

$ cd src

$ git clone https://github.com/LJDevlin/Assignment3_ELEC230.git

2.  Your task is now to adapt the code supplied to achieve the task. The code 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.

3.  Verify that your implementation works, by running a launch file (one has been supplied to you in the code in canvas) and watching the robot in the simulator to see that it is operating as intended.

4.  Once you are happy with your code, change the packages.xml file to give a brief description of what the package does.

5.  Write a short document which introduces the assignment, what you did, what worked and what didn’t work, as well as the logic your  robot follows as  it navigates the environment. The full requirements for the report are given below.

The Rules

1.   Make sure that your code is tidy and well-commented. Comments should go beyond what has already been supplied.

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 https://docs.ros.org/en/foxy/index.html ,then let us know in a README file.

3.   If you  have  taken  a  VirtualBox  from  a  demonstrator,  then  make  sure  that screenshots  include  a  unique  username.  ELEC230  is  not  a  valid  username. Screenshots should clearly show the time and date.

4.   ROS1 submissions will not be accepted.

5.   Source code must be written in C++.

6.   Page limits must be adhered to, as specified in “What to hand in” below. Penalty points will be applied for going over the limit.

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.

The structure of the code should be the one that exists in your linux environment. Such that the marker will be able to run your code without moving your files around. For

that reason, please compress the files as they exist in your <ROS_WS>/src

You should also include (alongside your compressed file and not inside it):

•    A Word document including:

o    A cover sheet with title, background, and academic integrity declaration.

o   A discussion of: an introduction; procedures followed; what worked and what did not; the testing carried out; and the logic your robot follows.

This should be 4 pages maximum. Penalty points will be applied if it goes beyond this.

o   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 e.g from your /install or /build folders, or any other files that can be regenerated.

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

$ colcon build

Then navigating to your launch file

$ ros2 launch elec230.lauch.py

This is assuming you haven’t changed the name of the launch file we have already supplied to you.

The two things you need to submit are:

1) Your ROS package in a compressed format.

2) A report in the form of a Word document.