<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Joe MacInnes</title>
    <description>dedicated computer scientist with one foot in the humanities</description>
    <link>/</link>
    <atom:link href="/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Tue, 09 Oct 2018 17:59:02 +0000</pubDate>
    <lastBuildDate>Tue, 09 Oct 2018 17:59:02 +0000</lastBuildDate>
    <generator>Jekyll v3.7.4</generator>
    
      <item>
        <title>Lane Following with Autonomous Vehicles</title>
        <description>&lt;p&gt;Over the summer I participated in the University of Arizona’s &lt;a href=&quot;http://catvehicle.arizona.edu&quot;&gt;CAT Vehicle REU&lt;/a&gt; funded by the National Science Foundation. During this 10 week experience, I and two other students worked with our graduate mentor to develop a lane detection and following system for the University’s Cognitive Autonomous Testing (CAT) Vehicle.&lt;/p&gt;

&lt;p&gt;The CAT Vehicle is a hybrid Ford Escape configured for drive-by-wire and containing the neccessary computer systems to control the car using the Robotics Operating System.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/catvehicleTeam.jpg&quot; alt=&quot;The Catvehicle REU Participants.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;My team and I developed a controller for  the car to follow lanes using input from a front facing camera combined with GPS odometry. Along the way, we created a new way to model the path of the lane by improving upon an existing sliding window algorithm. We submitted a short paper detailing this work to the IEEE IRC 2019 conference (&lt;a href=&quot;https://github.com/catvehicle/Lanefinder&quot;&gt;Github repo&lt;/a&gt; with paper and code).&lt;/p&gt;

&lt;p&gt;Below is a short video to describe the entirety of my team’s work.&lt;/p&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/fkqQqAvVHJE&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Tue, 07 Aug 2018 22:00:00 +0000</pubDate>
        <link>/2018/catvehicle-reu/</link>
        <guid isPermaLink="true">/2018/catvehicle-reu/</guid>
        
        
        <category>research,</category>
        
        <category>autonomous-vehicles</category>
        
      </item>
    
      <item>
        <title>Woo Game Jam</title>
        <description>&lt;p&gt;My friend and fellow classmate, Avi Vajpeyi and I decided that we wanted to participate in the &lt;a href=&quot;&quot;&gt;Ludum Dare&lt;/a&gt; game jam – a global game creation competition that takes place over a single weekend. As we talked, however, we realized it would be much more exciting to get other students at Wooster involved. Thus, we decided to organize a game jam event at the College coinciding with Ludum Dare 41.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/jam.jpg&quot; alt=&quot;Demoing the Finished Games&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It was a success! We got alumni working in the industry to video call in and share tips for success, consumed a lot of snacks, and even managed to provide tshirts. By the end of the weekend, six teams had created playable games, which we demoed in the campus’s student center.&lt;/p&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/eKdHRfMhVDI&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Avi and I, along with two other students, Thomas Matlak and Alex Iudice fielded our own game as well, which we called Time Turner. The game jam’s theme was ‘two incompatible games,’ so we jammed together turn-based strategy with racing games. The game takes the player through a series of levels in which they must avoid enemy chase cars in the whilst navigating to an objective. The caveat, however, is that the player can drive while the enemy cars are frozen in time, but they themselves, after a short pause, are frozen while the enemy cars drive.&lt;/p&gt;
</description>
        <pubDate>Sun, 15 Apr 2018 22:00:00 +0000</pubDate>
        <link>/2018/woo-game-jam/</link>
        <guid isPermaLink="true">/2018/woo-game-jam/</guid>
        
        
        <category>leadership</category>
        
      </item>
    
      <item>
        <title>Simulated Phagocytosis Using Swarm Robotics</title>
        <description>&lt;p&gt;For my junior undergraduate research project, I chose to focus on swarm intelligence. In particular, I simulated the process of phagocytosis - when one cell eats another - by using a swarm of Kilobots. These robots are developed by Harvard and designed to be used in swarm robotics applications.&lt;/p&gt;

&lt;p&gt;Alone, each Kilobot is unable to perform any meaningful function, but as a group they perform emergent behavior matching that of a phagocyte. My simulation fully captures the  searching, movement, and engulfing behavior of a phagocyte, but not the actual destruction of foreign bodies.&lt;/p&gt;

&lt;p&gt;For a much more detailed description of my, you can checkout my &lt;a href=&quot;https://github.com/joemac875/phagobot&quot;&gt;GitHub repo&lt;/a&gt; which has my research paper and code. Otherwise, the following videos show off some of the results.&lt;/p&gt;

&lt;p&gt;Each is an example of my code running in the Kilombo simulator for Kilobots. Because the simulator can’t render the light gradient (closest analog I could get to bacteria’s chemical gradients) I had to draw it in as well as the source (which I label ‘harmful bacterium’ for reference.&lt;/p&gt;

&lt;p&gt;It might be worth describing the colors of the bots in the following videos as well, as each indicates a separate role:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blue&lt;/strong&gt; → Kilobots that have the highest light reading in the swarm. These bots call the others towards them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Green&lt;/strong&gt; → “middle-of-the-pack” Kilobots that know they don’t have the highest reading, but also aren’t at the “back” of the swarm.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Red&lt;/strong&gt; → Kilobots that know they are at the “back” of the swarm and need to move. These bots attempt to follow the edge of the swarm.&lt;/p&gt;

&lt;h3 id=&quot;single-target&quot;&gt;Single Target&lt;/h3&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/gZEhmxaNgRU&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h3 id=&quot;two-targets&quot;&gt;Two Targets&lt;/h3&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/uT4GUHJlITg&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h3 id=&quot;adaptability-and-scalability&quot;&gt;Adaptability and Scalability&lt;/h3&gt;
&lt;p&gt;This video just shows that a member of the swarm can be ripped out and the swarm will adapt. That is, new Kilobots will emerge as the blue, highest-light-reading bots. Also, dropping the old bot back in doesn’t cause any issues.&lt;/p&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/M9F4gqi3x0Q&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Thu, 15 Mar 2018 22:00:00 +0000</pubDate>
        <link>/2018/swarm-phagocytosis/</link>
        <guid isPermaLink="true">/2018/swarm-phagocytosis/</guid>
        
        
        <category>research,</category>
        
        <category>swarm</category>
        
      </item>
    
      <item>
        <title>Ashesi Innovation Experience Coach</title>
        <description>&lt;p&gt;I worked for Ashesi University College in Ghana over the course of four weeks as part of the Ashesi Innovation Experience (AIX). AIX is an intense and exciting two-week enrichment program developed by faculty at Ashesi for senior high school students between the ages of 15 and 20.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/ashesiSession.jpg&quot; alt=&quot;Early on during an engineering session. Each coach (my job) was responsible for teaching a small group of students in the session the necessary principles and concepts.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;My role was a coach, who were in closest contact with the participating students. The responsibilities of a coach were twofold. First, they made sure that the students were alright at all times and fully participating/socializing. Essentially, the coaches were something like camp counselors. Secondly, the coaches had to teach and monitor the progress of small student cohorts during their module sessions.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/aixTeam.jpg&quot; alt=&quot;My cohort and I.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There were three modules: engineering, robotics, and entrepreneurship. I was assigned to engineering, where we oversaw the students as they constructed smart houses using Arduino boards and an array of sensors. While most of the students had never dealt with circuitry or programmed before, by the end of the program, they had learned Arduino C and basic electrical engineering concepts.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/ashesiHouse.jpg&quot; alt=&quot;A mock smart home under construction.&quot; /&gt;&lt;/p&gt;
</description>
        <pubDate>Fri, 25 Aug 2017 22:42:40 +0000</pubDate>
        <link>/2017/ashesi-innovation-experience-coach/</link>
        <guid isPermaLink="true">/2017/ashesi-innovation-experience-coach/</guid>
        
        
        <category>jekyll</category>
        
        <category>update</category>
        
      </item>
    
      <item>
        <title>Goodyear Internship</title>
        <description>&lt;p&gt;I worked on a team of four students as a consultant for Goodyear. We worked for the company through the College of Wooster’s Applied Methods Research Experience (AMRE). AMRE matches students at the College with companies who need problems solved. Thus, we worked for advisors at Goodyear, but did most of our work at the College.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/goodyear-team-advisors.jpg&quot; alt=&quot;The Team with Our Advisors&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The main aim of this project was to identify and analyze the effects of some geolocational factors such as road roughness, road curvature, elevation change, weather, and traffic on tire tread wear. Goodyear provided us with data concerning the tire tread wear rates of different kinds of tires in several different zip codes. The majority of work done involved getting data for our factors, generating features from this data, and creating a model from these features. The main deliverable for the project was a model that explained the effect of the mentioned geolocational factors and enabled Goodyear to calculate a predicted tread wear rate for any region in the United States.&lt;/p&gt;
</description>
        <pubDate>Mon, 10 Jul 2017 22:00:00 +0000</pubDate>
        <link>/2017/goodyear-internship/</link>
        <guid isPermaLink="true">/2017/goodyear-internship/</guid>
        
        
        <category>internships</category>
        
      </item>
    
      <item>
        <title>Motion Controlled Skid Rover</title>
        <description>&lt;p&gt;This project allows a user to control a skid-steer rover using only hand angles. A pair of gloves - each with an accelerometer - attached to an Arduino Uno and wireless transceiver sends orientation information to a rover with controlled by an Arduino Mega with another wireless transceiver. Each glove and accelerometer pairing corresponds to one of the two motors on the rover. When both hands are level, the motors on the rover don’t engage. If one hand angles downward, the corresponding motor causes its tread to move forward. If the hand angles upward, the tread moves in reverse.&lt;/p&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/xtq54M5oJJM&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</description>
        <pubDate>Mon, 23 Jan 2017 22:00:00 +0000</pubDate>
        <link>/2017/skid-rover-gloves/</link>
        <guid isPermaLink="true">/2017/skid-rover-gloves/</guid>
        
        
        <category>robotics</category>
        
      </item>
    
      <item>
        <title>Working for Wooster's 150th</title>
        <description>&lt;p&gt;For this internship I worked on a team of six students to prepare a physical history exhibit and website for the College of Wooster’s 150th anniversary celebration.&lt;/p&gt;

&lt;h3 id=&quot;the-exhibit-and-virtual-old-main&quot;&gt;The Exhibit and Virtual Old Main&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;/assets/old-main-old.jpg&quot; alt=&quot;Old Main before its wing editions&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Old Main before its wing editions.
My largest contribution to the history exhibit was a virtual tour of Old Main, the original campus building. Before it burned down in 1901, it was the College’s only building, and it housed all the departments and facilities. The only remains of the building I used to reconstruct it were pictures, dimensions recovered from old catalogues my colleagues obtained, and newspaper accounts.&lt;/p&gt;

&lt;p&gt;I used Blender to construct the building and its interior. In total, I modeled six rooms , the exterior, hallways, and central staircase fully. I then used these assets in Unity  in order to create a virtual tour allowing a user walk around the building. The tour was on display for the entirety of the physical exhibit, but is no longer accessible for viewing.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/oldmainShot.png&quot; alt=&quot;The exterior of my recreation. A screenshot from the virtual tour.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The exterior of my recreation. A screenshot from the virtual tour.&lt;/p&gt;

&lt;iframe src=&quot;https://p3d.in/e/9ny2V&quot; allowsfullscreen=&quot;true&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;100%&quot; height=&quot;340&quot;&gt;&lt;/iframe&gt;

&lt;h3 id=&quot;the-website&quot;&gt;The Website&lt;/h3&gt;

&lt;p&gt;Designed to be a companion to the exhibit, the website was the bulk of the team’s work. It features many articles detailing pieces of the College’s history.&lt;/p&gt;

&lt;p&gt;Myself and another student intern did the bulk of creating the architecture of the site and its design with WordPress and a custom theme (we hacked an existing theme).&lt;/p&gt;

&lt;p&gt;The whole team conducted archival research and wrote articles for the site. It can be found at &lt;a href=&quot;https://150th.wooster.edu&quot;&gt;150th.wooster.edu&lt;/a&gt;. 
&lt;img src=&quot;/assets/websiteShot.png&quot; alt=&quot;A screenshot of the website's home page&quot; /&gt;&lt;/p&gt;

</description>
        <pubDate>Sun, 10 Jul 2016 22:00:00 +0000</pubDate>
        <link>/2016/history-department-internship/</link>
        <guid isPermaLink="true">/2016/history-department-internship/</guid>
        
        
        <category>interships</category>
        
      </item>
    
      <item>
        <title>Robotic Arm OpenCV</title>
        <description>&lt;p&gt;This project combines a robotic arm with OpenCV in order to map arm movements of a human user to the robotic arm. The robotic arm itself has three degrees of freedom and was built using &lt;a href=&quot;http://www.instructables.com/id/Pocket-Sized-Robot-Arm-meArm-V04/&quot;&gt;this Instructables document&lt;/a&gt;. The gripper of the arm is currently non-functioning (the woes of broken servos).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/science-day.png&quot; alt=&quot;An earlier iteration of the project in which the tracking of the hand was done using thresholding. This was taken on Science Day at the College of Wooster, where clubs get to show members of the community what they do.&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In order to read human arm movements I used OpenCV-Python to write a script that uses a laptop’s webcam to track a monochromatic, gloved hand. The script has a calibration phase which stores the maximums of the human user’s reach in the directions which the arm can travel (forward/backward, left/right, up/down). Then, it continually reads the center location of the hand (for up/down and left/right motion) and the size of the hand onscreen (for forward/backward motion) and maps these values in relation to their maximums to servo positions.&lt;/p&gt;

&lt;iframe width=&quot;100%&quot; height=&quot;315&quot; src=&quot;http://www.youtube.com/embed/rfqXUseKGMc&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;I did the project as part of the Wooster robotics club. The script can be found on the &lt;a href=&quot;https://github.com/joemac875/robot-arm-opencv&quot;&gt;Github Project Page&lt;/a&gt;&lt;/p&gt;

</description>
        <pubDate>Thu, 10 Mar 2016 22:00:00 +0000</pubDate>
        <link>/2016/robot-arm/</link>
        <guid isPermaLink="true">/2016/robot-arm/</guid>
        
        
        <category>robotics</category>
        
      </item>
    
  </channel>
</rss>
