<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>wjwwood.github.io</title>
 <link href="http://wjwwood.io/atom.xml" rel="self"/>
 <link href="http://wjwwood.io"/>
 <updated>2017-08-14T15:03:25+00:00</updated>
 <id>http://wjwwood.io</id>
 <author>
   <name>William Woodall</name>
   <email>wjwwood@gmail.com</email>
 </author>

 
 <entry>
   <title>SparkFun LCD</title>
   <link href="http://wjwwood.io/2015/04/20/sparkfun-lcd.html"/>
   <updated>2015-04-20T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2015/04/20/sparkfun-lcd</id>
   <content type="html">&lt;p&gt;I’ve had this SparkFun LCD break lying around for a long time.
I think I ordered it back in 2010 along with my mbed and never took the time to get it working.
I was doing some electronics stuff today and I noticed it in my electronics tackle box and I thought I’d give it another go.&lt;/p&gt;

&lt;p&gt;First off, this is the board I’m talking about:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.sparkfun.com/products/retired/8600&quot;&gt;https://www.sparkfun.com/products/retired/8600&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was able to pretty quickly find a library called &lt;code class=&quot;highlighter-rouge&quot;&gt;gLCD&lt;/code&gt; which let me get it going pretty easily.
I did run into trouble compiling it, but it was easy enough to fix up.
However, the source was not in any VCS I could find (I downloaded it from &lt;a href=&quot;http://www.railways-in-miniature.co.uk/gLCD.zip&quot;&gt;http://www.railways-in-miniature.co.uk/gLCD.zip&lt;/a&gt;).
So I “forked” it into a repository on my GitHub account and pushed the origin code and afterwards my patch which gets it working on Arduino versions &amp;gt;= 1.0:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/wjwwood/arduino-glcd&quot;&gt;https://github.com/wjwwood/arduino-glcd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After getting it to compile, I should mention I was compiling the &lt;code class=&quot;highlighter-rouge&quot;&gt;TestPattern&lt;/code&gt; example which comes with the library, I reasoned out how to wire it up to my Arduino Mega that I was using.
I connected things according to this:&lt;/p&gt;

&lt;div class=&quot;language-c++ highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;//You can use these variables to set the pin numbers
&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RST&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;8&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CS&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;9&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Clk&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;13&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;char&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Dat&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;11&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;And additionally I connected &lt;code class=&quot;highlighter-rouge&quot;&gt;vin&lt;/code&gt; to my 3.3v pin on the arduino and the &lt;code class=&quot;highlighter-rouge&quot;&gt;vbatt&lt;/code&gt; to the 5v pin.
Then it just worked:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/sparkfun_lcd/test_pattern.jpg&quot; alt=&quot;gLCD driving a Test Pattern&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So that’s neat, but I was doing some more digging around and noticed this thread:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://forum.sparkfun.com/viewtopic.php?f=15&amp;amp;t=15448&quot;&gt;https://forum.sparkfun.com/viewtopic.php?f=15&amp;amp;t=15448&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In summary, there is an inductor on the board (it’s blue with &lt;code class=&quot;highlighter-rouge&quot;&gt;221&lt;/code&gt; written on it) which gets really hot:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/sparkfun_lcd/inductor.jpg&quot; alt=&quot;Small blue inductor&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And sure enough I touched my finger to it and it was hot!
The conclusion on the forum was that it should be replaced with an inductor which can handle more current (around ~500ma).
But another suggestion was to replace one of the resistors with a different value, which some reported helped.&lt;/p&gt;

&lt;p&gt;I ran out of time to actually try that, but maybe I’ll give it a go next time I pull it out of the box.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Received Structure.io Device</title>
   <link href="http://wjwwood.io/2014/04/05/received-structure-io-device.html"/>
   <updated>2014-04-05T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2014/04/05/received-structure-io-device</id>
   <content type="html">&lt;p&gt;On Friday I finally received my &lt;a href=&quot;http://structure.io/&quot;&gt;Structure.io&lt;/a&gt; device from my backing them on Kickstarter!&lt;/p&gt;

&lt;p&gt;Obviously I wanted to see if it worked with the openni2 ROS drivers, so plugged it into my MacBook and ran the &lt;code class=&quot;highlighter-rouge&quot;&gt;openni2.launch&lt;/code&gt; launch file in the &lt;code class=&quot;highlighter-rouge&quot;&gt;openni2_launch&lt;/code&gt; package. I was easily then able to then subscribe to the depth image using &lt;code class=&quot;highlighter-rouge&quot;&gt;rqt&lt;/code&gt;’s &lt;code class=&quot;highlighter-rouge&quot;&gt;Image View&lt;/code&gt; plugin:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://wjwwood.io/img/structure-io-device.png&quot; alt=&quot;Structure.io device&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I ran into some trouble getting the point clouds to publish, but I think that has to do with some assumption about the device that the ROS driver is making. I think it may be assuming that it has a color camera and so it will try to output colored point clouds. I am not 100% certain about that, but I will probably try to dig into the issue at some point now that I have the device in hand.&lt;/p&gt;

&lt;p&gt;I guess I shouldn’t be surprised that it mostly worked out-of-the box, but it is exciting to me because I think this device could make an excellent alternative as a robot sensor because it is smaller than even the ASUS Xtion’s, it doesn’t have a color camera (which in many cases is not needed for a small robot), and it is designed to be mounted to things. In fact the Structure.io guys have CAD files for the device so you can 3D print your own mounts for it.&lt;/p&gt;

&lt;p&gt;I have been slowly accumulating pieces for a robot and I think this might be the obstacle avoidance sensor for that project when ever I really get it going.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Serial v1.0 Released</title>
   <link href="http://wjwwood.io/2012/06/19/serial-v1-0-released.html"/>
   <updated>2012-06-19T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2012/06/19/serial-v1-0-released</id>
   <content type="html">&lt;p&gt;After several months of work, Serial v1.0 is out!  Serial is Cross-platform serial (rs-232) library written in C++.  You can grab it at my github page:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://wjwwood.github.com/serial/&quot;&gt;http://wjwwood.github.com/serial/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or you can browse the documentation:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://wjwwood.github.com/serial/docs/v1.0/index.html&quot;&gt;http://wjwwood.github.com/serial/docs/v1.0/index.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A short list of the features:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Windows, Linux, and OS X support&lt;/li&gt;
  &lt;li&gt;Permissive license (&lt;a href=&quot;http://www.opensource.org/licenses/BSD-3-Clause&quot;&gt;The New BSD License&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Support for custom baudrates (where supported)&lt;/li&gt;
  &lt;li&gt;Flush the I/O separately, and block until writing is complete&lt;/li&gt;
  &lt;li&gt;Control handshaking lines&lt;/li&gt;
  &lt;li&gt;Block for changes in handshaking lines (Linux and Windows)&lt;/li&gt;
  &lt;li&gt;Complete timeout control (interbyte, per call, and per byte timeout components)&lt;/li&gt;
  &lt;li&gt;Minimal dependencies (cmake)&lt;/li&gt;
  &lt;li&gt;Support for ROS (ros.org) as a unary stack&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For many months now, my friend John (&lt;a href=&quot;http://greaterthaninfinity.com/&quot;&gt;http://greaterthaninfinity.com/&lt;/a&gt;) and I have been working on a cross platform serial library written in C++.  We surveyed the web and found that there really wasn’t a well designed and easy to use serial library that made any effort at being portable (Windows, Linux, OS X).  We really like PySerial and we wanted something as simple and straight forward as that for C++.  Initially we found that Boost had good portability in its serial library, part of boost.asio, but it was verbose and over complicated, and still didn’t provide portability for actions like, flushing the serial port, setting the hand shaking lines, etc…  So we set out to write one from scratch with a custom built unix and windows implementation, and an ABI compatible single interface modeled after PySerial, but with a few changes.  Most notably is that the timeout system mimics the Windows serial timeout struct, and therefore has five parameters for controlling read/write timeouts.  This behavior is achieved in Unix systems by using select to figure out when to read, rather than relying on Unix’s read command for timeout behavior, which exactly how PySerial does it.&lt;/p&gt;

&lt;p&gt;I am really excited to see it finally out, and there are several people outside of our lab here at Auburn already using it, and finding bugs =p (v1.0.1 is due out soon).  If you decide to give it a whirl and find problems please open an issue on github: &lt;a href=&quot;https://github.com/wjwwood/serial/issues/new&quot;&gt;https://github.com/wjwwood/serial/issues/new&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>South's BEST Regional Robotics Competition</title>
   <link href="http://wjwwood.io/2011/12/02/souths-best-regional-robotics-competition.html"/>
   <updated>2011-12-02T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/12/02/souths-best-regional-robotics-competition</id>
   <content type="html">&lt;p&gt;Today is the first day of the South’s BEST Regional Robotics competition hosted at the new Auburn University Arena in Auburn, AL.  This is the final competition event for the BEST robotics middle/high school robotics program this year.  50 teams and thousands of middle and high school students are here to compete for robotics, display booths, oral presentations, website design, and much more.  The main part of the competition will be tomorrow, Saturday December 3rd, and will have 8 seeding rounds, semi-finals, and finals to determine the BEST team in the south east!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://wjwwood.io/img/best_regional_2011.jpg&quot; alt=&quot;Sign at South's BEST&quot; title=&quot;Sign at South's BEST&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The competition will be live streamed tomorrow here: &lt;a href=&quot;http://best.eng.auburn.edu/souths-best-stream.html&quot;&gt;http://best.eng.auburn.edu/souths-best-stream.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have a live photo stream on flickr: &lt;a href=&quot;http://www.flickr.com/photos/64029232@N07/sets/72157628251429949&quot;&gt;http://www.flickr.com/photos/64029232@N07/sets/72157628251429949&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>WarEagle BEST Competition!</title>
   <link href="http://wjwwood.io/2011/10/08/wareagle-best-competition.html"/>
   <updated>2011-10-08T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/10/08/wareagle-best-competition</id>
   <content type="html">&lt;p&gt;Today is the &lt;a href=&quot;http://www.wareaglebest.org/&quot;&gt;WarEagle BEST&lt;/a&gt; Hub’s middle/high school robotics competition!&lt;/p&gt;

&lt;p&gt;We are at Wetumpka High School in Wetumpka, AL and we have 16 middle and high schools here pitting their robot design against each other in this local competition of the Bugs! BEST game!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://wjwwood.io/img/photo-oct-08-1-35-09-pm.jpg&quot; alt=&quot;Competition Photo&quot; title=&quot;Competition Photo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can find details on the game this year &lt;a href=&quot;http://bestinc.org/b_game_rules.php&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can follow the scores with your &lt;a href=&quot;http://itunes.apple.com/us/app/best-scoreboard/id392464952?mt=8&quot;&gt;iPhone&lt;/a&gt;, &lt;a href=&quot;https://market.android.com/details?id=com.omhsbestrobotics.scoreboard&quot;&gt;Android&lt;/a&gt;, or on the &lt;a href=&quot;http://www.bestinc.org/BRI_Apps&quot;&gt;Web&lt;/a&gt;!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>WarEagle BEST Mall-day</title>
   <link href="http://wjwwood.io/2011/09/27/wareagle-best-mall-day.html"/>
   <updated>2011-09-27T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/09/27/wareagle-best-mall-day</id>
   <content type="html">&lt;p&gt;This past Sunday was the Mall-day for the &lt;a href=&quot;http://www.wareaglebest.org/&quot;&gt;WarEagle BEST&lt;/a&gt; hub.  On Mall-day the kids bring their robots to a local Mall to try out their robots on a competition field and to survey the competition.  This year there were some interesting looking designs ranging from a worm gear made from sheets of PVC to a 4-wheeled differential drive robot with scissor arm.&lt;/p&gt;

&lt;p&gt;Since all of the hubs have had kick-off already I can share some of this year’s game rules with you.  The theme of this year’s game is Bug’s, and your robot is supposed to collect bugs and food for the bugs and move them to different locations.  For example, you might choose to collect one of the “flys” (two styrofoam spheres that are glued together) from the cabinet and place it in the “wood pile” (an obstacle course made of 2x4’s).  I think the teams have gotten a good start this year and I am excited to see what comes of &lt;a href=&quot;http://www.wareaglebest.org/&quot;&gt;WarEagle BEST&lt;/a&gt; and &lt;a href=&quot;http://www.southsbest.org/site/&quot;&gt;South’s BEST&lt;/a&gt;.&lt;/p&gt;

&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://photos.gstatic.com/media/slideshow.swf&quot; width=&quot;600&quot; height=&quot;400&quot; flashvars=&quot;host=picasaweb.google.com&amp;amp;hl=en_US&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F104883619408675201853%2Falbumid%2F5657205434666782449%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt;
&lt;p&gt;&amp;lt;/embed&amp;gt;&lt;/p&gt;

&lt;p&gt;I have been part of BEST for over 10 years now and I have help almost every conceivable role: student, mentor, referee, volunteer, A-Team (game day technical support team).  My roommate &lt;a href=&quot;http://mjcarroll.net/&quot;&gt;Michael Carroll&lt;/a&gt;, who has been doing this just as long as I have, has been an integral part of the planning and technical logistics for &lt;a href=&quot;http://www.wareaglebest.org/&quot;&gt;WarEagle BEST’s&lt;/a&gt; hub events as well as the up coming &lt;a href=&quot;http://www.southsbest.org/site/&quot;&gt;South’s BEST&lt;/a&gt; this year.  If you are unfamiliar with BEST I would encourage you to find out if a hub is near you and get involved!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>ROS and Stage4 on OS X</title>
   <link href="http://wjwwood.io/2011/09/23/ros-and-stage4-on-os-x.html"/>
   <updated>2011-09-23T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/09/23/ros-and-stage4-on-os-x</id>
   <content type="html">&lt;p&gt;So for my autonomous mobile robotics class I am taking this semester my class project is going to be a new coverage path planner for the Autonomous Lawnmower.  We have decided to develop this planner in simulation and as we surveyed the landscape (MORSE, Gazebo, Stage, and Custom built) we landed on Stage.&lt;/p&gt;

&lt;p&gt;Problem though, the stage that comes with ROS didn’t work on OS X, but thanks to &lt;a href=&quot;https://github.com/rtv&quot;&gt;Richard Vaughan&lt;/a&gt;’s recent work on &lt;a href=&quot;https://github.com/rtv/Stage&quot;&gt;Stage4&lt;/a&gt;, OS X is back in action as a supported platform.&lt;/p&gt;

&lt;p&gt;Another problem, stageros, the wrapper for Stage to interact with ROS, was designed for a pervious Stage API and didn’t compile.  So we set out to update rosstage to support &lt;a href=&quot;https://github.com/rtv/Stage&quot;&gt;Stage4&lt;/a&gt;.  We managed to get everything to point where it worked on OS X and Linux.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://wjwwood.io/img/ros_and_stage_on_os_x.png&quot; alt=&quot;Stage4 plus rViz on OS X&quot; title=&quot;Stage4 plus rViz on OS X&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After spending some time fixing the issues (mostly trivial things) we discovered that Vaughan head already done most of this in the trunk of ROS’s stage unary stack, doh.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://code.ros.org/gf/project/ros-pkg/scmsvn/?action=browse&amp;amp;path=%2Fstacks%2Fstage%2Ftrunk%2F&amp;amp;pathrev=37480&quot;&gt;https://code.ros.org/gf/project/ros-pkg/scmsvn/?action=browse&amp;amp;path=%2Fstacks%2Fstage%2Ftrunk%2F&amp;amp;pathrev=37480&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyways long story short we managed to get Stage4 and ROS playing nice on OS X and Linux and now our class work can proceed.  The only difference between my changes and Vaughan’s was that I decided to resolve the Stage4 dependency with Homebrew rather than in the ROS unary stack.&lt;/p&gt;

&lt;p&gt;Here is the brew Formula:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://raw.github.com/wjwwood/homebrew/daf127d92166fcd57427e481c7b3c0f746dd3e28/Library/Formula/stage.rb&quot;&gt;https://raw.github.com/wjwwood/homebrew/daf127d92166fcd57427e481c7b3c0f746dd3e28/Library/Formula/stage.rb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recommend using HEAD until a stable tag comes out (&lt;code class=&quot;highlighter-rouge&quot;&gt;brew install --HEAD &amp;amp;lt;url&amp;amp;gt;&lt;/code&gt;).&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>rViz on OS X, Success Reloaded! (10.7)</title>
   <link href="http://wjwwood.io/2011/09/06/rviz-on-os-x-success-reloaded-10-7.html"/>
   <updated>2011-09-06T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/09/06/rviz-on-os-x-success-reloaded-10-7</id>
   <content type="html">&lt;p&gt;I managed to get rViz running this evening on OS X 10.7 using homebrew as the package manager!&lt;/p&gt;

&lt;p&gt;More details will follow soon, in the mean time:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/wjwwood/ros-osx/tree/master/electric-lion-homebrew&quot;&gt;https://github.com/wjwwood/ros-osx/tree/master/electric-lion-homebrew&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Screenshot!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://wjwwood.io/img/rviz-on-osx-reloaded.png&quot; alt=&quot;rViz on OS X 10.7 Lion&quot; title=&quot;rViz on OS X 10.7 Lion&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>MORSE Progress Report</title>
   <link href="http://wjwwood.io/2011/08/01/morse-progress-report.html"/>
   <updated>2011-08-01T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/08/01/morse-progress-report</id>
   <content type="html">I have been working on getting &lt;a href=&quot;http://www.openrobots.org/wiki/morse&quot;&gt;MORSE&lt;/a&gt; to a point that I can use it to develop some simple obstacle detection and avoidance algorithms.  The vehicle I am trying to emulate is a Polaris EV with an automation package on it from &lt;a href=&quot;http://www.kairosautonomi.com/&quot;&gt;Kairos Autonomi&lt;/a&gt;.  The vehicle pulls a fiberglass trailer with Electromagnetic sensors on it which are used to find and discriminate UXO (unexploded ordinance) for the US ARMY Corp of Engineers.  In this video I am using &lt;a href=&quot;http://www.ros.org/wiki/&quot;&gt;ROS&lt;/a&gt; to issue commands to the simulated vehicle (due to decent ROS support in MORSE atm), but on the real system our team has a monolithic stand-alone app with plans for moving to &lt;a href=&quot;http://en.wikipedia.org/wiki/JAUS&quot;&gt;JAUS&lt;/a&gt;.  Here are some screen shots and a short &lt;a href=&quot;http://www.youtube.com/watch?v=WzJxZKohv3c&quot;&gt;YouTube video&lt;/a&gt;.  Here is a &lt;a href=&quot;http://www.youtube.com/watch?v=3ecEhluId3E&quot;&gt;video&lt;/a&gt; of the actual vehicle (I'm not in that video).

&lt;embed type=&quot;application/x-shockwave-flash&quot; src=&quot;https://photos.gstatic.com/media/slideshow.swf&quot; width=&quot;600&quot; height=&quot;400&quot; flashvars=&quot;host=picasaweb.google.com&amp;amp;hl=en_US&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F104883619408675201853%2Falbumid%2F5636090465513919361%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot;&gt;&lt;/embed&gt;
</content>
 </entry>
 
 <entry>
   <title>Top Story: Automow Team Takes 2nd</title>
   <link href="http://wjwwood.io/2011/06/22/top-story-automow-team-takes-2nd.html"/>
   <updated>2011-06-22T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/06/22/top-story-automow-team-takes-2nd</id>
   <content type="html">&lt;p&gt;We made the front page “featured” news on Auburn’s website!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://ocm.auburn.edu/featured_story/lawnmower.html&quot;&gt;http://ocm.auburn.edu/featured_story/lawnmower.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s a photo:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://wjwwood.io/img/moe_back_angle_ros_sticket.jpg&quot; alt=&quot;moe_back_angle_ros_sticket&quot; title=&quot;moe_back_angle_ros_sticket&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My Segway RMP Library: libsegwayrmp</title>
   <link href="http://wjwwood.io/2011/06/21/my-segway-rmp-library-libsegwayrmp.html"/>
   <updated>2011-06-21T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/06/21/my-segway-rmp-library-libsegwayrmp</id>
   <content type="html">&lt;p&gt;I have been working a library for interfacing with the Segway RMP series of mobile robots.  You can find the source online at &lt;a href=&quot;https://github.com/segwayrmp/libsegwayrmp&quot;&gt;https://github.com/segwayrmp/libsegwayrmp&lt;/a&gt;, and the documentation at &lt;a href=&quot;http://segwayrmp.github.com/libsegwayrmp/&quot;&gt;http://segwayrmp.github.com/libsegwayrmp/&lt;/a&gt;.  I decided to take this step because I needed several things in a rmp library that I couldn’t find all in one place.  Those things included:&lt;/p&gt;

&lt;h1 id=&quot;cross-platform&quot;&gt;Cross Platform&lt;/h1&gt;

&lt;p&gt;I do all my work on Linux computer, but I like to use my Mac when ever possible as well, but also we have some projects here that run on Windows still and I need to be able to support that too.  Most of the libraries I looked at had a pretty one-off feel to them and therefore only worked on one OS.  A few libraries had some polish but still lacked support for Windows and Linux in the same library.  Sadly, I cannot say for certain that my new library works on Windows yet, but there is absolutely no reason it shouldn’t and I just need to test it out and fix any small problems I run into.  The big difference is that my library considered cross platform portability from the beginning, so even if I don’t use it on Windows for some time, there is no glaring incompatibility that will keep it from running on Windows when the time comes.&lt;/p&gt;

&lt;h1 id=&quot;open-source&quot;&gt;Open Source&lt;/h1&gt;

&lt;p&gt;For most of the libraries I looked at this isn’t a problem as they are generally GPL or BSD, but I like to stay away from GPL when possible.  To that end my library is permissively licensed under the BSD license.  For those who don’t know that means copy it, use it, sell it, integrate it, just mention you got it from my library.&lt;/p&gt;

&lt;h1 id=&quot;support-both-serial-and-usb&quot;&gt;Support both Serial and USB&lt;/h1&gt;

&lt;p&gt;This is the big one, there are basically three ways to interface with the Segway RMP: CAN, USB via FTDI’s D2XX Library, and Serial.&lt;/p&gt;

&lt;h2 id=&quot;interfacing-with-can&quot;&gt;Interfacing with CAN&lt;/h2&gt;

&lt;p&gt;In order to interface with the RMP via CAN you needed to have an older model that came with a third party CAN2XXX device for linking it to your computer.  I have seen systems that use the kvaser CAN interfaces and others that used the popular PCAN  interfaces.  Either way, this is an old and outdated method for interfacing with the RMP’s and now they all have USB connections that provide access to the CAN bus through a USB packet interface using an FTDI FTD245BM Chip.  Since this is an out of date method and there many different interface specific concerns, my library doesn’t support CAN directly, though my generic RMPIO class allows for easily making a CAN interface work.&lt;/p&gt;

&lt;h2 id=&quot;interfacing-with-usb&quot;&gt;Interfacing with USB&lt;/h2&gt;

&lt;p&gt;The USB interface that now comes on all Segway RMP’s is made possible by the FTDI FTD245BM Chip used in the “UI” component of the RMP these days.  If you aren’t familiar with the way that the FTDI driver system works there are basically three different ones for most of their devices.  First there is the D2XX driver.  This driver provides only a USB (now libusb based) interface to the chips, which gives the programmer much more in depth control and access to FTDI chip specific commands and provides a, presumably, more efficient interface for reading and writing to the serial like devices.  This is in contrast to the VCP driver from FTDI, which allows the Operating System to use the FTDI device like a legacy com port, showing up in Windows like ‘COM1’ and in POSIX like ‘/dev/ttyUSB0’ or similar.  This is now the default type of interface in Linux and in fact you have to forcefully remove and blacklist the ftdi_sio and usbserial drivers in the kernel to prevent the VCP style representation of the device.  This was problematic for me because I use Linux for everything and most all of the libraries only supported the D2XX style interfacing for the RMP.  Therefore I had blacklist the ftdi_sio driver from capturing the device, but this is a blanket operation, meaning that any other FTDI devices would also not show up as serial ports.  I didn’t like this.  The last type of driver is Windows only and is called the CDM (Combined Driver Model) which allows for dynamic switching from VCP to D2XX.&lt;/p&gt;

&lt;h2 id=&quot;interfacing-with-serial&quot;&gt;Interfacing with Serial&lt;/h2&gt;

&lt;p&gt;Like I said, the fact that using the RMP as a USB device on Linux meant that I couldn’t use other FTDI devices like serial ports was a potential deal breaker for me.  There for I set out to write a driver for the RMP that would use the VCP style interface for communication.  I did this, using my &lt;a href=&quot;https://github.com/wjwwood/serial&quot;&gt;serial library&lt;/a&gt;, and I was successful after only a week or so.  But, I realized that I couldn’t use the VCP driver on Mac… So I decided to add the ability for my driver to optionally use either USB or Serial to interface with the RMP.  This took more time, but finally I have a solution for right now and I plan to add more of the features I wanted later.&lt;/p&gt;

&lt;h1 id=&quot;other-design-considerations&quot;&gt;Other Design Considerations&lt;/h1&gt;

&lt;p&gt;In addition to the things I was looking for in a library, capability wise, I needed to consider something else.  I originally wanted to just extend someone else’s library, but I considered the fact that it wasn’t exactly without baggage.  To be fair my library has a dependency on my homebrew serial library, but it is optional and easy to install.  I needed my library to work in a monolithic stand-alone application, in a &lt;a href=&quot;http://www.ros.org/wiki/&quot;&gt;ROS&lt;/a&gt; package (for my work), and a &lt;a href=&quot;http://www.robots.ox.ac.uk/~mobile/MOOS/wiki/pmwiki.php&quot;&gt;MOOS&lt;/a&gt; Application in another svn repository (for my co-workers).  Therefore I took great care in designing the build system in particular to be flexible, portable, and gracefully degrading.&lt;/p&gt;

&lt;p&gt;Watch here for a &lt;a href=&quot;http://www.ros.org/wiki/&quot;&gt;ROS&lt;/a&gt; package: &lt;a href=&quot;https://github.com/segwayrmp/segway-rmp-ros-pkg&quot;&gt;https://github.com/segwayrmp/segway-rmp-ros-pkg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the &lt;a href=&quot;http://www.robots.ox.ac.uk/~mobile/MOOS/wiki/pmwiki.php&quot;&gt;MOOS&lt;/a&gt; Application, email me.&lt;/p&gt;

&lt;p&gt;For the monolithic-application, email me.&lt;/p&gt;

&lt;h1 id=&quot;results&quot;&gt;Results&lt;/h1&gt;

&lt;p&gt;To recap I wanted several things for my new Segway RMP library and here is where it stands:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Open Source:
    &lt;ul&gt;
      &lt;li&gt;BSD Licensed&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Cross-Platform Support:
    &lt;ul&gt;
      &lt;li&gt;Linux&lt;/li&gt;
      &lt;li&gt;Mac OS X&lt;/li&gt;
      &lt;li&gt;Windows (Needs testing)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Multiple Interface Types:
    &lt;ul&gt;
      &lt;li&gt;CAN (Will not support, unless someone asks and has hardware to test it with)&lt;/li&gt;
      &lt;li&gt;USB (Supported on Linux, Mac, and Windows (needs testing))&lt;/li&gt;
      &lt;li&gt;Serial (Supported on Linux, Mac, and Windows (needs testing))&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope that this library will help others at some point and don’t be afraid to ask questions or post bugs on the tracker: &lt;a href=&quot;https://github.com/segwayrmp/libsegwayrmp/issues&quot;&gt;https://github.com/segwayrmp/libsegwayrmp/issues&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Inadvertent Map of Broun Hall</title>
   <link href="http://wjwwood.io/2011/06/21/inadvertent-map-of-broun-hall.html"/>
   <updated>2011-06-21T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/06/21/inadvertent-map-of-broun-hall</id>
   <content type="html">&lt;p&gt;I was showing off my Segway RMP 200 robot with a Kinect on it to some kids here on an engineering camp and I let them drive it around after the presentation and I forgot I had SLAM running with the Sick LiDAR and they inadvertently made a pretty decent map of the basement of Broun Hall =D.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://wjwwood.io/img/map_of_broun.jpeg&quot; alt=&quot;SLAM Map of the Basement of Broun Hall&quot; title=&quot;SLAM Map of the Basement of Broun Hall&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>RViz on OS X, Success!</title>
   <link href="http://wjwwood.io/2011/06/17/rviz-on-os-x-success.html"/>
   <updated>2011-06-17T00:00:00+00:00</updated>
   <id>http://wjwwood.io/2011/06/17/rviz-on-os-x-success</id>
   <content type="html">&lt;p&gt;After working with my friend &lt;a href=&quot;http://greaterthaninfinity.com/&quot;&gt;John&lt;/a&gt;, we have put together a decent one-stop-shop for solving the issues encountered when trying to compile &lt;a href=&quot;http://www.ros.org/wiki/&quot;&gt;ROS&lt;/a&gt;, and specifically &lt;a href=&quot;http://www.ros.org/wiki/rviz&quot;&gt;RViz&lt;/a&gt; for OS X.  The solution we managed to find is a combination of building all macports as +universal, limiting the system to 1 version of Python (2.6.x for us), and forcing all of ROS to be build as i386 with the &lt;code class=&quot;highlighter-rouge&quot;&gt;CMAKE_OSX_ARCHITECTURES=&quot;i386&quot;&lt;/code&gt; environment variable.  This strategy is based on a comment on a &lt;a href=&quot;https://code.ros.org/trac/ros-pkg/ticket/4788#comment:8&quot;&gt;ticket&lt;/a&gt; by Dave on the ros-pkg trac.&lt;/p&gt;

&lt;p&gt;And here is a snapshot!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://wjwwood.io/img/rviz-on-osx.png&quot; alt=&quot;Running RViz on my OS X Macbook Pro&quot; title=&quot;Running RViz on my OS X Macbook Pro&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We have our wiki page that details the steps involved on github, here:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/wjwwood/ros-osx/wiki&quot;&gt;https://github.com/wjwwood/ros-osx/wiki&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most of the things on the wiki are solved problems that are either tickets that have been solved up stream but haven’t been backported to diamondback yet, or are simple tricks to getting ROS, and macports to play nice.  Hopefully the guide won’t even be necessary once &lt;a href=&quot;http://www.ros.org/wiki/electric&quot;&gt;Electric Turtle&lt;/a&gt; is released.&lt;/p&gt;

&lt;p&gt;I am very pleased with the performance(~20% cpu use on data in screenshot below), but there are still some usability issues, some of which I have noticed on my VM’s too, I have been keeping track of them and I hope to make tickets for them soon and maybe even try patches for them.&lt;/p&gt;
</content>
 </entry>
 

</feed>
