{"id":140,"date":"2021-10-11T05:58:20","date_gmt":"2021-10-11T05:58:20","guid":{"rendered":"https:\/\/wimblerobotics.wimble.org\/wp\/?p=140"},"modified":"2021-10-11T05:58:20","modified_gmt":"2021-10-11T05:58:20","slug":"puck-status-for-october-10-2021","status":"publish","type":"post","link":"https:\/\/wimblerobotics.wimble.org\/wp\/2021\/10\/11\/puck-status-for-october-10-2021\/","title":{"rendered":"Puck status for October 10, 2021"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">It\u2019s been a long slog trying to get reliable recordings of the important sensors and other bits of data from the robot.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I need these recordings so I can, say, drive around the house and record the proximity sensors, odometry and LIDAR as, together, they reflect what is around the robot as it moves. Then I can work on my software that tries to determine where the robot is in the house, where it is trying to get to, and computes a plan for getting there as the world changes around it.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s not practical to try to debug complex software by trying to repeatedly drive the robot around the house on the same path, there are too many variables that will never be quite the same from run to run. And the battery discharges over time and there are only so many recharges I can make to the expensive battery. But by playing back the gathered data from one run over and over, I can pause where I need to and look at why my software isn\u2019t quite doing what I expected.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019ve mentioned in the past that ROS2\u2019s recording system (rosbag2) is unreliable, at least so far, and lacks features I want, at least so far. I\u2019m pretty sure that ROS2 will eventually be \u201cgood enough\u201d, but that\u2019s months or years in the future. Meanwhile, as has been for my whole life, I\u2019m limited by my mortality.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unfortunately, the state of hobby robotics today, right now, is that you have to build everything yourself. Oh, you can start further up the ladder and spend money to buy a better base, better sensors, faster computers, a better starting position. But the problems are many and the existing solutions are few, specialized and brittle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The way I tackle any complex problem is to try to reduce the problem to a sub problem that is just out of reach of what I can do today. Then I build what I know and understand, and then work on that little bit more that gets me a solution to that \u201cjust out of reach\u201d problem. Then I go on to the next sub problem that is just out of reach but on the path towards being the real problem I need to solve.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puck is intended to transport a robot gripper around the house, to find and fetch something, and move that something to a different place. Many people working on hobby robots call this the \u201cfetch a can of beer from the refrigerator\u201d problem, which is a fair goal for a hobby robot. Mind, for me it\u2019s sufficient that the robot moves from some place reasonably far away from that \u201ccan of beer\u201d which might actually be a colored block to start, maybe on a table to start with rather than in a refrigerator, recognize the can, grab the can, pick it up and move it to some other predefined place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I don\u2019t have a gripper yet. I\u2019ve got ideas about how to build one, and friends who have offered to help me get something working. But gripping things isn\u2019t the next \u201cjust out of reach problem\u201d I need to solve just yet. Baby steps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Over the past few years, as I\u2019ve tried to learn robotics and build a real robot, I have been building ever more complex robots that get ever nearer that can-grabbing robot. But everything about robots is hard.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, my robot, as of today, pumps out 400 sonar samples a second and 800 laser, time-of-flight samples a second. Getting that information from the computer that reads those sensors to the computer that reacts to the data has been a real problem.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I was at the point where I was getting all that data successfully transferred, then I added \u201cjust one more\u201d thing to the mix and only half the data was being transferred. Why? I don\u2019t know yet. And when I tried to add in \u201cjust one more sensor\u201d to the mix, the whole thing blew up. Why? I don\u2019t know yet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But I can capture some data and play it back. And it sort of works. Something is missing in the \u201ctransform tree\u201d yet so the whole magic isn\u2019t working yet, but I\u2019ll get there. Slowly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But it\u2019s a long slog, because everything about robots is hard.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It\u2019s been a long slog trying to get reliable recordings of the important sensors and other bits of data from the robot.&nbsp; I need these recordings so I can, say, drive around the house and record the proximity sensors, odometry and LIDAR as, together, they reflect what is around the robot as it moves. Then&hellip; <a class=\"more-link\" href=\"https:\/\/wimblerobotics.wimble.org\/wp\/2021\/10\/11\/puck-status-for-october-10-2021\/\">Continue reading <span class=\"screen-reader-text\">Puck status for October 10, 2021<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[10,13,16],"class_list":["post-140","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-puck","tag-rosbag2","tag-status","entry"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/posts\/140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":1,"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/posts\/140\/revisions"}],"predecessor-version":[{"id":141,"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/posts\/140\/revisions\/141"}],"wp:attachment":[{"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/media?parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/categories?post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wimblerobotics.wimble.org\/wp\/wp-json\/wp\/v2\/tags?post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}