college/Spring-2024/CS-1011/Assignment-2/Solution.org

83 lines
4.8 KiB
Org Mode
Raw Normal View History

2024-02-18 22:19:16 -06:00
* Assignment 2
We discussed the idea of hardware components in the “How Computers Work: Hardware” lecture and
discussed the idea of algorithms and libraries in the “How Computers Work: Software” lecture. Let
us assume we wanted to build a real-life robot, where you are able to input instructions to
complete many different tasks such as: moving around a space without running into walls, objects,
or people; picking up and placing objects; identifying everyday objects and their basic uses;
using objects as tools (e.g., using a broom to sweep, using a wrench to tighten/loosen screws,
etc.); basic speech capabilities (i.e., it can both listen to take in certain commands and speak
to notify when tasks are completed or for more clarification on tasks); etc. Please answer the
following questions about such a robot. (Note, when answering these questions, you may simply list
them out using bullet points instead of in paragraphs in order as this will make grading faster
and easier).
1. What major hardware components would be needed to achieve at least some of the listed actions
the robot should be able to perform? Make sure to think about everything needed to complete
each action, e.g. it needs to “see” where its going, it needs to walk, etc. (You do not need
to list low-level components such as motherboards, servos, etc., just the high-level idea of
each major necessary piece). List at least 5 major components:
2. While you are able to give certain instructions/commands and you have the hardware necessary
to perform the tasks, we would need MANY libraries and frameworks on top of the hardware to
actually carry out these tasks. Please list out as many library packages that you can think of
that would be needed to perform the listed tasks. Please give a name or basic description of
general “packages” of libraries, e.g. it will need to be able to walk so it will need libraries
to: calculate distance, move servos and limbs, correct for imbalance (or imperfections in the
floor), etc. List at least 1 library/framework that would be needed for each of the hardware
components you listed above:
** Question One Answer
Bullet points included to ease the grading process:
1. Movement Requirement
- Treads or legs
2. Collision Avoidance
- A sensor like a camera or LIDAR/RADAR
3. Picking Up and Placing Objects
- A claw, like from a claw machine
4. Identification of Everyday Items
- A database, meaning storage — a hard disk for instance — filled with everyday items and their
uses.
5. Using Objects as Tools
- An arm ending in a hand with an opposable thumb — basically a human arm
6. Basic Speech Capabilities
- A microphone to receive commands and a speaker to respond with
** Question Two Answer
- In general, we'll need a library for each hardware element to interface with the hardware
directly. We need to use the correct protocol (or speak the same language) to correctly drive
the hardware.
1. Movement Requirement
- A library to determine power of the movement — how much torque should be applied for
instance.
- A library for balancing the robot if using legs, quite the complex problem.
2. Collision Avoidance
- A library to turn the raw data from either a camera or LIDAR/RADAR into something usable by
our own code — the input data may literally be just pixels and color depth, this has to be
translated.
- A library to determine the 3D location of objects based on the sensor readings.
- A library to determine the robots current position in space, after all how can we avoid
collision if we don't even know where we are.
- A library for path finding — basic collision avoidance based on the previous libraries.
3. Picking Up and Placing Objects
- A library to clench and unclench our grabber of choice, basically open and close it.
- A library to move the grabber into place over an object we want to pick up.
- A library to sync between the sensors and the grabber to correctly align the grabber over an
object to pick up.
4. Identification of Everyday Items
- We need a library to map the sensor data to discrete objects. Basically, determining if
an object picked up by the sensor is a specific item like a pencil, fork, or whatever else
it may be.
5. Using Objects as Tools
- A library to read from our database of how to use items and use that to actually use the
item in question.
- A library to map the database inputs to actual actions on the robot. For instance, taking
the data on how to sweep with a broom and actually sweeping with a broom.
6. Basic Speech Capabilities
- A natural language processing library. This is needed to parse and understand commands.
- A library for then taking those commands and outputting over the speaker responses.