Configure a Multi-Axis Gantry
Configure a multi-axis
gantry to integrate a gantry made up of multiple single-axis
gantries into your machine.
First, physically assemble the gantry and connect it to your machine’s computer. Power both on. Next, configure each single-axis gantry that is part of the muti-axis gantry. Then, configure the multi-axis gantry:
Navigate to the CONFIGURE tab of your machine’s page in the Viam app.
Click the + icon next to your machine part in the left-hand menu and select Component.
Select the gantry
type, then select the multi-axis
model.
Enter a name or use the suggested name for your gantry and click Create.
Fill in the attributes as applicable to your gantry, according to the table below.
{
"components": [
... // < INSERT YOUR MOTOR AND SINGLE-AXIS GANTRY CONFIGURATIONS >
{
"name": "<your-fake-gantry-name>",
"model": "multi-axis",
"type": "gantry",
"namespace": "rdk",
"attributes": {
"subaxes_list": [
"<xaxis-name>",
"<yaxis-name>",
"<zaxis-name>"
]
},
"depends_on": []
}
]
}
{
"components": [
{
"name": "local",
"model": "pi",
"type": "board",
"namespace": "rdk"
},
{
"name": "xmotor",
"model": "gpiostepper",
"type": "motor",
"namespace": "rdk",
"attributes": {
"board": "local",
"pins": {
"dir": "11",
"pwm": "13",
"step": "15"
},
"stepperDelay": 50,
"ticksPerRotation": 200
}
},
{
"name": "ymotor",
"model": "gpiostepper",
"type": "motor",
"namespace": "rdk",
"attributes": {
"board": "local",
"pins": {
"dir": "16",
"pwm": "18",
"step": "22"
},
"stepperDelay": 50,
"ticksPerRotation": 200
}
},
{
"name": "zmotor",
"model": "gpiostepper",
"type": "motor",
"namespace": "rdk",
"attributes": {
"board": "local",
"pins": {
"dir": "29",
"pwm": "31",
"step": "33"
},
"stepperDelay": 50,
"ticksPerRotation": 200
}
},
{
"name": "xaxis",
"model": "single-axis",
"type": "gantry",
"namespace": "rdk",
"attributes": {
"length_mm": 1000,
"board": "local",
"limit_pin_enabled_high": false,
"limit_pins": ["32", "36"],
"motor": "xmotor",
"gantry_rpm": 500,
"axis": {
"x": 1,
"y": 0,
"z": 0
}
}
},
{
"name": "yaxis",
"model": "single-axis",
"type": "gantry",
"namespace": "rdk",
"attributes": {
"length_mm": 1000,
"board": "local",
"limit_pin_enabled_high": false,
"limit_pins": ["37", "38"],
"motor": "ymotor",
"gantry_rpm": 500,
"axis": {
"x": 0,
"y": 1,
"z": 0
}
}
},
{
"name": "zaxis",
"model": "single-axis",
"type": "gantry",
"namespace": "rdk",
"attributes": {
"length_mm": 1000,
"board": "local",
"limit_pin_enabled_high": false,
"limit_pins": ["10", "12"],
"motor": "zmotor",
"gantry_rpm": 500,
"axis": {
"x": 0,
"y": 0,
"z": 1
}
},
"frame": {
"parent": "world",
"orientation": {
"type": "euler_angles",
"value": {
"roll": 0,
"pitch": 40,
"yaw": 0
}
},
"translation": {
"x": 0,
"y": 3,
"z": 0
}
}
},
{
"name": "my_multi-axis_gantry",
"model": "multi-axis",
"type": "gantry",
"namespace": "rdk",
"attributes": {
"subaxes_list": ["xaxis", "yaxis", "zaxis"],
"move_simultaneously": "false"
}
}
]
}
The following attributes are available for multi-axis
gantries:
Attribute | Type | Required? | Description |
---|---|---|---|
subaxes_list | array | Required | An array of the name of each of the sub-axes, the single-axis gantries that make up the multi-axis gantry. |
move_simultaneously | boolean | Optional | A boolean indicating if the sub-axes should move together, or one at a time when MoveToPosition is called.Default: false |
Test the gantry
Once your gantry is configured and connected, open the gantry’s TEST panel on the CONFIGURE or CONTROL tabs.
Use the panel to adjust the position of the actuator on the axis and check whether it moves as expected.
If the gantry does not appear on the TEST panel, or if you notice unexpected behavior, check your machine’s LOGS tab for errors, and review the configuration.
Troubleshooting
If your gantry is not working as expected, follow these steps:
- Check your machine logs on the LOGS tab to check for errors.
- Review this gantry 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 gantry 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 more configuration and usage info, see:
Have questions, or want to meet other people working on robots? Join our Community Discord.
If you notice any issues with the documentation, feel free to file an issue or edit this file.
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!