Introduction
      Meet OJ, the Cozmo robot. OJ is a small robot that can be programmed to do
      a variety of tasks. Using Anki Cozmo we were tasked with improving an
      implemation of
      
        Monte Carlo Localiztion.
      The goal of the robot is to be able to solve the
      
        Kidnapped robot problem.
      
      
      
      Goals
      
        Develop a Robust Localization System: Create a reliable Monte Carlo
        Localization system that enables Cozmo to accurately determine its
        position within different environments, overcoming challenges such as
        uncertainty and dynamic changes.
      
      
        Enhance Cozmo's Navigational Abilities: Improve Cozmo's ability to
        navigate back to its initial "home state" even when faced with
        disruptions or being moved to an unknown location, effectively solving
        the Kidnapped Robot Problem.
      
      
      Future Improvements
      
        - 
          Currently, Cozmo determines how far away a block is from him based on
          the area of the square he draws around it. It would be useful to know
          approximately what sizes correspond with what distances in mm.
        
 
        - 
          As of now, Cozmo is only able to gather intelligence on where he
          starts. The next step would be to have him find his way back once
          moved.
          
            - 
              To do this, our group talked about having him spin until he's seen
              all of the blocks, marking their distance from him.
            
 
            - 
              Once he's done that, he should move towards one of the blocks
              according to some logic (some ideas we had were moving towards the
              furthest box, or trying to move in between the two closest
              blocks).
            
 
          
         
        - 
          While localizing his position, he should stop every few steps to
          recalibrate his direction.
        
 
        - 
          Once he has returned to what he thinks is the middle, he should use
          the localization method implemented by Ben Durham's group to ensure
          his proper direction.
        
 
      
      Conclusions
      
        - 
          We had a great deal of confusion and difficulty when we tried to
          connect to the Cozmo SDK via Android while Apple seemed to connect
          with far less difficulty. A more detailed explanation of how to
          connect to the Cozmo SDK as well as an ios debugger might be more
          helpful (Python 3.7).
        
 
        - 
          Potential improvements / adjusting parameters seemed to vary in their
          effectiveness. For example, lowering the pose population to more
          sparsely sample the pose space seemed to improve the time by roughly
          10 seconds as well as reduce the computational load. Conversely, other
          parameters such as number of pictures and angles before and after the
          localization process resulted in Cozmo just getting more confused
          (taking more time) and more likely to guess an incorrect home
          location.
        
 
        - 
          It also seems that since Monte Carlo Localization has been implemented
          successfully in prior years' code, we can potentially improve certain
          areas such as computational complexity, processing time, and
          localization accuracy. However, these goals of the project could also
          be expanded into different types of localization such as 2D
          localization to increase the complexity and creativity of the projects
          and methods developed rather than seeking to improve small aspects of
          the prior year's code. This would also allow for the Anki Cozmo
          Project to grow into branches of increasingly complex feats for the
          generations of CS371 students to come.