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.
版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。