Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add 'base' coordinate system link to URDFs #95

Closed
gavanderhoorn opened this issue Aug 27, 2014 · 9 comments
Closed

Add 'base' coordinate system link to URDFs #95

gavanderhoorn opened this issue Aug 27, 2014 · 9 comments

Comments

@gavanderhoorn
Copy link
Member

As discussed in ros-industrial/ros_industrial_issues#24.

@gavanderhoorn
Copy link
Member Author

I've recently done this myself, and I've got values that work. For base, only a rotation over Z wrt base_link is required, as the meshes in ur_description seem to have their origins rotated when compared with the real robot.

Should the meshes perhaps be updated? Then the base coordinate frame would be coincidental with base_link and things would be much more transparent.

Same goes for tool0.

@fmessmer
Copy link
Contributor

@abubeck has done this, too....umpf....
Could both of you create PullRequests?

@gavanderhoorn
Copy link
Member Author

@ipa-fxm wrote:

@abubeck has done this, too [..]

I know, I spoke with him, but his branch uses even more rotations. There is only one needed, but even that one can be made unnecessary if we 'fix' the meshes (and thus the orientation of base_link).

@gavanderhoorn
Copy link
Member Author

#49 (Add tool0 to URDFs) is also related.

@gavanderhoorn
Copy link
Member Author

I think it would make sense to just rotate the base_link link pi rad over Z, then rotate the visual and collision geometry -pi to compensate. The base frame can then be coincident with base_link, no rotations needed anymore.

We can rotate the meshes later then.

@fmessmer
Copy link
Contributor

Well, one thing that needs to be considered about your proposed solution is the following:
UR robots are also used in composition with e.g. mobile platforms (e.g. Fraunhofer IPA's rob-@-work) or within environments. They also might exist in composition with tools/grippers attached in ROS. Thus, rotating the base_link in the ur_description will change all those setups!

What we did in @abubeck's solution is add new links base0 and tool0 like this:
base_link ->TransBase1 -> base0 ->TransBase2 -> other_ur_links -> TransTool1 -> tool0 -> TransTool2 -> arm_ee_link, where TransXXX are correctly set origins within additional fixed joints....

You can find it here...but I think that file was still rather WIP than final....

However, by "squeezing"-in base0 and tool0, you keep ROS-URDF-compatibility for arms mounted to platforms/environments as well as with endeffectors mounted to the arm while still having the chance to get UR-conform transformations from base0 to tool0 using frames identical with those used within the UR controller!

@gavanderhoorn
Copy link
Member Author

I forgot about bw compatibility, you're right.

I do not believe there is any reason to include base and tool0 in the kinematic chain though. tool0 will probably be the tip of the chain but doesn't have to be (to maintain bw compat again), and base can be an extra leaf frame, child of base_link. That is how it has been done in all other ros-i support pkgs.

base_link -> rest_of_chain -> wrist_3_link -> ee_link
|                             |
 -> base                       -> tool0

That should keep everything bw compat, while adding the new frames in the places where they should be with the proper orientations. We would also not have to update the MoveIt configs like this.

I do still believe that the meshes will have to be fixed though, but that is something that can then be done in K-turtle fi.

gavanderhoorn added a commit to gavanderhoorn/universal_robot that referenced this issue Apr 22, 2015
ros-industrial#95.

Note that 'base' is essentially 'base_link' but rotated by 180
degrees over the Z-axis. This is necessary as the visual and
collision geometries appear to also have their origins rotated
180 degrees wrt the real robot.

'tool0' is similar to 'ee_link', but with its orientation such
that it coincides with an all-zeros TCP setting on the UR
controller. Users are expected to attach their own TCP frames
to this frame, instead of updating it (see also [1]).

[1] http://wiki.ros.org/Industrial/Tutorials/WorkingWithRosIndustrialRobotSupportPackages#Standardised_links_.2BAC8_frames
@gavanderhoorn
Copy link
Member Author

See also #80.

abubeck added a commit that referenced this issue May 18, 2015
Fix for issues #49 and #95: ros-i compatible base and tool0 frames
@fmessmer
Copy link
Contributor

done in #200. closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants