Arm Component
The arm component provides an API for linear motion planning, including self-collision prevention and obstacle avoidance.
If you have a physical robotic arm, consisting of a serial chain of joints and links, with a fixed end and an end effector end, use an arm component.
Arms have two ends: one fixed in place, and one with a device you can position. When controlling an arm, you can place its end effector at arbitrary cartesian positions relative to the base of the arm.
Configuration
To use a robotic arm, you need to add it to your machine’s configuration. Go to your machine’s CONFIGURE page, and add a model that supports your arm.
The following list shows the available arm models. For additional configuration information, click on the model name:
Add support for other models
If none of the existing models fit your use case, you can create a modular resource to add support for it.
You can follow this guide to implement your arm model.
Support Notice
There is currently no support for this component in viam-micro-server
.
API
The arm API supports the following methods:
Method Name | Description |
---|---|
GetEndPosition | Get the current position of the arm as a pose. |
MoveToPosition | Move the end of the arm in a straight line to the desired pose, relative to the base of the arm. |
MoveToJointPositions | Move each joint on the arm to the position specified in positions . |
MoveThroughJointPositions | Move the arm’s joints through the given positions in the order they are specified. |
GetJointPositions | Get the current position of each joint on the arm. |
GetKinematics | Get the kinematics information associated with the arm as the format and byte contents of the kinematics file. |
IsMoving | Get if the arm is currently moving. |
Stop | Stop all motion of the arm. |
GetGeometries | Get all the geometries associated with the arm in its current configuration, in the frame of the arm. |
Reconfigure | Reconfigure this resource. |
DoCommand | Execute model-specific commands that are not otherwise defined by the component API. |
GetResourceName | Get the ResourceName for this arm with the given name. |
Close | Safely shut down the resource and prevent further use. |
Motion planning with your arm
The arm API sends requests for the arm to move to a set of joint positions, and reports the arm’s current joint positions. Viam’s motion service provides an API for moving the end of the arm to a given position, around any obstacles.
For each arm model, there is a JSON file that describes the kinematics parameters of the arm. When you configure an arm model, the arm driver parses the kinematics file for the frame system service to use. The frame system allows the motion service to calculate where any component of your machine is relative to any other component, other machine, or object in the environment.
Troubleshooting
If your arm is not working as expected, follow these steps:
- Check your machine logs on the LOGS tab to check for errors.
- Review your arm model’s documentation to ensure you have configured all required attributes.
- Click on the TEST panel on the CONFIGURE or CONTROL tab and test if you can use the arm there.
If none of these steps work, reach out to us on the Community Discord and we will be happy to help.
Next steps
For general configuration, development, and usage info, see:
You can also use the arm component with the following services:
- Motion service: To move machines or components of machines
- Frame system service: To configure the positions of your components
Was this page helpful?
Glad to hear it! If you have any other feedback please let us know:
We're sorry about that. To help us improve, please tell us what we can do better:
Thank you!