The Story of Pointeo and Hoopiet

We set out to identify different positions our robots could be in, and came up with many (some of these are listed in our pose text document below our code) that we wanted to use as building blocks for our interaction.

From there we built our second robot and placed it next to the first one on the table facing the other way. Now if we call for them to do the same motion, they will do it in opposites. We played around with different combinations and sequences of poses to try and portray a short interaction.

We had to shift the zeros of our coordinate system to be zero where the robots start from rest. When you start the code, but before you start the motion primitives script, the motors are providing no position maintenence. Hence the system falls to rest.

Additionally, we needed to carefully choose the transitions between our poses because any slip in the motors would throw off the rest of the script.

Our Interaction:

We have two robots, Pointeo and Hoopiet, (left and right respectively) who’s first motion is somewhat dance like. The rise to greet each other, acknowledge each other’s presence, and then Hoopiet oversteps her bounds and Pointeo pulls back. Next they rise to the same level to show forgiveness, but their RoboParents said they couldn’t be together. They get very sad, and when Hoopiet can’t take it anymore, she pretends to shut off so she can run away with Pointeo. Pointeo sees this and immediately starts to shut himself off. We all know how it ends.

        self.write("Script starting.")
        self.send_cue('gains', 0.5, 1.0)   
        t = 3    
        self.send_pose('getup1')
        self.sleep_unless_stop(t)

        self.send_pose('getup2')
        self.sleep_unless_stop(t)

        self.send_pose('getup3')
        self.sleep_unless_stop(t)

        self.send_pose('getup4')
        self.sleep_unless_stop(t)

        self.send_pose('reset')
        self.sleep_unless_stop(t)

        self.send_pose('jumpapproach')
        self.sleep_unless_stop(t)

        self.send_pose('reset')
        self.sleep_unless_stop(t)

        self.send_pose('sad')
        self.sleep_unless_stop(t)
	
        self.send_pose('jumpback')
        self.sleep_unless_stop(t)

        self.send_pose('passout1')
        self.sleep_unless_stop(t)

        self.send_pose('passout2')
        self.sleep_unless_stop(t)

        self.send_pose('getup1')
        self.sleep_unless_stop(t)
        
        self.write("Script done.")
reset,-800,600,-800,600
approach,0,0,-1100,0
sulk,0,0,-900,-600
jumpback,-400,700,-400,700
passout1,0,800,0,800
passout2,0,400,0,400
getup1,0,0,0,0
getup2,-600,-400,-600,-400
getup3,-1000,-800,-1000,-800
getup4,-800,0,-800,0
sad,-900,-600,-900,-600
approachjump,-1100,0,-400,700
jumpapproach,-400,700,-1100,0