Previous
single-axis
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 |
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.
If your gantry is not working as expected, follow these steps:
If none of these steps work, reach out to us on the Community Discord and we will be happy to help.
For more configuration and usage info, see:
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!