# Interaction Lab Accomplishments
## Part 1: Autonomous Actions
- Created a ROS package with autonomous actions
- AR Tags: detection, ability to follow an AR tag (PD controller)
- Audio: Locate audio and turn towards source (max norm algorithm)
- Vision: Find and follow a colored line (OpenCV)
- Use a HSV filter to find the appropriate color
- Find the center of mass of the largest contour and follow that using a PD controller
- Movement:
- Autonomous movement
- Potential field controller - break down forces into x and y components
- X forces control steering angle, Y forces control speed
- The closer Kuri is to an object, the greater the repulsive force it exerts
- Teleop program to move robot and control head movement/expression
- Control LED lights
## Part 2: Action Planner
- Worked with Eitan to create and implement an action planning algorithm
- Monte Carlo Tree Search:
- Best first search to explore current best action and score them based on current reward and future reward
- Create nodes for each human and robot possible action
- Using an estimate of human strategy (varying scales of greediness depending on play strength and other factors), calculate optimal robot actions
- Closed loop belief updater - Seek to understand why human chose sub-optimal actions and update the estimate of human beliefs to explain this using a box-constrained least squares formulation
- Robot sometimes intentionally fails since failures can be informative to update human beliefs
- Proven to give optimal strategy in test games created
## Part 3: Experimental Design
- Worked with Eitan to design a collaborative game where the user and robot work together to gain the most points
- 5 stages, 5 rooms per stage (5x5), 6 abilities. Human chooses a room, then robot chooses a room
- Ran a simple paper version of the game with 4 interviewees for proof of concept testing
- Designed physical room layouts for Kuri to do (final game was 5x4, 6 abilities)
- Shot videos (3+ different camera angles each) of each success/failure
- Created a website from scratch to host the experiment (see github url README for more details)
- Frontend: ReactJS (deployed using github pages)
- Display room options, integrate videos, player feedback for understanding the player's beliefs
- Backend: NodeJS server
- Store player choices and feedback in a google sheet
- Random treatments - Random chance of getting Kuri's optimal strategy vs a random (placebo) strategy
- 21 participated in this online study
- Statistically significant ($p \approx 10^{-5}$) difference in human beliefs of skills Kuri actually had vs didn't have (using end of survey likert scale data)
## Overall takeaways:
- Largest coding project I've ever done (each part had ~1000 lines of code written from scratch)
- First long term (several weeks) collaborative coding experience
- Really come to understand the need to write clean, efficient code with such a large project
- Sometimes it is better to just make our own implementation instead of forcing an existing model
- Less efficient and more complicated to formulate our problem in a format compatible with an existing POMDP solver
- Able to leverage invariants specific to our problem to make the problem tractable (solves within seconds)
- People (experiment participants) are unpredictable in the choices they make (from our experiments)