A system was developed to maintain an approximate distance between an end-effector and a surface. The effector is part of a robotic arm system with two servo actuated joints in the arm, though only one is used to adjust position. A sonar distance sensor is mounted on the end-effector, which maintains a constant planar angle with respect to the ground through mechanical links. The code was designed to be simple, made for exposition rather than performance. A 10 mm (+/- 5 mm) hysteresis window and measurement averaging (5 point) was used to get rid of noisy measurements and unneeded actuation.
It performed better than I expected after some simple tweaks to angle adjustment values, delays, and hysteresis width, maintaining distances to surfaces and some objects as they moved. I expect to be able to use a similar algorithm to control end-effector height and distance to relatively large objects instead of having to use kinematics (reverse kinematics).
Many improvements could be made, including (but not limited to) the following:
Code is here: https://github.com/tyblu/comp444-random/blob/master/robot_arm_assign2_extra/robot_arm_assign2_extra.ino
YouTube video link: https://goo.gl/hxeEBs
Note: The study guide states an assignment (#2) requirement not covered by units 3 and 4: "Working examples will include employing actuators to interact with the environment as well as using sensors to complete an assigned task." The preceeding example fulfills this requirement.
The Landing is a social site for Athabasca University staff, students and invited guests. It is a space where they can share, communicate and connect with anyone or everyone.
Unless you are logged in, you will only be able to see the fraction of posts on the site that have been made public. Right now you are not logged in.
If you have an Athabasca University login ID, use your standard username and password to access this site.
We welcome comments on public posts from members of the public. Please note, however, that all comments made on public posts must be moderated by their owners before they become visible on the site. The owner of the post (and no one else) has to do that.
If you want the full range of features and you have a login ID, log in using the links at the top of the page or at https://landing.athabascau.ca/login (logins are secure and encrypted)
Posts made here are the responsibility of their owners and may not reflect the views of Athabasca University.
Comments
Hi Tyler. Great robotic arm. Very sophisticated. Sonar is a sound wave to detect distances. I wonder if all distance sensors work on sonar or if you chose it for a specific reason.
Why do you want the robotic hand to repel from surfaces?
I believe the hand will grasp items ... maybe at a set distance higher than a surface. How will you figure the grasping in?
Awesome robot.
I don't actually want the arm to stay away from all surfaces. A method similar to this will keep the end-effector from bumping into large objects and the 'floor', and to scan an area to figure out where objects are. This blog post was to fulfill one of the requirements in assignment 2. Though I will first have this gizmo pick up a standard object at a set location, I may get it to look for various objects within an area, figure out if any of them are small and isolated enough (claw won't knock into other objects), then attempt to grab one of them and move it to another standard location or area.
There are many types of distance sensors, though sonar is pretty great for how cheap it is. Runner-up is infrared (see [link] for examples). The cheap versions of these technologies use time-of-flight to determine distance. (Phase difference is used in other arrangements of similar tech. Some motion sensors, which could tell you the distance to something with the right sensor arrangement, is often done with changes in infrared intensity.) I think Mataric goes through several distance sensors.
I looked at your code. Nice and lean. I feel encouraged that it didn't take a hundred pages of sketches to make that arm move.