Make robot arm able to pick products
jramadeu opened this issue · comments
On #116 I'm facing some problems with v-rep scene when I try to pick a product.
In the scene warehouse_turtlebot2i_v3_recharge.ttt we have the following issues:
the dynamic masks configuration make possible a dynamic interaction between the robot arm and shelf bounding box[solved]- the shelf layout make the pick task hard.
-- here, I guess the previous kuka robot had a smaller tool to execute pickup - the products dynamic's is disable to save processing power. Is this making the arm unable to grasp the product?
Hi @jramadeu , commenting on those questions:
-
the shelf layout make the pick task hard.
Yes, it worked with youbot, but we can change the shelf to be better suited for the new robot. -
the products dynamic's is disable to save processing power. Is this making the arm unable to grasp the product?
True, there was a script in the scene that disabled products' dynamics if they are not being manipulated
I'm working on this issue in branch "make_product_pickable" (still local).
Which script(s) are you @jramadeu running to create products on the shelves, move the robot and attempt the picking?
-
To create products on shelves: there is a script on the scene warehouse_turtlebot2i_v3_recharge_2.ttt on branch issue-116. On this scene a childscript on the shelf shape do this job.
-
To move the robot: I'm working on this on branch issue-116. You need to execute the script plan_interpreter.py inside turtlebot_warehouse/src.
-
The above mentioned script also manage the picking.
I suggest you to control the robot via V-REP while you're debugging on this task. The branch issue-116 is not stable, but if you want to use it I can help you.
@jramadeu ,
I've modified the scene "warehouse_turtlebot2i_v3_recharge.ttt" as follows:
- Modified Shelf to fix bounding box issue
- Modified Shelf to make it easier to access with robot arm.
- Externalized ShelfBody script to turtlebot2i_ShelfBody.lua file.
- Resized product boxes so the gripper can pick them.
- Made product boxes always dynamic for now (in time I'll take another look at it on how to use the previous feature that disabled their dynamics when not needed in order to save processing power)
Modifications are available at the following branch:
make_product_pickable
Could you please take a look at it before we attempt merging them to master?
@klaus, I've tried as much as possible to make the pick stable and I failed miserably. The arm can interact with the product, but when it picks the product usually the product slips or the arm gets quite unstable.
Another note: when the robot is centralized with a shelf, perfectly in front of product red, is quite hard for the hard to grasp product green or yellow. This happen due to a DOF limitation.
How can we solve this issue? Modifying the scene or make the robot move to a better position to pick products in this situation
@jramadeu on the previous scene (with the youBot) we would move the robot`s base to a better pose to pick up the object. As such, the arm movement would be the same, regardless of the object, but for each type we would have a specific pose for the pick operation.
the arm movement would be the same, regardless of the object
Sometimes I fell like moveit it's a overkill for our scenario
the arm movement would be the same, regardless of the object
Sometimes I fell like moveit it's a overkill for our scenario
For our toy problem scenario that is probably the case. But since we are striving at having something as generic as possible that can be applied to other scenarios, having it working seems good investment.
@jramadeu ,
I just made a bunch of modifications to the scene and its scripts. They are at branch make_product_pickable
Major changes:
- Altered Turttlebot's gripper to have movement of both pieces.
- They are now controlled by joint 5.;
- Externalized the corresponding script to a lua file;
- Implemented mechanism that adds picked up product to gripper's body in order to circunvent some limitations with the solver that let to instabilities;
- Todo: write code to avoid full closure of gripper;
- Todo: re-enable script to disable products' dynamics when not needed to save processing
Still have a few things to do in it, but I believe they help with making the pick operation more stable and reliable.
Let's take a look at it together this week.