Sets a motor’s zero to its current position and saves it to the motor’s flash. Use --guided to zero every arm joint in turn. Power-cycle Damiao motors (wrist_2 and wrist_3) afterward so the new zero takes effect.
Each joint is zeroed at one of its mechanical end stops, not at the rest pose. --guided mode walks you to the right end stop. With --id, you must hold the joint at the right end stop yourself before you zero it. Axol still reports joint positions with 0 at the rest pose.
Flag
Description
--l / --r
Select the left or right arm (mutually exclusive, required)
--channel IFACE
Use this SocketCAN interface instead of the arm’s Axol Hub interface, such as can0
--id ID
CAN ID of the motor to zero, hex or decimal (required unless --guided)
--type {myactuator,damiao}
Motor type. Inferred from --id if omitted
--guided
Walk through the arm joints and zero each one at an end stop
--joints j1,j2,…
Joints to walk in --guided mode (default: all seven). The gripper has no zero, because it calibrates itself when enabled
axol motor.set-zero-pos --l --id 0x01 # single motoraxol motor.set-zero-pos --l --guided # all left-arm jointsaxol motor.set-zero-pos --l --guided --joints wrist_2,wrist_3 # just the wrist Damiaos
Hold every selected joint inside its range, away from the end stops, and press Enter once.
For each joint in turn, move it to the end stop the prompt names and press Enter.
If you moved the joint the wrong way, the prompt asks you to move it to the other end stop instead. Press Enter there.
Press Ctrl-C to skip a joint.wrist_2 and wrist_3 accept either end stop, because on some units one stop is placed better than the other. Move to the one you trust and press Enter. Axol detects which stop was used from the encoder reading. Don’t leave these two joints right at an end stop when you connect, because that position is ambiguous.
Axol won’t enable arms whose zeros were never set. Before it powers any motor, every arm bring-up checks that each joint’s reading is plausible for its end-stop zero. This covers teleop, collect-data, run-policy, gravity-comp, the control panel and the diagnostics dashboard. If a joint fails, the error names it. Run axol motor.set-zero-pos --guided, then try again.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Docs","description":"Command-line interface and Python SDK for the Almond Axol dual-arm robot.","colors":{"primary":"#c79760","light":"#eff483","dark":"#c79760"},"logo":{"light":"https://mintcdn.com/almondbot/idfco7KlgFmESEu4/assets/logo.png?fit=max\u0026auto=format\u0026n=idfco7KlgFmESEu4\u0026q=85\u0026s=bc87e5e797ca0a584e6d373c704c28d9","dark":"https://mintcdn.com/almondbot/idfco7KlgFmESEu4/assets/logo.png?fit=max\u0026auto=format\u0026n=idfco7KlgFmESEu4\u0026q=85\u0026s=bc87e5e797ca0a584e6d373c704c28d9"},"favicon":"https://mintcdn.com/almondbot/idfco7KlgFmESEu4/assets/logo.png?fit=max\u0026auto=format\u0026n=idfco7KlgFmESEu4\u0026q=85\u0026s=bc87e5e797ca0a584e6d373c704c28d9","navbar":{"links":[{"href":"https://axol.almond.bot/control","label":"Control Panel"},{"href":"https://axol.almond.bot/vr","label":"VR Teleop"}],"primary":{"type":"button","label":"Get Axol","href":"https://almond.bot"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"almondbot","hasAudioNarration":false,"actualSubdomain":"almondbot","customDomains":["docs.almond.bot"],"gitSource":{"type":"github","owner":"almond-bot","repo":"axol","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adc00dade715c8b5ccfe794","collectionId":"80a1c063-fd87-4250-b183-d819030c3f53","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adc00dade715c8b5ccfe794"},"entitlements":{},"buildId":"6adc1c8dfa61d64248d68e4c","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"Advanced","count":65},{"language":"default","tag":"CLI Reference","count":54},{"language":"default","tag":"Operations","count":19},{"language":"default","tag":"Tuning","count":11},{"language":"default","tag":"Python API","count":10},{"language":"default","tag":"Get Started","count":9},{"language":"default","tag":"Motors","count":8},{"language":"default","tag":"Diagnostics","count":6},{"language":"default","tag":"Web Interfaces","count":6},{"language":"default","tag":"Hardware Setup","count":6}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"cli/motor-set-zero-pos","slug":"/cli/motor-set-zero-pos","pageMetadata":{"title":"motor.set-zero-pos","description":"Zero a motor's encoder at a joint end stop.","href":"/cli/motor-set-zero-pos"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Zero a motor’s encoder at a joint end stop.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Sets a motor’s zero to its current position and saves it to the motor’s flash. Use `,_jsx(_components.code,{children:`--guided`}),` to zero every arm joint in turn. Power-cycle Damiao motors (`,_jsx(_components.code,{children:`wrist_2`}),` and `,_jsx(_components.code,{children:`wrist_3`}),`) afterward so the new zero takes effect.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Each joint is zeroed at one of its mechanical `,_jsx(_components.strong,{children:`end stops`}),`, not at the rest pose. `,_jsx(_components.code,{children:`--guided`}),` mode walks you to the right end stop. With `,_jsx(_components.code,{children:`--id`}),`, you must hold the joint at the right end stop yourself before you zero it. Axol still reports joint positions with `,_jsx(_components.code,{children:`0`}),` at the rest pose.`]})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Flag`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`--l`}),` / `,_jsx(_components.code,{children:`--r`})]}),_jsx(_components.td,{children:`Select the left or right arm (mutually exclusive, required)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`--channel IFACE`})}),_jsxs(_components.td,{children:[`Use this SocketCAN interface instead of the arm’s Axol Hub interface, such as `,_jsx(_components.code,{children:`can0`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`--id ID`})}),_jsxs(_components.td,{children:[`CAN ID of the motor to zero, hex or decimal (required unless `,_jsx(_components.code,{children:`--guided`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`--type {myactuator,damiao}`})}),_jsxs(_components.td,{children:[`Motor type. Inferred from `,_jsx(_components.code,{children:`--id`}),` if omitted`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`--guided`})}),_jsx(_components.td,{children:`Walk through the arm joints and zero each one at an end stop`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`--joints j1,j2,…`})}),_jsxs(_components.td,{children:[`Joints to walk in `,_jsx(_components.code,{children:`--guided`}),` mode (default: all seven). The gripper has no zero, because it calibrates itself when enabled`]})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`axol`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` motor.set-zero-pos`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --id`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0x01`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # single motor`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`axol`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` motor.set-zero-pos`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --guided`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # all left-arm joints`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`axol`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` motor.set-zero-pos`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --l`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --guided`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --joints`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` wrist_2,wrist_3`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # just the wrist Damiaos`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`guided-zeroing`,children:`Guided zeroing`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Hold every selected joint inside its range, away from the end stops, and press Enter once.`}),`\n`,_jsx(_components.li,{children:`For each joint in turn, move it to the end stop the prompt names and press Enter.`}),`\n`,_jsx(_components.li,{children:`If you moved the joint the wrong way, the prompt asks you to move it to the other end stop instead. Press Enter there.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Press Ctrl-C to skip a joint.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`wrist_2`}),` and `,_jsx(_components.code,{children:`wrist_3`}),` accept `,_jsx(_components.strong,{children:`either`}),` end stop, because on some units one stop is placed better than the other. Move to the one you trust and press Enter. Axol detects which stop was used from the encoder reading. Don’t leave these two joints right at an end stop when you connect, because that position is ambiguous.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Axol won’t enable arms whose zeros were never set.`}),` Before it powers any motor, every arm bring-up checks that each joint’s reading is plausible for its end-stop zero. This covers `,_jsx(_components.a,{href:`/cli/teleop`,children:_jsx(_components.code,{children:`teleop`})}),`, `,_jsx(_components.a,{href:`/cli/collect-data`,children:_jsx(_components.code,{children:`collect-data`})}),`, `,_jsx(_components.a,{href:`/cli/run-policy`,children:_jsx(_components.code,{children:`run-policy`})}),`, `,_jsx(_components.a,{href:`/cli/gravity-comp`,children:_jsx(_components.code,{children:`gravity-comp`})}),`, the `,_jsx(_components.a,{href:`/guides/control-panel`,children:`control panel`}),` and the `,_jsx(_components.a,{href:`/guides/diagnostics-dashboard`,children:`diagnostics dashboard`}),`. If a joint fails, the error names it. Run `,_jsx(_components.code,{children:`axol motor.set-zero-pos --guided`}),`, then try again.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"motor.set-zero-pos","description":"Zero a motor's encoder at a joint end stop.","href":"/cli/motor-set-zero-pos"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Guided zeroing","slug":"guided-zeroing","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"almondbot","siteName":"Docs","title":"motor.set-zero-pos - Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-24T02:48:56.690Z","originalFileLocation":"cli/motor-set-zero-pos.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Zero a motor\u0026#x27;s encoder at a joint end stop.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"motor.set-zero-pos - Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Zero a motor\u0026#x27;s encoder at a joint end stop.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.almond.bot/cli/motor-set-zero-pos\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://almondbot.mintlify.app/_mintlify/api/og/v2?division=Motors\u0026amp;title=motor.set-zero-pos\u0026amp;description=Zero+a+motor%27s+encoder+at+a+joint+end+stop.\u0026amp;theme=d35fac6290b6d3b95b56073f\u0026amp;signature=bebfb09c8e152908518f659ad25ff42f1e758c46c07245f2a4137dfdbab5127b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"motor.set-zero-pos - Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Zero a motor\u0026#x27;s encoder at a joint end stop.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://almondbot.mintlify.app/_mintlify/api/og/v2?division=Motors\u0026amp;title=motor.set-zero-pos\u0026amp;description=Zero+a+motor%27s+encoder+at+a+joint+end+stop.\u0026amp;theme=d35fac6290b6d3b95b56073f\u0026amp;signature=bebfb09c8e152908518f659ad25ff42f1e758c46c07245f2a4137dfdbab5127b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/almondbot/HmxSPHVvkmFyL2Le/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#c79760\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.almond.bot/cli/motor-set-zero-pos\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/cli/motor-set-zero-pos.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.almond.bot/#organization\",\"name\":\"Docs\",\"url\":\"https://docs.almond.bot\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/almondbot/idfco7KlgFmESEu4/assets/logo.png?fit=max\u0026auto=format\u0026n=idfco7KlgFmESEu4\u0026q=85\u0026s=bc87e5e797ca0a584e6d373c704c28d9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.almond.bot#website\",\"name\":\"Docs\",\"url\":\"https://docs.almond.bot\",\"publisher\":{\"@id\":\"https://docs.almond.bot/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.almond.bot/cli/motor-set-zero-pos#webpage\",\"url\":\"https://docs.almond.bot/cli/motor-set-zero-pos\",\"name\":\"motor.set-zero-pos\",\"description\":\"Zero a motor's encoder at a joint end stop.\",\"dateModified\":\"2026-10-24T02:48:56.690Z\",\"isPartOf\":{\"@id\":\"https://docs.almond.bot#website\"},\"breadcrumb\":{\"@id\":\"https://docs.almond.bot/cli/motor-set-zero-pos#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.almond.bot/cli/motor-set-zero-pos#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Advanced\",\"item\":\"https://docs.almond.bot/advanced/development-install\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CLI Reference\",\"item\":\"https://docs.almond.bot/cli/configuration\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Motors\",\"item\":\"https://docs.almond.bot/cli/motor-info\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"motor.set-zero-pos\",\"item\":\"https://docs.almond.bot/cli/motor-set-zero-pos\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.almond.bot/cli/motor-set-zero-pos#article\",\"headline\":\"motor.set-zero-pos\",\"name\":\"motor.set-zero-pos\",\"description\":\"Zero a motor's encoder at a joint end stop.\",\"url\":\"https://docs.almond.bot/cli/motor-set-zero-pos\",\"mainEntityOfPage\":{\"@id\":\"https://docs.almond.bot/cli/motor-set-zero-pos#webpage\"},\"dateModified\":\"2026-10-24T02:48:56.690Z\",\"publisher\":{\"@id\":\"https://docs.almond.bot/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.almond.bot#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Docs","nav":{"global":null,"groups":[{"group":"Get Started","pages":[{"title":"Almond Axol","href":"/index"},{"title":"Hardware Overview","href":"/hardware"},{"group":"Hardware Setup","root":{"title":"Hardware Setup","href":"/hardware-setup"},"pages":[{"title":"Axol Standalone","href":"/hardware-setup/standalone"},{"title":"Axol + Owl Mount","href":"/hardware-setup/owl-mount"},{"title":"Axol + Ox Cart","href":"/hardware-setup/ox-cart"},{"title":"Axol + Jelly","href":"/hardware-setup/jelly"},{"title":"Axol Cameras","href":"/hardware-setup/cameras"},{"title":"Advantech Thor (MIC-742)","href":"/hardware-setup/thor"}]},{"title":"Installation","href":"/installation"}]},{"group":"Operations","pages":[{"group":"Teleoperation","root":{"title":"Teleoperation","href":"/operations/teleop"},"pages":[{"title":"Teleoperation Config Parameters","sidebarTitle":"Config Parameters","href":"/operations/teleop-config"}]},{"group":"Gravity Compensation","root":{"title":"Gravity Compensation","href":"/operations/gravity-comp"},"pages":[{"title":"Gravity Compensation Config Parameters","sidebarTitle":"Config Parameters","href":"/operations/gravity-comp-config"}]},{"group":"Data Collection","root":{"title":"Data Collection","href":"/operations/data-collection"},"pages":[{"title":"Data Collection Config Parameters","sidebarTitle":"Config Parameters","href":"/operations/data-collection-config"}]},{"group":"Replay Dataset","root":{"title":"Replay Dataset","href":"/operations/replay-dataset"},"pages":[{"title":"Replay Dataset Config Parameters","sidebarTitle":"Config Parameters","href":"/operations/replay-dataset-config"}]},{"title":"Train a Policy","href":"/operations/train-policy"},{"group":"Run Policy","root":{"title":"Run Policy","href":"/operations/run-policy"},"pages":[{"title":"Run Policy Config Parameters","sidebarTitle":"Config Parameters","href":"/operations/run-policy-config"},{"title":"Run Your Own Policy","sidebarTitle":"Custom Policy","href":"/operations/custom-policy"},{"title":"Mink IK","href":"/operations/mink"}]},{"group":"DAgger Collection","root":{"title":"DAgger Collection","href":"/operations/dagger"},"pages":[{"title":"DAgger Collection Config Parameters","sidebarTitle":"Config Parameters","href":"/operations/dagger-config"}]}]},{"group":"Mantis","pages":[{"title":"Mantis Hardware","href":"/mantis/hardware"},{"title":"Mantis Tracking","href":"/mantis/tracking"}]},{"group":"Remote Teleop","pages":[{"title":"Remote Teleop","href":"/guides/remote-teleop"}]},{"group":"Web Interfaces","pages":[{"group":"Web Control Panel","root":{"title":"Web Control Panel","href":"/guides/control-panel"},"pages":[{"title":"The Robot's Settings File","sidebarTitle":"Settings File","href":"/guides/control-panel-settings"}]},{"title":"Diagnostics Dashboard","href":"/guides/diagnostics-dashboard"},{"title":"Calibrating Axol","href":"/guides/axol-calibration"},{"title":"VR Interface","href":"/guides/vr-interface"},{"title":"Quest over USB","href":"/guides/quest-over-usb"},{"title":"Quest Without Wearing It","href":"/guides/quest-headless"}]},{"group":"Advanced","pages":[{"title":"Development install","href":"/advanced/development-install"},{"group":"CLI Reference","pages":[{"title":"Command configuration","href":"/cli/configuration"},{"group":"Operations","pages":[{"title":"teleop","href":"/cli/teleop"},{"title":"gravity-comp","href":"/cli/gravity-comp"},{"title":"waypoints","href":"/cli/waypoints"},{"title":"collect-data","href":"/cli/collect-data"},{"title":"collect-dagger","href":"/cli/collect-dagger"},{"title":"replay-dataset","href":"/cli/replay-dataset"},{"title":"run-policy","href":"/cli/run-policy"},{"title":"inference-server","href":"/cli/inference-server"},{"title":"policy.check","href":"/cli/policy-check"},{"title":"migrate-dataset","href":"/cli/migrate-dataset"}]},{"group":"Host","pages":[{"title":"serve","href":"/cli/serve"},{"title":"provision","href":"/cli/provision"},{"title":"rt.install","href":"/cli/rt-install"},{"title":"ik.warm","href":"/cli/ik-warm"},{"title":"jetson.setup","href":"/cli/jetson-setup"}]},{"group":"CAN","pages":[{"title":"can.setup","href":"/cli/can-setup"},{"title":"can.enable","href":"/cli/can-enable"},{"title":"can.driver","href":"/cli/can-driver"},{"title":"hub.info","href":"/cli/hub-info"},{"title":"hub.flash","href":"/cli/hub-flash"}]},{"group":"Motors","pages":[{"title":"motor.info","href":"/cli/motor-info"},{"title":"motor.health","href":"/cli/motor-health"},{"title":"motor.set-can-id","description":"Change a motor's CAN ID and save it to the motor.","href":"/cli/motor-set-can-id"},{"title":"motor.set-zero-pos","href":"/cli/motor-set-zero-pos"},{"title":"motor.dump-config","description":"Save every configuration parameter of one motor, or all motors on a bus, to a file.","href":"/cli/motor-dump-config"},{"title":"motor.set-config","href":"/cli/motor-set-config"},{"title":"motor.restore-config","href":"/cli/motor-restore-config"},{"title":"motor.flash","href":"/cli/motor-flash"}]},{"group":"Lift","pages":[{"title":"lift.home","href":"/cli/lift-home"},{"title":"lift.goto","href":"/cli/lift-goto"},{"title":"lift.update","href":"/cli/lift-update"}]},{"group":"Cameras","pages":[{"title":"zed.install","href":"/cli/zed-install"},{"title":"zed.driver","href":"/cli/zed-driver"},{"title":"gst.install","href":"/cli/gst-install"},{"title":"gst.build-zed","href":"/cli/gst-build-zed"}]},{"group":"Mantis tracking","pages":[{"title":"tracker.*","href":"/cli/tracker"}]},{"group":"Diagnostics","pages":[{"title":"diag.rom-enable","href":"/cli/diag-rom-enable"},{"title":"diag.rom-disable","href":"/cli/diag-rom-disable"},{"title":"diag.teleop-jitter","href":"/cli/diag-teleop-jitter"},{"title":"diag.offline","href":"/cli/diag-offline"},{"title":"diag.lift-cycle","href":"/cli/diag-lift-cycle"},{"title":"diag.zed-cable","href":"/cli/diag-zed-cable"}]},{"group":"Tuning","pages":[{"title":"tune.pid","href":"/cli/tune-pid"},{"title":"tune.friction","href":"/cli/tune-friction"},{"title":"tune.breakaway","href":"/cli/tune-breakaway"},{"title":"tune.a4","href":"/cli/tune-a4"},{"title":"tune.gravity","href":"/cli/tune-gravity"},{"title":"tune.factory","href":"/cli/tune-factory"},{"title":"tune.motion","href":"/cli/tune-motion"},{"title":"tune.tf / motion.chirp","href":"/cli/tune-tf"},{"title":"tune.filter","href":"/cli/tune-filter"},{"title":"motion.build / motion.list","href":"/cli/motion-build"},{"title":"tune.repeatability","href":"/cli/tune-repeatability"}]}]},{"group":"Python API","pages":[{"title":"Core Concepts","href":"/api/concepts"},{"title":"almond_axol.robot","href":"/api/robot"},{"title":"almond_axol.kinematics","href":"/api/kinematics"},{"title":"almond_axol.teleop","href":"/api/teleop"},{"title":"almond_axol.vr","href":"/api/vr"},{"title":"almond_axol.zed","href":"/api/zed"},{"title":"almond_axol.motor","href":"/api/motor"},{"title":"almond_axol.lerobot","href":"/api/lerobot"},{"title":"almond_axol.policy","href":"/api/policy"},{"title":"Custom policy interface","href":"/api/policy-plan"}]}]}]},"title":"motor.set-zero-pos - Docs","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":[],"chunks":[]}