Skip to content

DOCS-4036: Add more frame and geometry content, remove arm no code #4411

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

Merged
merged 22 commits into from
Jul 31, 2025

Conversation

JessamyT
Copy link
Contributor

@JessamyT JessamyT commented Jun 24, 2025

Copy link

netlify bot commented Jun 24, 2025

Deploy Preview for viam-docs ready!

Name Link
🔨 Latest commit 5bf8728
🔍 Latest deploy log https://app.netlify.com/projects/viam-docs/deploys/688bcd4ff8c6e400081aefc0
😎 Deploy Preview https://deploy-preview-4411--viam-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 50 (🟢 up 10 from production)
Accessibility: 100 (no change from production)
Best Practices: 100 (no change from production)
SEO: 92 (no change from production)
PWA: 70 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@viambot viambot added the safe to build This pull request is marked safe to build from a trusted zone label Jun 24, 2025
Copy link
Contributor

@HipsterBrown HipsterBrown left a comment

Choose a reason for hiding this comment

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

A couple of open questions, no real blockers. Overall this will be a very helpful resource!

I do wonder if we'll eventually need a dedicated page for the Viz tab as more useful functionality is added.

Comment on lines 56 to 66
You can think of it like this: The z-axis of the arm's origin frame is parallel to the z-axis of the world frame, and the origin of the arm's origin frame is in the same place as the origin of the world frame.

If you want to define the world frame as the corner of the table, leave the default values for now, and continue to the next step so that you know which way `x` and `y` point and can edit the configuration accordingly.

1. Click **Save**.

By configuring your arm's frame like this, you have now defined the world frame as the same as the arm's base frame.

### Figure out which way the arm's axes point

The arm's base frame is now the world frame, but you do not know which way the x, y, and z axes of the arm frame point, unless you happen to be familiar with the arm's [kinematics file](/operate/reference/kinematic-chain-config/).
Copy link
Contributor

Choose a reason for hiding this comment

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

This selection of text references both the arm's "origin frame" and "base frame". These are the same thing, correct? Should we stick with just one of these names or explain the different if there is one?

It's my understanding that that origin/base frame for an arm is references the first link (usually called a base link) in the kinematics chain, which typically aligns with the world. This is opposed to the end-effector frame when configuring a component like a gripper or camera frame in reference to a parent arm. I could be incorrect in my understanding though.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah I was using them interchangeably, but after talking to Peter offline, sounds like I should just say "origin frame" and remove all mentions of "base frame" since that's creating a separate term for the same thing.

I'd originally wanted to use "base frame" because I don't like saying "the origin of the origin frame," but I guess "base frame" could sound like the frame of a mobile base.

1. If the directions do not match your intended world frame, you can edit the arm's `orientation` field to rotate the arm frame to match your intended world frame.
For example, if the arm's x-axis points to the right, but you want it to point to the left, you can set the `orientation` field to `"x"=0, "y"=0, "z"=1, "th"=180`.

1. For your reference, mark the X, Y, and Z axes of the world frame on your workspace with tape or a marker.
Copy link
Contributor

Choose a reason for hiding this comment

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

It would be great to follow up with a picture of how to mark this as an example. Not a blocker.

Copy link
Collaborator

@npentrel npentrel left a comment

Choose a reason for hiding this comment

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

Looks pretty good, a few small questions but mostly probably leaving this to SMEs


## Other ways to define the world frame

If none of your components are fixed in place, it might make sense to define the world frame as the frame of the first component you add to your robot, for example, the mobile base.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I think this should probably be earlier on this page when we talk about determining the world frame. Otherewise I have to get through a lot of info that may not suit me and I don't know that I need to get to this header. Maybe the header should be something about Mobile machines/robots ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Okay I'll change the header. However this is a less-well-supported case so I don't know that we want to highlight; see latest wording suggestion for why ^

All other coordinate frames (such as machine frames and component frames) are defined relative to this world frame, either directly or through a chain of transformations.

The user chooses the world frame, and defines it implicitly.
For example, if you have a robot arm mounted on a table and you define the arm's base frame as the world frame, then the arm's base frame is the origin of the world frame.
Copy link
Member

Choose a reason for hiding this comment

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

you define the arm's base frame as the world frame

I dislike the active voice here. The world frame already exists, you just parent components to it.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

But in this case we're actually talking about defining the arm's frame, not the world frame, so I think this is different from what we talked about offline. Ill fix base -> origin though

Copy link
Member

@raybjork raybjork left a comment

Choose a reason for hiding this comment

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

Overall new content looks great

Copy link
Member

@EshaMaharishi EshaMaharishi left a comment

Choose a reason for hiding this comment

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

Looks good! Left a few minor comments

@JessamyT JessamyT requested a review from npentrel July 31, 2025 16:21
All other coordinate frames (such as machine frames and component frames) are defined relative to this world frame, either directly or through a chain of transformations.

The user chooses the world frame, and defines it implicitly.
For example, if you have a robot arm mounted on a table and you define the arm's origin frame as having no translation or orientation relative to the world frame, then the arm's origin frame is the origin of the world frame.
Copy link
Collaborator

Choose a reason for hiding this comment

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

[opt] I think worth putting here too

Suggested change
For example, if you have a robot arm mounted on a table and you define the arm's origin frame as having no translation or orientation relative to the world frame, then the arm's origin frame is the origin of the world frame.
For example, if you have a robot arm mounted on a table and you define the arm's origin frame as having no translation or orientation relative to the world frame, then the arm's origin frame is the origin of the world frame.
For more information, see [How the frame system works](/operate/reference/services/frame-system/#how-the-frame-system-works).

@JessamyT JessamyT merged commit a536cb0 into viamrobotics:main Jul 31, 2025
12 checks passed
@JessamyT JessamyT deleted the 4036motion branch July 31, 2025 21:16
Copy link

🔎💬 Inkeep AI search and chat service is syncing content for source 'Viam Docs'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
safe to build This pull request is marked safe to build from a trusted zone
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants