Skip to content

Add UR12e support#220

Open
Joseph Borodach (JosephBorodach) wants to merge 2 commits into
viam-modules:mainfrom
JosephBorodach:add-ur12e-support
Open

Add UR12e support#220
Joseph Borodach (JosephBorodach) wants to merge 2 commits into
viam-modules:mainfrom
JosephBorodach:add-ur12e-support

Conversation

@JosephBorodach

@JosephBorodach Joseph Borodach (JosephBorodach) commented Jun 25, 2026

Copy link
Copy Markdown

Adds viam:universal-robots:ur12e, mapping to URCL's UR10 category. Kinematics from UR's official ROS2 description (config/ur12e/default_kinematics.yaml).

Manual Testing

Validated against a real UR12e

@JosephBorodach
Joseph Borodach (JosephBorodach) marked this pull request as draft June 25, 2026 14:23
@JosephBorodach

Copy link
Copy Markdown
Author

@JosephBorodach
Joseph Borodach (JosephBorodach) marked this pull request as ready for review June 25, 2026 21:21

@nfranczak Nick Franczak (nfranczak) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please perform the following check

  1. get the kinematics from the robot through a client script
  2. perform forward kinematics (if you're using golang this is model.transform on some inputs)
  3. get the current end effector postion through the arm api
  4. calculate the delta
    delta should be on the order of 1-500 microns for position

{"base_link", "wrist_3_link", "shoulder_link", "forearm_link", "upper_arm_link", "wrist_1_link", "wrist_2_link"}});
// URCL maps "ur12e" to RobotType::UR10 (per URCL helpers.h), so the
// urcl_category here is "ur10".
t.push_back({"ur12e", "ur10", {}});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

third list cannot be empty.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thought about it, I think that it can be empty since the get3d models endpoint is not implemented for this arm model as it is new.

please file a ticket as a todo and add it as a comment here that the third list will need to be updated the day that the relevant glbs are added.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JohnN193 - Curious for your take on this. If UR10 is the "real" model, should all of this be getting placed in under a UR10 identifier then we just map ur12e to that? I can't remember exactly what the desired arrangement would be.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the current setup matches what we did for the ur5e & ur7e. technically the geometry might be different, but i haven't looked into how different it will be

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking closer at the UR's ros descriptions it does seem like they just reuse the ur5e/ur10e, so maybe we should just treat this all as a ur10

@acmorrow

Copy link
Copy Markdown
Contributor

Joseph Borodach (@JosephBorodach) - Could you please file a ticket for this, so that we can track what release support lands in?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This LGTM when Nick Franczak (@nfranczak) is happy with it. Please do file a ticket, and include the ticket on the commit message like [RSDK-ABCDE] Add UR12e support.

@nfranczak

Copy link
Copy Markdown
Contributor

lets also add a urdf file for the ur12e

@JosephBorodach

Joseph Borodach (JosephBorodach) commented Jul 17, 2026

Copy link
Copy Markdown
Author

Joseph Borodach (Joseph Borodach (@JosephBorodach)) - Could you please file a ticket for this, so that we can track what release support lands in?

https://viam.atlassian.net/browse/RSDK-14278?atlOrigin=eyJpIjoiNWZmZDY0Mjk0MGVlNGFjZGIzMDNjZmFlNzRkZjRiOGUiLCJwIjoiaiJ9

{"base_link", "wrist_3_link", "shoulder_link", "forearm_link", "upper_arm_link", "wrist_1_link", "wrist_2_link"}});
// URCL maps "ur12e" to RobotType::UR10 (per URCL helpers.h), so the
// urcl_category here is "ur10".
// TODO(RSDK-XXXXX): populate the mesh-link list here once ur12e GLBs

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can now say RSDK-14279

Comment thread meta.json
@@ -0,0 +1,40 @@
{

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file should be getting generated, not checked in.

Comment thread src/kinematics/ur12e.json
@@ -0,0 +1,250 @@
{

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the provenance of this file / the values it contains?

Comment thread src/kinematics/ur12e.urdf
@@ -0,0 +1,222 @@
<?xml version="1.0" ?>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the provenance of this file / the values it contains?

{"base_link", "wrist_3_link", "shoulder_link", "forearm_link", "upper_arm_link", "wrist_1_link", "wrist_2_link"}});
// URCL maps "ur12e" to RobotType::UR10 (per URCL helpers.h), so the
// urcl_category here is "ur10".
t.push_back({"ur12e", "ur10", {}});

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JohnN193 - Curious for your take on this. If UR10 is the "real" model, should all of this be getting placed in under a UR10 identifier then we just map ur12e to that? I can't remember exactly what the desired arrangement would be.

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

Successfully merging this pull request may close these issues.

4 participants