diff --git a/Spring-2023/CS-1011/Assignment-2/Assignment-2.pdf b/Spring-2023/CS-1011/Assignment-2/Assignment-2.pdf new file mode 100644 index 0000000..6f3cdfc Binary files /dev/null and b/Spring-2023/CS-1011/Assignment-2/Assignment-2.pdf differ diff --git a/Spring-2023/CS-1011/Assignment-2/Solution.org b/Spring-2023/CS-1011/Assignment-2/Solution.org new file mode 100644 index 0000000..eadfc59 --- /dev/null +++ b/Spring-2023/CS-1011/Assignment-2/Solution.org @@ -0,0 +1,82 @@ +* 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. diff --git a/Spring-2023/CS-1011/TODO.org b/Spring-2023/CS-1011/TODO.org index 8809852..4512734 100644 --- a/Spring-2023/CS-1011/TODO.org +++ b/Spring-2023/CS-1011/TODO.org @@ -6,7 +6,7 @@ SCHEDULED: <2024-01-28 Sun> DEADLINE: <2024-02-04 Sun> - Sign up for a Group under the =People= tab in Canvas - Due in 2 weeks from today -* TODO Assignment 2 +* DONE Assignment 2 DEADLINE: <2024-02-18 Sun> SCHEDULED: <2024-02-17 Sat> We discussed the idea of hardware components in the “How Computers Work: Hardware” lecture and