{"id":554,"date":"2008-12-10T07:15:16","date_gmt":"2008-12-10T12:15:16","guid":{"rendered":"http:\/\/php.astolfo.com\/?p=554"},"modified":"2014-12-21T06:32:35","modified_gmt":"2014-12-21T11:32:35","slug":"554","status":"publish","type":"post","link":"https:\/\/www.plastibots.com\/index.php\/2008\/12\/10\/554\/","title":{"rendered":"TrackerBot"},"content":{"rendered":"<p>You would think I have a template for &#8220;room-navigating&#8221; robots&#8230;  TrackerBot evolved from the recent <a href=\"http:\/\/www.plastibots.com\/bots\/picocam.asp\">PicoCam<\/a> robot I created.\u00a0 After I had finished PicoCam, I decided I wanted to try something with tracks.\u00a0 TrackerBot and PicoCam share similar intelligence, with TrackerB<a href=\"\/image\/trackerbot\/camclose_L.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" style=\"border: 0pt none;\" src=\"\/image\/trackerbot\/camclose_S.gif\" border=\"0\" alt=\"\" width=\"179\" height=\"134\" \/><\/a>ot having some slight improvements.\u00a0 The general idea is that it will navigate a room using a variety of sensory input for obstacle avoidance.\u00a0 There are 3 Cybermaster touch sensors, 1 DIRP light sensor and 1 line following standard Lego light sensor.<\/p>\n<p>The DIRP light sensor (seen here at the top), does most of the work.\u00a0 It is set-up as a light sensor and detects left, center and right objects. It does a pretty good job of making sure TrackerBot does not hit things.\u00a0 The Cybermaster touch sensors are used to detect objects that are low, at the back or out of the line of sight of the DIRPD sensor. They are wired such that all 3 sensors can be placed on one port (more on this after).<\/p>\n<p>TrackerBot is also equipped with a pinhole wireless colour camera.\u00a0 It can broadcast live colour video with sound to the receiver and show its progress on TV.\u00a0 It is more of a proof of concept than any real function.\u00a0 Read on for more details&#8230;<\/p>\n<p><!--more--><\/p>\n<p>A side view of the robot showing the rear collision sensor, drive motors, and the tracks (non-Lego). Yup &#8211; I broke the rules.\u00a0 The tracks on TrackerBot are from one of those cheap remote control battle-bots sets.\u00a0 I picked the set up for next to nothing solely for tracks.\u00a0 These tracks fit well with the wheel hubs shown and are nice and flexible.\u00a0 They grip well and are about twice the length of Lego rubber tracks.<\/p>\n<p style=\"text-align: center;\"><a href=\"\/image\/trackerbot\/side_rear_L.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"\/image\/trackerbot\/side_rear_S.gif\" border=\"0\" alt=\"\" width=\"280\" height=\"211\" \/><\/a><\/p>\n<p>Here is a rear view showing the bump sensor.\u00a0 One of the 3 Cybermaster sensors are used to detect collisions from the back.\u00a0 This sensor uses an elastic band to keep it from triggering with movement.\u00a0 This is due to its design, which makes it very sensitive.<\/p>\n<p style=\"text-align: center;\"><a href=\"\/image\/trackerbot\/rear_L.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"\/image\/trackerbot\/rear_S.gif\" border=\"0\" alt=\"\" width=\"227\" height=\"170\" \/><\/a><\/p>\n<p>A side view of the robot highlighting the front bumpers.\u00a0 The bumpers use Cybermaster touch sensors to detect left and right.\u00a0 The yellow cross tubes are used for center collision detection.\u00a0 In many cases, they will cause both sensors to be triggered at the same time.\u00a0 Because of the ability to configure these sensors to return various readings depending on which was hit, it is possible to code in reactions to front, left, center and rear collisions. More on this in the following pictures&#8230;<\/p>\n<p style=\"text-align: center;\">[ad name=&#8221;GoogleAS728x90&#8243;]<\/p>\n<p style=\"text-align: center;\"><a href=\"\/image\/trackerbot\/side_L.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"\/image\/trackerbot\/side_S.gif\" border=\"0\" alt=\"\" width=\"295\" height=\"248\" \/><\/a><\/p>\n<p>A close-up of the right Cybermaster sensor.\u00a0 Each of these sensors has a resistor in it, which, when connected together, and set as <code>SENSOR_MODE_RAW<\/code> in NQC, can be configured to return different values between 1 and 1024 when triggered.\u00a0 The following is a sample of code used to tell the program which sensor is triggered<\/p>\n<p><code> while(true){&lt;br \/&gt;<br \/>\n v = TOUCH_SENSOR;&lt;br \/&gt;<br \/>\n if(      v &gt; 800 )  touch_sensor_state = 0;   \/\/nothing is happening&lt;br \/&gt;<br \/>\n else if( v &gt; 740 )  touch_sensor_state = 1;   \/\/left side&lt;br \/&gt;<br \/>\n else if( v &gt; 730 )  touch_sensor_state = 4;   \/\/back&lt;br \/&gt;<br \/>\n else if( v &gt; 705 )  touch_sensor_state = 2;   \/\/right side&lt;br \/&gt;<br \/>\n else if( v &gt; 580 )   touch_sensor_state = 3;   \/\/both left and right&lt;br \/&gt;<br \/>\n else                touch_sensor_state = 5;&lt;br \/&gt;<br \/>\n Wait(20); }\/\/give the CPU a break.&lt;br \/&gt;<br \/>\n <\/code><\/p>\n<p style=\"text-align: center;\"><a href=\"\/image\/trackerbot\/sensor_L.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"\/image\/trackerbot\/sensor_S.gif\" border=\"0\" alt=\"\" width=\"290\" height=\"217\" \/><\/a><\/p>\n<p>This is a close-up of the touch sensor wiring configuration.\u00a0 I included partly because I keep forgetting how to set them up every time I want to do this sort of thing.\u00a0 Well, now I can just refer to my site instead of scouring the web for the solution.\u00a0 The configuration shown is for 3 Cybermaster sensors. The idea is to wire them in parallel.\u00a0 Doing this will ensure that regardless of which sensor is triggered, the resistance will change and can be read.\u00a0 To determine the values for the above code (sample), connect each sensor, trigger each one separately (and in combination), writing down the readings.\u00a0 The readings vary depending on which order the sensors are connected (as they have different resistances).<\/p>\n<p style=\"text-align: center;\"><a href=\"\/image\/trackerbot\/cybermaster_touch_config_L.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"\/image\/trackerbot\/cybermaster_touch_config_S.gif\" border=\"0\" alt=\"\" width=\"289\" height=\"243\" \/><\/a><\/p>\n<p>This is the base of the robot showing the tracks and the line following light sensor.\u00a0 The base was built using a combination of studded and studless appraoches.\u00a0 Both track units are studless and modular.\u00a0 They are connected with several friction pegs and can be removed in a snap.\u00a0 The base is built using studdend technology.\u00a0 This allows for other components to be easily mounted.\u00a0 Reads &#8211; Lego has yet to come up with motors that will integrate well with studless beams.\u00a0 Reads further &#8211; give us some holes for friction pegs! \ud83d\ude42<\/p>\n<p style=\"text-align: center;\">The sensor has not been coded into the program as of yet.\u00a0 The general idea will be to have to robot do typical navigation and avoidance routines, and, if it comes across a black line, it will switch to line-following mode.<br \/>\n [ad name=&#8221;GoogleAS728x90&#8243;]<br \/>\n <a href=\"\/image\/trackerbot\/base_L.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"\/image\/trackerbot\/base_S.gif\" border=\"0\" alt=\"\" width=\"276\" height=\"183\" \/><\/a><\/p>\n<p>A side view of the base.\u00a0 This shows the non-Lego tracks at a closer view.\u00a0 They perform fairly well for traction and glide well in the wheel hubs shown.\u00a0 They are approx. 2x the size of standard Lego tracks which makes them well suited for cranes etc.\u00a0 I pulled them from a BattleBot set I got for next to nothing.\u00a0 The only problem is that, because of their size and length, it makes it particularly hard on the motors to turn the robot.\u00a0 The robot is geared with 12 to 24 wide gearing so that it can move relatively fast.\u00a0 I would recommend doubling up the motors on each side to give it more power.<\/p>\n<p style=\"text-align: center;\"><a href=\"\/image\/trackerbot\/base_side_L.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"\/image\/trackerbot\/base_side_S.gif\" border=\"0\" alt=\"\" width=\"265\" height=\"166\" \/><\/a><\/p>\n<p>Rate This Post: <span id=\"post-ratings-554\" class=\"post-ratings\" data-nonce=\"40fa4ce473\"><img decoding=\"async\" id=\"rating_554_1\" src=\"https:\/\/www.plastibots.com\/wordpress\/wp-content\/plugins\/wp-postratings\/images\/stars\/rating_off.gif\" alt=\"1 Star\" title=\"1 Star\" onmouseover=\"current_rating(554, 1, '1 Star');\" onmouseout=\"ratings_off(0, 0, 0);\" onclick=\"rate_post();\" onkeypress=\"rate_post();\" style=\"cursor: pointer; border: 0px;\" \/><img decoding=\"async\" id=\"rating_554_2\" src=\"https:\/\/www.plastibots.com\/wordpress\/wp-content\/plugins\/wp-postratings\/images\/stars\/rating_off.gif\" alt=\"2 Stars\" title=\"2 Stars\" onmouseover=\"current_rating(554, 2, '2 Stars');\" onmouseout=\"ratings_off(0, 0, 0);\" onclick=\"rate_post();\" onkeypress=\"rate_post();\" style=\"cursor: pointer; border: 0px;\" \/><img decoding=\"async\" id=\"rating_554_3\" src=\"https:\/\/www.plastibots.com\/wordpress\/wp-content\/plugins\/wp-postratings\/images\/stars\/rating_off.gif\" alt=\"3 Stars\" title=\"3 Stars\" onmouseover=\"current_rating(554, 3, '3 Stars');\" onmouseout=\"ratings_off(0, 0, 0);\" onclick=\"rate_post();\" onkeypress=\"rate_post();\" style=\"cursor: pointer; border: 0px;\" \/><img decoding=\"async\" id=\"rating_554_4\" src=\"https:\/\/www.plastibots.com\/wordpress\/wp-content\/plugins\/wp-postratings\/images\/stars\/rating_off.gif\" alt=\"4 Stars\" title=\"4 Stars\" onmouseover=\"current_rating(554, 4, '4 Stars');\" onmouseout=\"ratings_off(0, 0, 0);\" onclick=\"rate_post();\" onkeypress=\"rate_post();\" style=\"cursor: pointer; border: 0px;\" \/><img decoding=\"async\" id=\"rating_554_5\" src=\"https:\/\/www.plastibots.com\/wordpress\/wp-content\/plugins\/wp-postratings\/images\/stars\/rating_off.gif\" alt=\"5 Stars\" title=\"5 Stars\" onmouseover=\"current_rating(554, 5, '5 Stars');\" onmouseout=\"ratings_off(0, 0, 0);\" onclick=\"rate_post();\" onkeypress=\"rate_post();\" style=\"cursor: pointer; border: 0px;\" \/> (No Ratings Yet)<br \/><span class=\"post-ratings-text\" id=\"ratings_554_text\"><\/span><\/span><span id=\"post-ratings-554-loading\" class=\"post-ratings-loading\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.plastibots.com\/wordpress\/wp-content\/plugins\/wp-postratings\/images\/loading.gif\" width=\"16\" height=\"16\" class=\"post-ratings-image\" \/>Loading...<\/span>[ad name=&#8221;GoogleAS728x90&#8243;]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You would think I have a template for &#8220;room-navigating&#8221; robots&#8230; TrackerBot evolved from the recent PicoCam robot I created.\u00a0 After I had finished PicoCam, I decided I wanted to try something with tracks.\u00a0 TrackerBot and PicoCam share similar intelligence, with TrackerBot having some slight improvements.\u00a0 The general idea is that it will navigate a room using a variety of sensory input for obstacle avoidance.\u00a0 There are 3 Cybermaster touch sensors, 1 DIRP light sensor and &hellip; <a href=\"https:\/\/www.plastibots.com\/index.php\/2008\/12\/10\/554\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[18,3,5],"tags":[32,34,33],"class_list":["post-554","post","type-post","status-publish","format-standard","hentry","category-autonomous","category-legorobots","category-rcxrobots","tag-brickxcc","tag-dirpd-sensor","tag-rcx","has_no_thumb"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/sK41j-554","jetpack_sharing_enabled":true,"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/posts\/554","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/comments?post=554"}],"version-history":[{"count":0,"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/posts\/554\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/media?parent=554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/categories?post=554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.plastibots.com\/index.php\/wp-json\/wp\/v2\/tags?post=554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}