-
Notifications
You must be signed in to change notification settings - Fork 48
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
Conversation
✅ Deploy Preview for viam-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this 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.
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/). |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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.
There was a problem hiding this 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. |
There was a problem hiding this comment.
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 ?
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
Co-authored-by: Naomi Pentrel <[email protected]>
There was a problem hiding this 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
Co-authored-by: Naomi Pentrel <[email protected]>
There was a problem hiding this 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
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. |
There was a problem hiding this comment.
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
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). |
🔎💬 Inkeep AI search and chat service is syncing content for source 'Viam Docs' |
Uh oh!
There was an error while loading. Please reload this page.