83 lines
4.8 KiB
Org Mode
83 lines
4.8 KiB
Org Mode
* 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 it’s 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.
|