Hi,
With some breaks I've been working towards an application for my robot where I want to position holes/locations in a product to a specific point in space. I've been digging around and i'd like to check that what I'm trying to do is possible at all, and I hope somebody can confirm if i'm on the right track and if needed nudge me into the right direction. While I've got multiple questions, these all have a common cause, therefore I hope it's OK to pose them all together.
I've made a 4DOF robot where I will pick up different products and bring the holes in that product to a location where a tool will add a feature to that hole. The product cannot be rotated in it's own plane (around its frame z-axis). I would like to position these holes to a specified location one by one. Preferably with Python.
I've made a the [robot moveit package](https://github.com/luminize/matilda_moveit_config) and [a robot_support package](https://github.com/luminize/matilda_support) Below a simple representation:

After a lot of searching I think I have 2 possible solutions:
- Add a `hole` frame to my `tool0` frame of the end-effector, make that the tip of my kinematics chain and have moveit plan that frame to the specified location.
- I could generate a new tool for each product (with a frame at each hole location) and load them with different launch files, but that would give me a new tool for each new product i want to handle and I'm not sure I want the burden of maintaining all those tools.
One hurdle I encounter at trying to position the end effector (just the robot end effector, no extra frames/product) to a point in space with the ros_commander python api is that I can't get the plan to succeed (I try to follow [the moveit tutorial](http://docs.ros.org/hydro/api/pr2_moveit_tutorials/html/planning/scripts/doc/move_group_python_interface_tutorial.html) example).
[link to gist of plan.py](https://gist.github.com/luminize/795ca34fc93e0e57fc70cfe694ab2ce4)
[link to terminal output](https://gist.github.com/luminize/f3cc5470ce905cdd998bbad428c4982a)
but I get errors telling me the plan isn't solvable.
[ INFO] [1493551548.788745043]: Planning request received for MoveGroup action. Forwarding to planning pipeline.
[ INFO] [1493551548.859191599]: Planner configuration 'manipulator[RRTkConfigDefault]' will use planner 'geometric::RRT'. Additional configuration parameters will be set when the planner is constructed.
[ INFO] [1493551548.859571195]: manipulator[RRTkConfigDefault]: Starting planning with 1 states already in datastructure
[ INFO] [1493551558.859673954]: manipulator[RRTkConfigDefault]: Created 114272 states
[ INFO] [1493551558.859745128]: No solution found after 10.000228 seconds
[ INFO] [1493551558.869263246]: Unable to solve the planning problem
[ INFO] [1493551558.987668538]: Planning request received for MoveGroup action. Forwarding to planning pipeline.
[ INFO] [1493551559.063110536]: Planner configuration 'manipulator[RRTkConfigDefault]' will use planner 'geometric::RRT'. Additional configuration parameters will be set when the planner is constructed.
[ INFO] [1493551559.063482002]: manipulator[RRTkConfigDefault]: Starting planning with 1 states already in datastructure
[ INFO] [1493551569.063481304]: manipulator[RRTkConfigDefault]: Created 111517 states
[ INFO] [1493551569.063716649]: No solution found after 10.000282 seconds
[ INFO] [1493551569.081697521]: Unable to solve the planning problem
I guess that's because I cannot get to that position because the robot only has 4 DOF and cannot rotate the part. I've been searchin a lot and I've got a lot pieces of the puzzle, but some final pieces seem missing yet.
planning to a pose consisting of joint values work btw.
pose_1 = [1.9, 0.785, -0.785, -1.57]
group.set_joint_value_target(pose_1)
plan3 = group.plan()
group.go()
moves the robot as expected
My questions in a nutshell:
- Is this 4DOF type of planning of a frame to cartesian coordinates possible at
all?
- If I need to provide the exact
position of the end effector frame (so also
roll/pitch/yaw) for the product ens position, which knowledge/info/examples do I need
to consume to implement that.
- regarding planning with just the
stock robot (no tools on the end
effector) I could add 2 extra DOF to
the tip of the end-effector, with
zero length links. Would that be a
satisfactory setup to get solutions?
- If I were to generate (from CAD) a
new tool for each new product. Is
there a way to switch tools at
run-time instead of in my launch file? Where should I look for
further info regarding that.
- As an alternative, can I change link
lenghts of the loaded URDF at
run-time?
- I know how to add a frame to the
`tool0` frame of my robot, but It
does not seem to be a frame I can use
for planning purposes because while
it is viewable in Rvis (add tf
plugin) it does not show up in the
moveit kinematics chain. Is there a
way to add and remove links from the
kinematics chain? Where do I need to
look
Thanks in advance,
Regards,
Bas
↧