{"id":34,"date":"2010-06-22T20:11:49","date_gmt":"2010-06-23T03:11:49","guid":{"rendered":"http:\/\/distantpulse.com\/serenity\/?page_id=34"},"modified":"2013-09-24T22:43:56","modified_gmt":"2013-09-25T05:43:56","slug":"software","status":"publish","type":"page","link":"https:\/\/distantpulse.com\/serenity\/?page_id=34","title":{"rendered":"Software"},"content":{"rendered":"<p>The main areas of focus with the software that come to mind are:<\/p>\n<ul>- Navigation logic (how the boat will follow a course, and how it will tack when traveling upwind)<\/ul>\n<ul>- Simulation (for testing navigation logic)<\/ul>\n<ul>- Hardware integration (actually reading from the sensors, servo control, etc)<\/ul>\n<ul>- Waypoint authoring utility (for specifying the course the boat should follow)<\/ul>\n<ul>- Feedback reporting utility (for viewing the actual coarse traveled, images, videos, etc)<\/ul>\n<p><strong>Navigation Logic<\/strong><br \/>\nThe navigation logic is as follows:<\/p>\n<li>- GPS 'primary' waypoints (entered using a waypoint authoring utility prior to launch of boat - OR - added while under remote control mode) will be visited in a one at a time fashion.  None of these waypoints are ever to be skipped.<\/li>\n<li>- Periodically, there is a check to see if intermediate waypoints are required (aka tacking waypoints).  These intermediate waypoints are only computed for the current primary waypoint.  When any intermediate waypoints are present, they take precedence over the primary waypoint.  However, keep in mind that these intermediate waypoints are cleared and recomputed periodically (to account for potentially shifting winds, etc).  It is entirely possible that the environmental conditions can change such that the intermediate waypoints are suddenly no longer needed.<\/li>\n<li>- The last two primary waypoints will be repeatedly traversed while the boat awaits being picked up.  <em>It will be important to keep this in mind when specifying the primary waypoints!<\/em><\/li>\n<p>Flowcharts of navigation logic:<br \/>\n<a href=\"http:\/\/distantpulse.com\/serenity\/wp-content\/uploads\/2012\/SerenityNavigationFlow.gif\" target=\"_popup\"><img decoding=\"async\" alt=\"Navigation flowchart\" src=\"http:\/\/distantpulse.com\/serenity\/wp-content\/uploads\/2012\/SerenityNavigationFlow.gif\" width=\"50%\" height=\"50%\" \/><\/a><br \/>\n<a href=\"http:\/\/distantpulse.com\/serenity\/wp-content\/uploads\/2012\/SerenityIntermediateWaypoints.gif\" target=\"_popup\"><img decoding=\"async\" alt=\"Navigation Intermediate Waypoints flowchart\" src=\"http:\/\/distantpulse.com\/serenity\/wp-content\/uploads\/2012\/SerenityIntermediateWaypoints.gif\" width=\"50%\" height=\"50%\" \/><\/a><\/p>\n<p><strong>Simulation<\/strong><br \/>\nThe purpose of the simulation is to be able to test\/debug the navigation logic quickly, and without risk of losing the boat in the process.  It also allows putting off any final decisions on boat design or hardware purchases until after having had a chance to carefully consider as many factors as possible up front.<\/p>\n<p><strong><em>Video:<\/em><\/strong><br \/>\n<a href=\"http:\/\/youtu.be\/IANlu0ELGU8\" target=\"_popup\"><img decoding=\"async\" src=\"http:\/\/distantpulse.com\/serenity\/wp-includes\/images\/crystal\/video.png\" \/>Sail Simulation v2 (most recent version)<\/a><\/p>\n<p><Strong>Useful links:<\/Strong><\/p>\n<li><a href=\"http:\/\/arduino.cc\/hu\/Main\/Software\" target=\"_popup\">Arduino IDE<\/a><\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/ardupilot-mega\/wiki\/Mission\" target=\"_popup\">DIY Drones 'Mission Planner' utility<\/a><\/li>\n","protected":false},"excerpt":{"rendered":"<p>The main areas of focus with the software that come to mind are: &#8211; Navigation logic (how the boat will follow a course, and how it will tack when traveling upwind) &#8211; Simulation (for testing navigation logic) &#8211; Hardware integration (actually reading from the sensors, servo control, etc) &#8211; Waypoint authoring utility (for specifying the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":20,"comment_status":"open","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-34","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/distantpulse.com\/serenity\/index.php?rest_route=\/wp\/v2\/pages\/34","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/distantpulse.com\/serenity\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/distantpulse.com\/serenity\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/distantpulse.com\/serenity\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/distantpulse.com\/serenity\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=34"}],"version-history":[{"count":37,"href":"https:\/\/distantpulse.com\/serenity\/index.php?rest_route=\/wp\/v2\/pages\/34\/revisions"}],"predecessor-version":[{"id":368,"href":"https:\/\/distantpulse.com\/serenity\/index.php?rest_route=\/wp\/v2\/pages\/34\/revisions\/368"}],"wp:attachment":[{"href":"https:\/\/distantpulse.com\/serenity\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=34"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}