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

4.8 KiB
Raw Blame History

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.