[SOLVED] CS7638-Project Gem Finder

60.00 $

Category:

Description

5/5 - (1 vote)

The goal of this project is to give you practice implementing a SLAM module and a robot control
system that uses it to navigate through a world.
Part A  asks you to build a SLAM system that can keep track of where your robot is
located after a series of movements (using measurements to landmarks). Complete the SLAM
class in the gem_finder.py file. The movements and measurements will have noise.
Your robot will be dropped into an unknown territory by a team seeking to extract special gems
in the area. The robot has special sensors that are able to detect the gems in the region. The
measurements from these sensors can be used to help the robot navigate. The sensors will
provide the bearing and distance to the gem (relative to the location on the map). Both of
these measurements contain noise. The amount of noise will be proportional to the distance
away from the robot. For example a close gem will have a small amount of noise, while a far
away gem will have a larger amount of noise. Since this noise value is not provided, you will
need to come up with a way to estimate the noise, while maintaining this proportional
constraint.
Your robot should make a map of the environment, using it’s starting location as the origin (0,0)
by taking advantage of the measurements to the gems to maintain a good estimate of its own
position relative to the initial (0,0) drop-off location.
In part A, your robot will receive a set of measurements as it follows a pre-scripted set of
movements, and your SLAM module will need to calculate and report your robot’s position after
each measurement and movement (relative to the arbitrary (0,0) staring point). [You do not
guide the robot in part A and do not extract any gems, this part is only to test your SLAM
module.]
Part B  asks you to navigate your robot around the environment to extract gems
provided to you in a list. Complete the GemExtractorPlanner class in the gem_finder.py file.
Your commander will provide you with a list of needed gems. You will need to collect one of
each kind of gem in the list. You can collect them in any order, you don’t have to follow the
order provided in the list. You do not need to extract all gems in the environment, only the ones
in the provided list.
There is a time penalty for extracting dirt (failing to extract a gem). This case happens when
you attempt to extract in a location that does not contain a gem of the type you specified
(within a minimum extraction distance). Your robot must be within this pre-defined distance
(0.15) of the gem in order to extract it successfully. As soon as the extraction is successful, the
gem will be removed from the environment. When a gem is extracted from the terrain, it no
longer exists in the terrain, and thus won’t return a measurement. You must specify the type of
gem you are intending to extract when you attempt to extract. Only this kind of gem will be
extracted if it is within the defined radius, if not there will be a time penalty.
Your robot has a maximum turning angle [pi/2] and distance [passed using a parameter] that it
can move each turn. Movement commands that exceed these values will be ignored and cause
the robot to not move.
Note that your robot will never have access to the map of where the randomly scattered gems
are located, only a list of the gems needed.