Hello. I have already made a robotic arm controlled by arduino wia C# program with sliders. But now, I would like that my robotic arm see object on the table and take it and move without my help. The main problem is - How I can start to do this? Because I am new in this sitution. Any suggestions? Making a webcam take a photo, analyze it and send a command to robotic arm to work or something like that.
Please, share your experience and take me on the right way.
binfazen:
Hello. I have already made a robotic arm controlled by arduino wia C# program with sliders. But now, I would like that my robotic arm see object on the table and take it and move without my help. The main problem is - How I can start to do this? Because I am new in this sitution. Any suggestions? Making a webcam take a photo, analyze it and send a command to robotic arm to work or something like that.
Please, share your experience and take me on the right way.
Thank you for answering
Do you have joint angle sensors on your robot? If not, you need to add those.
Do you have a sensor on the gripper to know when it is gripping something? If not, you need to add that.
Basically, your arm (and the gripper) needs to know where it is and whether it is grasping anything; that is the point of the sensors. Knowing the angles of all of the joints, along with the lengths of the arm segments (you'll have to measure those), you can know where in the arm's reach volume the gripper is positioned. This is the starting point. You would then need some way to locate the object to grasp; this will be the "end point". IK and an "arm solution" can then be used to know how to guide the arm from the start point to the end point.
Note that points 3 and 4 above (ie, IK and Arm Solutions) are not trivial things to learn or solve. What is your mathematical level of knowledge? Expert level on algebra, trig, and geometry will be needed to start with.
Note that I haven't said much about how to get a camera system working to figure out where the object is withing the volume of the arm's reach. Compared to IK and Arm Solutions, though, building such a system is a walk in the park.
I am not trying to dissuade you from implementing such a system. Instead, I am wanting to impart to you that this kind of work is something that has occupied robotics researchers in both academia and industry for several decades. Only in about the past 10 years have things actually started getting better in the understanding of what is needed, based on what I have read (much of the advancement has come due to low cost and more powerful CPUs - this isn't likely to be something that can be done standalone on an Arduino). I am not an expert on any of this, by far; but based on my understanding of the subject, it isn't something that is easy to implement.
You'll probably want to take two pictures with the camera in two separate, defined locations in order to give the robot depth perception.
If the object and environment is well-defined (e.g. a red ball on a white background) you can probably identify it reasonably easily with a simple program searching the image for (e.g.) red pixels. If not, you're going to need to perform image recognition using a library like OpenCV. Pretty powerful library but lots of learning required.