Shortcut to today's assignment
Shortcut to today's lecture
Course number: IM-UH 2117
Credit Hours: 4
Prerequisites: None
Session: Fall 2024
Course website: https://github.com/michaelshiloh/PerformingRobots
Instructor: Michael Shiloh [email protected]
Support staff: Stefania Avramidi [email protected]
Office hours: Schedule an appointment here
Meeting times:
- 2:10-3:25 Tuesday
- 2:10-4:50 Thursday
Class location: C3-029 (IM Lab)
This is subject to change
Email Assignment:
- Join Discord.
- Create a repository called "performingrobots" in your Github account.
- Email Stefania ([email protected]) the link to your github repository and your screen name on Discord
Reading Assignment:
- Read, review, or skim as necessary the Arduino refresher that
Stefania sent earlier this evening, or use other resources.
I want you to know the following:
- How to use
setup()
andloop()
- How to use the
digitalWrite()
,digitalRead()
,analogWrite()
, andanalogRead()
functions - How to wire up a switch and an LED on a solderless breadboard
- How to use the
if ... else
construct
- How to use
- Read the Fall 2024 Performing Robots Performance Ideas shared Google document which has the ideas we came up with in class for our performance
- Everyone must add at least one more idea. Put your name in parenthesis so we can see that you did it. You are free to add as many as you wish.
- In your Github repository create a folder called "performanceIdeas" and in that folder create a file called "firstDraft03Sept2024"
- Choose one of the ideas (either yours or someone else's) and write a short outline of a play based on this idea. Describe very briefly 7 characters that will perform in this play. Put all this in the file "firstDraft03Sept2024"
Later in the semester each one of you will give two presentation. I want you to do some preliminary research and think about your topics:
-
An artist, art collective that is using robots in a performative way, or a specific robot that is being used in a performative way
-
An academic or otherwise substantial book, research paper, lecture, etc. that explores the way robots are being used in performative ways
-
A researcher or writer or group or book (non-fiction) discussing robot ethics. Fiction or movies might also be options but you have to make a strong case for the serious discussion taking place
Your presentations must be at least 12 minutes long up to a maximum of 20 minutes. Your presentation must show evidence of serious research, and not just a summary of a website or wikipedia entry. If in doubt, ask me.
Your choice of topic will be due on September 10, and presentations will start on September 17. Topics are to be delivered by email to [email protected]. I will evaluate your topic and in some cases may send it back to you for further development. If two people choose the same topic, the first email timestamp will get the topic and the second must make an alternate choice.
If you wish, you may send me your topic earlier.
You might be inspired by topics chosen by students in previous sessions, as well as ideas from this list
Using scrap circuit boards and scrap wire from the blue bins on top of the soldering area, practice soldering.
- Practice until you can solder wires on adjacent holes without making a short circuit
- Practice with header pins (or sockets) from the consumables area
- Use lengths of about 5 pins
- Make sure the header pins are straight and sitting flush on the board
Bring examples of your best work to class so that we can learn from each other
Thank you all for your great work today! You made great progress. Here is what I want you to finish for next week:
- If you have not done so, finish getting the Music Maker Shield to play your sound file. As we have discovered we had a bad Arduino, two bad speakers, and a bad microSD card. If you can't get yours to work reach out on the class Discord channel and describe your problem, and either I or someone else will help.
- Get your NeoPixel strip working
- Very carefully solder stranded wires to the
DIN
,5V
, andGND
pins. You only need a wire on one of the5V
andGND
pins. - At the end of the stranded wire, solder on a short piece of solid core wire so that you can poke the wire into your Arduino sockets
- Cover the exposed junction of the stranded wire and the solid core wire with heat shrink tubing.
- Open your Arduino IDE and Install the
Adafruit_NeoPixel
library - Test your NeoPixel by using the simple built-in example:
File->Examples->Adafruit NeoPixel->Simple
- Upload to Discord a video of your NeoPixel blinking!
- Problems? Discord! Class channel!
- Very carefully solder stranded wires to the
There are two assignments for Thursday: the one I assigned on Saturday, and the new one from class on Tuesday. Both are due on Thursday:
Read the play outlines that each of your classmates wrote. You can find links to all the repositories here
Vote for your top 3 using this form
Starting on September 17, each one of you will give two presentation. You may choose two of the following three topics:
- An artist or art collective that is using robots in a performative way, or a specific robot that is being used in a performative way.
- An academic or otherwise substantial book, research paper, lecture, etc. that explores the way robots are being used in performative ways.
- A researcher or writer or group or book (non-fiction) discussing robot ethics. Fiction or movies might also be options but you have to make a strong case for the serious discussion taking place, and you have to scholarly material to support your claims.
Your presentations must be at least 12 minutes long up to a maximum of 20 minutes. Your presentation must show evidence of serious research, and not just a summary of a website or wikipedia entry. If in doubt, ask me.
Topics are to be delivered by email to [email protected]. I will evaluate your topic and in some cases may send it back to you for further development. If two people choose the same topic, the first email timestamp will get the topic and the second must make an alternate choice.
You might be inspired by topics chosen by students in previous sessions, as well as ideas from this list.
Presentations will start on September 17. You may schedule your presentations on this spreadsheet.
There are three assignments due:
(I) Play Outline
- Collaborate with entire class (use whatever communication method you wish) to create a rough outline for the play collaboratively. Pay particular attention to the character that you have chosen to make sure you are happy with your character's role. Add as much detail as you can. The shared document is here.
- Choose a partner and a character that you and your partner would like to work on
- Start thinking about how your robot will express the personality of your character.
(II) Journal
- Each of you will keep a journal of your progress. Each entry in the journal will be dated.
- In your Github repository create a file called "journal.md".
- Start designing your robot. What special features does it need? How will you construct it? Make a quick sketch and include it in your journal, along with a description.
- Each entry in the journal must be preceded by the date
like this:
### 17 September 2024
. The hash marks will create a heading link. For an example, look in this file at the heading#### todays-assignment
. - Use proper markdown to format your journal properly.
- Since you are working in teams, only one of you needs to create a given journal entry, but you both need to have a journal, and when the entry is in your partner's journal, you need to create a link in yours. For an example, see the top two lines of this file, where I have created links to the next homework assignment and today's lecture.
(III) Presentations
- Presentations start on Tuesday September 17 according to the schedule
- As mentioned above, presentations must be at least 12 minutes long up to a maximum of 20 minutes. Your presentation must show evidence of serious research, and not just a summary of a website or wikipedia entry. If in doubt, ask me. I encourage you to use the library and the librarians for help in research. Following your presentation you must initiate a discussion by providing at least three thought-provoking questions.
(1) Add details to the outline of the play in this shared document. Map out each scene, identify which characters are involved, and describe the conversations. We don't need the full script at this point, but the entire story should be mapped out.
I suggest that for now you do not allow audience input and alternative plots. You can add that later if you have time.
A good way to start might be with your own character and whatever other characters you want to interact with. As each of you do this, the entire play will slowly start to take shape.
Everyone should participate, and you should work on this collaboratively. Each of you should respect what others have already written, but I encourage you to suggest changes that you feel will make the play better.
(2) In your journal, describe what you did in class on Thursday, and add a few pictures of your process
I'm pleased to see that the play outline is taking shape. For Thursday, I'd like you to add the 2-3 scenes where the characters split up and look for clues.
- Since there are 7 characters in the play (including detective and butler), you can break up into groups of 2, 2, and 3 characters.
- Decide which other character(s) you would like to work with for this scene. For example, Dr. Orchid might be with Wadsworth. Don't take too long thinking about this, just reach out and start working out what you'll do in this scene
- With the other team(s), outline what you will do in this scene. This might be an opportunity to ask each other questions, revealing your prior relationship with Mr. Boddy and hints as to what your motives may have been. You might decide you like the other character, or you may start arguing with each other. You can start adding some dialogue to give us an idea of how this will go.
- Add your scene, outline, and dialogue to the collaborative outline
(1)
The play seems to be coming along well but we need a lot more detailed dialogue. Some of you have not contributed your small group interaction (Peacock and Orchid I think). Please do so by Tuesday.
The rest of you keep adding details, refining the story, and improving the dialogue.
-
There are several scenes in which characters pick up something or give something. It is very difficult to build robots that can do this. Think of another way to move the plot forward. For instance, when Mr. Green finds something, that might be in his hand all along, but only now is attention drawn to it. Maybe this hand isn't raised until now. Or maybe it lights up to draw attention to it.
-
Some scenes refer to a desk or unlocking a door. None of this exists unless we make it. We could borrow a table and bring it on stage between scenes. We will have to carefully plan who moves it.
-
Scene 1 needs to be written. The first four items in "(Potential) Play outline" seem to be a summary of Scene 1 so that a good starting point, so use that and write the script
-
The final scene needs to be written. The last item (7 FINAL SCENE: seems to be a good start, so use that and write the script.
(2)
In your journal, describe what you did in class on Thursday, and add a few pictures of your process
Inspired by the presentations on Tuesday October 1, write down at least one question that you have from each presentation today. Write the questions in your journal with today's date.
(I)
As promised in class, I have created a form for each of you to provide the who, how, and why of the murder.
(II)
Fall break ends on Sunday October 20. That gives you Monday and part of Tuesday to complete your robot base. I want to see everyone's robot base complete when class starts on Tuesday at 2:10pm:
- Arduino in its metal bracket mounted to the wooden base
- L298 H-Bridge in its plastic bracket mounted to the wooden base
- Battery attached with zip ties to the wooden base
- Motors wired to the L298 H-Bridge
- L298 H-Bridge connected to the Arduino with the L298 Breakout Board and the Hobby RC and Motor Controller Shield. I have added detailed instructions including videos of this to the lecture notes.
As I mentioned, I am not travelling and am available to help.
Add an entry in your journal with the heading
### 24 october 20204
Refine the design of your robot. Include a sketch of the full robot indicating placement and type of motors, and where the mechanisms are. Think about what it needs to do and sketch out how each mechanism might be constructed. Add details of each mechanism as a separate sketch.
Your robot base was due on Tuesday October 22. Many of you have failed to do this. You must do this by Tuesday October 29.
Choose one feature of your robot and build it. This could be the peacock tail, the skeleton and arms, the head with eyebrows or hair that is controlled by a servo motor. You will need supplies like wood, motors, brackets, and hardware. Ask for these things on Discord.
Be ready to demonstrate this on Tuesday.
Your journal.md should be in the top level of your repository. If it is not, move it there.
If your base is not complete, you must finish it!
- Build either the skeleton or the robot body.
- Take from my plastic boxes behind the white board
- Arduino Mega
- Arduino mounting box (like the one you used for the Arduino on the base)
- Mount the Arduino Mega in the box using the little plastic standoffs
- Put all the leftover parts and little plastic bits back in my box
- Mount the Arduino Mega in its box somewhere on your robot body or skeleton
- Hind Alharmoodi, Rama, Vahagn, and Ahsen: you must send me your Discord names
Updates
- I have asked about staffing the lab during the weekend. I'll send updates when I know more
- I put more servo brackets in the tipout bin behind the whiteboard
- I did not have time to find the right size screwdriver for the L298 H-Bridge. I'll try to do that tomorrow
- I did not have time to create the instructions for the servo board so I removed that from the homework
- Build the nRF Servo Mega Shield video, following the steps detailed in the lecture notes
- Add the headers sockets for the RadioLink receiver which start at the 10 minute mark in this video
- Add to your robot at least one item that uses a servo motor. Mount your servo motor and the appendage strongly as we discussed in class.
- Connect the servo motor(s) to the nRF Servo Mega Shield, using servo wire extensions if necessary.
On Thursday we will learn how to control the robots. To be prepared, make sure that all parts are sufficiently well attached to the robot that it can drive without causing any damage.
- If you have not finished getting your robot to move reliable under remote control, finish that.
- Finish the robot body. Make sure you have access to the Arduino Mega. You may need to move it.
- Attach the rest of your servo motors (big or small) and/or NeoPixels. Test everything with simple code, ideally the built-in examples.
- Remove the Music Maker Shield from the robot base. This will be installed on the Arduino Mega later on. You can leave it in your box for now, or you can install it on top of the nRF Mega Shield. Be careful to make sure that all pins line up properly.
Important: Whenever you are controlling something by radio, always turn on the transmitter before turning on the motors. This is because if the transmitter isn't transmitting valid data, then the receiver receives random data and may activate the motors randomly and dangerously. Similarly, when you turn off, always turn the motors off first.
Please take advantage of the staffed hours in the IM lab. We added weekend hours especially for you.
As always, I am available to help. Reach out on Discord.
You need to make the following modification to the Music Maker Shield:
- Close the three solder jumpers next to the ISP header by following these instructions
Prepare and program the Arduino_Shield_RC_Controller_v2
- Solder the potentiometer to the Arduino_Shield_RC_Controller_v2 and cut the excess leads
- Plug in the nRF24L01 radio module so that it extends away from the LCD
- Connect the shield to your Arduino Uno
- Program the rf24PerformingRobotsTemplate_2024.ino
- Change the CUSTOM_ADDRESS_BYTE and CUSTOM_CHANNEL_NUMBER as required for your team
- Comment sections in or out as necessary to be a transmitter
- Make sure you have the
Arduino Uno
selected in theBoard Type
- Program the code and open the Serial Monitor
- Verify that you get the message
Radio OK state=0
Prepare and program the Arduino_Shield_RC_Controller_v2
- Plug in the nRF24L01 radio module so that it extends over the edge of the board
- Carefully plug in the Music Maker Shield, making sure that all the pins are in the right places
- Program the rf24PerformingRobotsTemplate_2024.ino
- Change the CUSTOM_ADDRESS_BYTE and CUSTOM_CHANNEL_NUMBER as required for your team
- Comment sections in or out as necessary to be a receiver
- Make sure you have the
Arduino Mega 2560
selected in theBoard Type
- Program the code and open the Serial Monitor
- Verify that you get the message
I am a receiver
Fix whatever issues are preventing your robots from driving reliably and for being controlled reliably by the remote control transmitter
- Connect at least one servo motor or NeoPixel to the
nRF Servo Mega Shield.
- If you are using a giant servo motor, you need to disconnect the red
(
+5V
) wire. - Regular servo motors and NeoPixels will need
(
+5V
) power at the screw terminals on thenRF Servo Mega Shield
.- Power will come from the large battery at the base of your robot.
There are three power outlets on this battery. You are currently
using the
12V
output for the drive motors (and also the giant servo, if you are using one). You are using the9V
output to power the Arduino Uno at the base of your robot. The third output is the USB-A socket, and this will provide+5V
power for any servo motors (not giant) and NeoPixels. - You will need a USB-A screw terminal adapter which I will put in
the tipout bins behind the whiteboard. These adapters have
screw terminals for 4 or 5 wires, but you only need two:
+V
(orV+
or+
) and-V
(orV-
or-
) as shown below: - Your screw terminal may differ slightly from the images above, so make sure to follow the labels on what you have in your hand
- In the image on the left only the two necessary wires are shown. In the image on the right all 5 wires are shown, but you only need two, the red and black wires. Pay particular attention to put the red wire in the correct terminal, as it there is an extra terminal at the end.
- Power will come from the large battery at the base of your robot.
There are three power outlets on this battery. You are currently
using the
- If you are using a giant servo motor, you need to disconnect the red
(
- Modify the code as necessary so that you can control the servo motor or
NeoPixel from your
Arduino Shield RC Controller V2
- Record at least two clips on the micro SD card. Give them proper names.
- Modify your code (based on rf24PerformingRobotsTemplate_2024.ino) as necessary so that you can play each of those two sound clips by sending different commands from your Arduino_Shield_RC_Controller_v2
- Pranav and Ahsen:
- Servo motors connected to nRF Servo Mega Shield and controlled remotely by commands from Arduino_Shield_RC_Controller_v2
- Laser cut and assemble the body
- NeoPixel eyes connected to nRF Servo Mega Shield and controlled remotely by commands from Arduino_Shield_RC_Controller_v2
- Fabric tail attached to the wooden "arms" on the servo motors
- Toomie and Sara:
- Attach salad bowl head to plywood (I will cut this for you on Sunday morning)
- Arms connected to nRF Servo Mega Shield and controlled remotely by commands from Arduino_Shield_RC_Controller_v2
- NeoPixels connected to nRF Servo Mega Shield and controlled remotely by commands from Arduino_Shield_RC_Controller_v2
- New head strong enough to support the salad bowl brain
- Hind and Javeria
- NeoPixels and Servos for the big arm and the little fan connected to the nRF Servo Mega Shield and controlled remotely by commands from Arduino_Shield_RC_Controller_v2
- Linh and Luke
- I didn't get a chance to check in with you. Please make a list of what remains to be done for your robot.
- Hind and Rama
- Congratulations Hind on getting the belly pillow (or whatever you want to call it) working!
- Connect the belly pillow to the nRF Servo Mega Shield and make it controlled remotely by commands from Arduino_Shield_RC_Controller_v2
- Avinash and Vahagn
- Connect the NeoPixels to the nRF Servo Mega Shield and make it controlled remotely by commands from Arduino_Shield_RC_Controller_v2
- Mbebo and Aaron
- Mount the Arduino Mega
- Connect all the servo motors and the NeoPixels to the nRF Servo Mega Shield nRF Servo Mega Shield and make them all controlled remotely by commands from Arduino_Shield_RC_Controller_v2
If something is preventing you from making progress, say so on Discord and I can either help you out or offer alternatives.
As always, I am available to help if you reach out.
If you are unable to accomplish the assignments, and you didn't reach out to me, then your grade will reflect this
Start making sound clips for your lines. I don't expect you to finish all of them by Thursday but I want you to get familiar with the process. If you are unsure of how to proceed ask Mbebo and Aaron (or me)
-
Create 5 sound clips of your lines. You can either record a person speaking (yourself or someone else) or use a text-to-speech voice generator of some kind. Pay attention to the recording level so that the sound is clear and undistorted when it comes out of the Marshall speaker. Speak slowly and clearly.
-
Add suitable
case
sections in your code so that you can trigger the sound clips from your control panel
- Pranav and Ahsen:
- Control the tail from your control panel
- Dress up your robot
- Toomie and Sara:
- Figure out why controlling both servos and NeoPixels causes the transmission of messages to fail. Ask me for help, or try out all those things I suggested.
- Hind and Javeria
- Your robot is still just a skeleton I think. Give it a body. Can be cardboard or fabric or whatever you want, but I want it to look more finished.
- Linh and Luke
- Your robot is still mostly a skeleton. Give it a body. Can be cardboard or clothes or fabric or whatever you want, but I want it to look more finished.
- Hind and Rama
- Your robot is still mostly a skeleton. Give it a body. Can be cardboard or clothes or fabric or whatever you want, but I want it to look more finished.
- Avinash and Vahagn
- Get the money gun controlled by the control panel
- Get the money gun mounted
- Give your robot a body
- Mbebo and Aaron
- Give your robot a body
Your robot should be absolutely ready to go on stage and perform in the play. What this means is that all necessary functionality is present and in working condition:
- Every single line from the script is present and can be triggered from the control panel
- All sound effects are present and can be triggered from the control panel
- All servo motor actions are present and can be triggered from the control panel
- All NeoPixel actions are present and can be triggered from the control panel
- Any other accessories that are in the script (e.g. puppets, money guns, etcc.) are present and can be triggered from the control panel
- All wires properly secured (e.g. with zipties)
- All batteries properly secured
- All speakers properly secured
- All bolts and screws fully tightened
- All servo motor horns secured with screws into the center of the servo shaft
- All hubs (wheels and giant servo motor) secured with socket head screws and fully tightened
- All batteries fully charged
- Large Talentcell battery on the base
- Anker battery for robot accessories
- Anker battery for the control panel
- Six AA batteries in the Radiolink RC4GS RC Transmitter
- Absolutely no jumper wires!
- Absolutely no solderless breadboard!
- Robot body or clothing sufficiently finished
- Anything else that your robots need to perform the play