Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.
Experimental. xArm 7 support is new and has not run on many benches yet. Commands and
setup may change without notice. Expect rough edges, stay at the e-stop, and tell us how it
goes at team@dreamscalelabs.com.There is no shared model for xArm 7s: you run your own deployment, fine-tuned on demos
recorded on your bench.
Two UFACTORY xArm 7 arms, called aft and fore, each with an xArm Gripper (G2 or
G1) or no gripper.
Three RGB cameras: top, looking down at the bench, left on the fore arm’s wrist
and right on the aft arm’s wrist. RealSense D435s work, as do USB (UVC) cameras.
A Linux computer on both control boxes’ Ethernet network, wired to the cameras.
Enter each arm’s control box address and gripper, then assign the three cameras. Setup
saves a preview from each camera so you can tell them apart, and sets them to 640x360.
It only reads the arms and grippers; nothing moves. A camera another program holds (a
recorder, a teleop stack) is listed without a preview and can still be assigned.Setup writes ~/.config/dreamscale/xarm7.json. You can also write it yourself, for example
from a coding agent:
gripper_control: position moves the jaw to the commanded fraction of its travel;
threshold shuts it at 0.5 or more and opens it below.
roles: top is the scene camera, left the fore arm’s wrist, right the aft arm’s
wrist, each naming a camera’s id.
cameras: a RealSense is realsense:<serial> with physical_idusb:8086:<serial>; a
USB camera is its /dev/v4l/by-id/… path, as both id and device, with physical_idusb:<vendor>:<serial>. When in doubt, run setup once and copy what it saved.
dreamscale doctor xarm7 --model your-org/your-deployment
It reads both arms, both grippers and the three cameras without moving anything, and checks
that your deployment is ready to run here. Every line shows a ✓. Clear any controller
error in UFACTORY Studio first.
Move both arms in UFACTORY Studio’s manual mode to where every run should start, grippers
clear of the bench and the wrist cameras on the work area. Then:
dreamscale robots xarm7 home --set
dreamscale robots xarm7 home moves both arms back there slowly and opens the grippers.
observation.images.top, observation.images.left and observation.images.right;
observation.state: 16 values, the aft arm first. Each arm has seven joint positions in
radians, then its gripper’s angle from 0 (open) to 0.85 radians (closed);
action: the same 16 values, with each gripper as a close command from 0 (open) to 1
(closed).
Deploy the fine-tuned model as on Deployments. The deployment’s cameras
must be those three keys in that order, with 16 state and action values.
The arms will move. Clear the bench and keep the e-stop within reach. Software limits do
not prevent collisions, and cloud inference does not replace your robot’s safety
configuration.
dreamscale run xarm7 --model your-org/your-deployment
At Instruction, type a task.
At Enter to start, press Enter. Both arms enable at their current pose.
The arms run the task. Press Ctrl+C to stop; they return home if you saved a home
pose, and you’re asked for the next instruction.
Joints move at most 0.5 rad/s, and a command may lead the measured position by at most
0.2 rad. Each gripper moves to the commanded fraction of its travel (or, with
gripper_control set to threshold, shuts at 0.5). A held gripper keeps its last command,
so a gripper closed on an object stays closed.
If your model is prompted one step at a time, or one arm should hold still while the
other works, drive the arms from Python. This example steps through a list of
instructions, Enter for the next, and holds the arm each instruction doesn’t move:
Its source is a starting point for your own runner. It calls policy.next_action(), which
handles real-time chunking for you; a loop that plays whole chunks from policy.predict()
passes the actions still to play as committed_actions (see
Running chunks on your own clock). Stuck?
See Troubleshooting.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Dreamscale","description":"Run robot foundation models on cloud GPUs from the CLI or a few lines of Python.","colors":{"primary":"#16181A","light":"#F7F8F7","dark":"#73777A"},"logo":{"light":"https://mintcdn.com/dreamtimelabs/ql1nAmOIh_SfC8Mi/logo/light.svg?fit=max\u0026auto=format\u0026n=ql1nAmOIh_SfC8Mi\u0026q=85\u0026s=c138f46a7aba75b9300d25a69ea915d7","dark":"https://mintcdn.com/dreamtimelabs/ql1nAmOIh_SfC8Mi/logo/dark.svg?fit=max\u0026auto=format\u0026n=ql1nAmOIh_SfC8Mi\u0026q=85\u0026s=4deee6bdcecfc7d8be1639f9db6ae7fe"},"favicon":"https://mintcdn.com/dreamtimelabs/ql1nAmOIh_SfC8Mi/logo/dreamscale-mark.svg?fit=max\u0026auto=format\u0026n=ql1nAmOIh_SfC8Mi\u0026q=85\u0026s=59f3a3bc314c28a70b0ed801e1563c59","navbar":{"links":[{"href":"mailto:team@dreamscalelabs.com","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.dreamscalelabs.com/dashboard"}},"fonts":{"family":"Geist"},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"variables":{"sdkVersion":"0.1.0a258","dashboardUrl":"https://app.dreamscalelabs.com","docsUrl":"https://docs.dreamscalelabs.com","supportEmail":"team@dreamscalelabs.com"},"markdown":{"instructions":["Treat the Dreamscale CLI and Python SDK as the supported public integration surfaces.","Prefer `dreamscale run \u003crobot>` for supported robots and `dreamscale.connect(model)` with `predict` or `next_action` in Python.","Do not infer or recommend internal control-plane APIs."]},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dreamtimelabs","hasAudioNarration":false,"actualSubdomain":"dreamtimelabs","customDomains":["docs.dreamscalelabs.com"],"gitSource":{"type":"github","owner":"dreamscale-labs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"cbe835a3-ce7b-4e70-ae6c-bf36d88a8297","liveDeploymentHistoryId":"6ae49902c2eaceb0e344e585","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae49902c2eaceb0e344e585"},"feedback":{"issues":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae49902c2eaceb0e344e585","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Run on your robot","count":6},{"language":"default","tag":"Improve your model","count":3},{"language":"default","tag":"Get started","count":2},{"language":"default","tag":"References","count":2},{"language":"default","tag":"Help","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","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":"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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"robots/xarm7","slug":"/robots/xarm7","pageMetadata":{"title":"Two xArm 7s (experimental)","sidebarTitle":"Two xArm 7s (experimental)","description":"Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.","keywords":["UFACTORY","xArm","xArm 7","xarm7","bimanual","RealSense","D435","dreamscale robots xarm7 setup","dreamscale run xarm7","experimental"],"href":"/robots/xarm7"},"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: \"Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.\"\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`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Experimental.`}),` xArm 7 support is new and has not run on many benches yet. Commands and\nsetup may change without notice. Expect rough edges, stay at the e-stop, and tell us how it\ngoes at `,_jsx(_components.a,{href:`mailto:team@dreamscalelabs.com`,children:`team@dreamscalelabs.com`}),`.`]}),`\n`,_jsx(_components.p,{children:`There is no shared model for xArm 7s: you run your own deployment, fine-tuned on demos\nrecorded on your bench.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-you-need`,children:`What you need`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Two UFACTORY xArm 7 arms, called `,_jsx(_components.strong,{children:`aft`}),` and `,_jsx(_components.strong,{children:`fore`}),`, each with an xArm Gripper (G2 or\nG1) or no gripper.`]}),`\n`,_jsxs(_components.li,{children:[`Three RGB cameras: `,_jsx(_components.strong,{children:`top`}),`, looking down at the bench, `,_jsx(_components.strong,{children:`left`}),` on the fore arm’s wrist\nand `,_jsx(_components.strong,{children:`right`}),` on the aft arm’s wrist. RealSense D435s work, as do USB (UVC) cameras.`]}),`\n`,_jsx(_components.li,{children:`A Linux computer on both control boxes’ Ethernet network, wired to the cameras.`}),`\n`,_jsx(_components.li,{children:`The e-stop within reach.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`1-install-and-set-up-the-rig`,children:`1. Install and set up the rig`}),`\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:`uv`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tool`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"dreamscale[xarm7]\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dreamscale`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dreamscale`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` robots`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` xarm7`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` setup`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Enter each arm’s control box address and gripper, then assign the three cameras. Setup\nsaves a preview from each camera so you can tell them apart, and sets them to 640x360.\nIt only reads the arms and grippers; nothing moves. A camera another program holds (a\nrecorder, a teleop stack) is listed without a preview and can still be assigned.`}),`\n`,_jsxs(_components.p,{children:[`Setup writes `,_jsx(_components.code,{children:`~/.config/dreamscale/xarm7.json`}),`. You can also write it yourself, for example\nfrom a coding agent:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`json`,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:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`18`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"version\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"arms\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"aft\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"host\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"192.168.1.236\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"gripper\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"g2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"gripper_control\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"position\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"fore\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"host\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"192.168.1.201\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"gripper\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"g2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"gripper_control\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"position\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"cameras\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense:262422074177\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"backend\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"physical_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"usb:8086:262422074177\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"device\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"262422074177\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"width\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`640`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"height\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`360`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense:262422071971\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"backend\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"physical_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"usb:8086:262422071971\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"device\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"262422071971\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"width\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`640`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"height\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`360`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense:262322074905\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"backend\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"physical_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"usb:8086:262322074905\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"device\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"262322074905\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"width\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`640`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"height\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`360`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"roles\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"top\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense:262422074177\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"left\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense:262422071971\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"right\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"realsense:262322074905\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"home_pose\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`gripper`}),`: `,_jsx(_components.code,{children:`g2`}),`, `,_jsx(_components.code,{children:`g1`}),` or `,_jsx(_components.code,{children:`none`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`gripper_control`}),`: `,_jsx(_components.code,{children:`position`}),` moves the jaw to the commanded fraction of its travel;\n`,_jsx(_components.code,{children:`threshold`}),` shuts it at 0.5 or more and opens it below.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`roles`}),`: `,_jsx(_components.code,{children:`top`}),` is the scene camera, `,_jsx(_components.code,{children:`left`}),` the fore arm’s wrist, `,_jsx(_components.code,{children:`right`}),` the aft arm’s\nwrist, each naming a camera’s `,_jsx(_components.code,{children:`id`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`cameras`}),`: a RealSense is `,_jsx(_components.code,{children:`realsense:\u003cserial>`}),` with `,_jsx(_components.code,{children:`physical_id`}),` `,_jsx(_components.code,{children:`usb:8086:\u003cserial>`}),`; a\nUSB camera is its `,_jsx(_components.code,{children:`/dev/v4l/by-id/…`}),` path, as both `,_jsx(_components.code,{children:`id`}),` and `,_jsx(_components.code,{children:`device`}),`, with `,_jsx(_components.code,{children:`physical_id`}),`\n`,_jsx(_components.code,{children:`usb:\u003cvendor>:\u003cserial>`}),`. When in doubt, run setup once and copy what it saved.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-check-everything`,children:`2. Check everything`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dreamscale`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` doctor`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` xarm7`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --model`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` your-org/your-deployment`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`It reads both arms, both grippers and the three cameras without moving anything, and checks\nthat your deployment is ready to run here. Every line shows a `,_jsx(_components.code,{children:`✓`}),`. Clear any controller\nerror in UFACTORY Studio first.`]}),`\n`,_jsx(Heading,{level:`2`,id:`3-save-a-home-pose`,children:`3. Save a home pose`}),`\n`,_jsx(_components.p,{children:`Move both arms in UFACTORY Studio’s manual mode to where every run should start, grippers\nclear of the bench and the wrist cameras on the work area. Then:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dreamscale`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` robots`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` xarm7`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` home`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --set`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`dreamscale robots xarm7 home`}),` moves both arms back there slowly and opens the grippers.`]}),`\n`,_jsx(Heading,{level:`2`,id:`4-your-deployment`,children:`4. Your deployment`}),`\n`,_jsx(_components.p,{children:`Your demos need, in this order:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`observation.images.top`}),`, `,_jsx(_components.code,{children:`observation.images.left`}),` and `,_jsx(_components.code,{children:`observation.images.right`}),`;`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`observation.state`}),`: 16 values, the aft arm first. Each arm has seven joint positions in\nradians, then its gripper’s angle from 0 (open) to 0.85 radians (closed);`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`action`}),`: the same 16 values, with each gripper as a close command from 0 (open) to 1\n(closed).`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Deploy the fine-tuned model as on `,_jsx(_components.a,{href:`/deployments`,children:`Deployments`}),`. The deployment’s cameras\nmust be those three keys in that order, with 16 state and action values.`]}),`\n`,_jsx(Heading,{level:`2`,id:`5-run-it`,children:`5. Run it`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`The arms will move. Clear the bench and keep the e-stop within reach. Software limits do\nnot prevent collisions, and cloud inference does not replace your robot’s safety\nconfiguration.`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dreamscale`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` run`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` xarm7`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --model`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` your-org/your-deployment`})]}),`\n`]})})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`At `,_jsx(_components.code,{children:`Instruction`}),`, type a task.`]}),`\n`,_jsxs(_components.li,{children:[`At `,_jsx(_components.code,{children:`Enter to start`}),`, press `,_jsx(_components.strong,{children:`Enter`}),`. Both arms enable at their current pose.`]}),`\n`,_jsxs(_components.li,{children:[`The arms run the task. Press `,_jsx(_components.strong,{children:`Ctrl+C`}),` to stop; they return home if you saved a home\npose, and you’re asked for the next instruction.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Joints move at most 0.5 rad/s, and a command may lead the measured position by at most\n0.2 rad. Each gripper moves to the commanded fraction of its travel (or, with\n`,_jsx(_components.code,{children:`gripper_control`}),` set to `,_jsx(_components.code,{children:`threshold`}),`, shuts at 0.5). A held gripper keeps its last command,\nso a gripper closed on an object stays closed.`]}),`\n`,_jsx(Heading,{level:`2`,id:`your-own-control-loop`,children:`Your own control loop`}),`\n`,_jsx(_components.p,{children:`If your model is prompted one step at a time, or one arm should hold still while the\nother works, drive the arms from Python. This example steps through a list of\ninstructions, Enter for the next, and holds the arm each instruction doesn’t move:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,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:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`python`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -m`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dreamscale.examples.xarm7_labels`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` your-org/your-deployment`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Its source is a starting point for your own runner. It calls `,_jsx(_components.code,{children:`policy.next_action()`}),`, which\nhandles real-time chunking for you; a loop that plays whole chunks from `,_jsx(_components.code,{children:`policy.predict()`}),`\npasses the actions still to play as `,_jsx(_components.code,{children:`committed_actions`}),` (see\n`,_jsx(_components.a,{href:`/reference/sdk#running-chunks-on-your-own-clock`,children:`Running chunks on your own clock`}),`). Stuck?\nSee `,_jsx(_components.a,{href:`/troubleshooting`,children:`Troubleshooting`}),`.`]})]})}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":"Two xArm 7s (experimental)","sidebarTitle":"Two xArm 7s (experimental)","description":"Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.","keywords":["UFACTORY","xArm","xArm 7","xarm7","bimanual","RealSense","D435","dreamscale robots xarm7 setup","dreamscale run xarm7","experimental"],"href":"/robots/xarm7"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What you need","slug":"what-you-need","depth":2,"children":[]},{"title":"1. Install and set up the rig","slug":"1-install-and-set-up-the-rig","depth":2,"children":[]},{"title":"2. Check everything","slug":"2-check-everything","depth":2,"children":[]},{"title":"3. Save a home pose","slug":"3-save-a-home-pose","depth":2,"children":[]},{"title":"4. Your deployment","slug":"4-your-deployment","depth":2,"children":[]},{"title":"5. Run it","slug":"5-run-it","depth":2,"children":[]},{"title":"Your own control loop","slug":"your-own-control-loop","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"dreamtimelabs","siteName":"Dreamscale","title":"Two xArm 7s (experimental) - Dreamscale","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T21:48:38.471Z","originalFileLocation":"robots/xarm7.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=\"Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dreamscale\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dreamtimelabs/io_OP27x3Jx9ZGnk/_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/dreamtimelabs/io_OP27x3Jx9ZGnk/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dreamtimelabs/io_OP27x3Jx9ZGnk/_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/dreamtimelabs/io_OP27x3Jx9ZGnk/_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/dreamtimelabs/io_OP27x3Jx9ZGnk/_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/dreamtimelabs/io_OP27x3Jx9ZGnk/_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/dreamtimelabs/io_OP27x3Jx9ZGnk/_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/dreamtimelabs/io_OP27x3Jx9ZGnk/_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/dreamtimelabs/io_OP27x3Jx9ZGnk/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Two xArm 7s (experimental) - Dreamscale\">\u003cmeta data-mint-head property=\"og:description\" content=\"Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dreamscale\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dreamscalelabs.com/robots/xarm7\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dreamtimelabs.mintlify.app/_mintlify/api/og/v2?division=Run+on+your+robot\u0026amp;title=Two+xArm+7s+%28experimental%29\u0026amp;description=Experimental%3A+run+your+own+fine-tuned+deployment+on+a+pair+of+UFACTORY+xArm+7+arms+with+xArm+Grippers+and+three+cameras.\u0026amp;theme=7820ae49e693c80909b17223\u0026amp;signature=54af04282d12e35f5c876021c5ae8084ab8c47f59ec4a1049d27bd093eb3a0f7\">\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=\"Two xArm 7s (experimental) - Dreamscale\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dreamtimelabs.mintlify.app/_mintlify/api/og/v2?division=Run+on+your+robot\u0026amp;title=Two+xArm+7s+%28experimental%29\u0026amp;description=Experimental%3A+run+your+own+fine-tuned+deployment+on+a+pair+of+UFACTORY+xArm+7+arms+with+xArm+Grippers+and+three+cameras.\u0026amp;theme=7820ae49e693c80909b17223\u0026amp;signature=54af04282d12e35f5c876021c5ae8084ab8c47f59ec4a1049d27bd093eb3a0f7\">\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/dreamtimelabs/io_OP27x3Jx9ZGnk/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dreamscale\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16181A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dreamscalelabs.com/robots/xarm7\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/robots/xarm7.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dreamscalelabs.com/#organization\",\"name\":\"Dreamscale\",\"url\":\"https://docs.dreamscalelabs.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dreamtimelabs/ql1nAmOIh_SfC8Mi/logo/light.svg?fit=max\u0026auto=format\u0026n=ql1nAmOIh_SfC8Mi\u0026q=85\u0026s=c138f46a7aba75b9300d25a69ea915d7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dreamscalelabs.com#website\",\"name\":\"Dreamscale\",\"url\":\"https://docs.dreamscalelabs.com\",\"publisher\":{\"@id\":\"https://docs.dreamscalelabs.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dreamscalelabs.com/robots/xarm7#webpage\",\"url\":\"https://docs.dreamscalelabs.com/robots/xarm7\",\"name\":\"Two xArm 7s (experimental)\",\"description\":\"Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.\",\"dateModified\":\"2026-10-28T21:48:38.471Z\",\"isPartOf\":{\"@id\":\"https://docs.dreamscalelabs.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dreamscalelabs.com/robots/xarm7#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dreamscalelabs.com/robots/xarm7#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Run on your robot\",\"item\":\"https://docs.dreamscalelabs.com/robots/yam\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Two xArm 7s (experimental)\",\"item\":\"https://docs.dreamscalelabs.com/robots/xarm7\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dreamscalelabs.com/robots/xarm7#article\",\"headline\":\"Two xArm 7s (experimental)\",\"name\":\"Two xArm 7s (experimental)\",\"description\":\"Experimental: run your own fine-tuned deployment on a pair of UFACTORY xArm 7 arms with xArm Grippers and three cameras.\",\"url\":\"https://docs.dreamscalelabs.com/robots/xarm7\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dreamscalelabs.com/robots/xarm7#webpage\"},\"dateModified\":\"2026-10-28T21:48:38.471Z\",\"keywords\":\"UFACTORY, xArm, xArm 7, xarm7, bimanual, RealSense, D435, dreamscale robots xarm7 setup, dreamscale run xarm7, experimental\",\"publisher\":{\"@id\":\"https://docs.dreamscalelabs.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dreamscalelabs.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dreamscale\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Dreamscale","nav":{"global":null,"pages":[{"group":"Get started","pages":[{"title":"Quick start","href":"/index"},{"title":"Models","href":"/models"}]},{"group":"Run on your robot","pages":[{"title":"Bimanual YAM with the CLI","sidebarTitle":"Bimanual YAM","href":"/robots/yam"},{"title":"SO-101 with the CLI","sidebarTitle":"SO-101","href":"/robots/so101"},{"title":"Franka / DROID with the CLI (experimental)","sidebarTitle":"Franka / DROID (experimental)","href":"/robots/franka"},{"title":"Universal Robots (experimental)","sidebarTitle":"Universal Robots (experimental)","description":"Experimental: run your own fine-tuned π0.5 deployment on a Universal Robots e-Series or UR Series arm with a Robotiq gripper.","href":"/robots/ur"},{"title":"Two xArm 7s (experimental)","sidebarTitle":"Two xArm 7s (experimental)","href":"/robots/xarm7"},{"title":"Python SDK","description":"Install the Python SDK, run a model with no robot (LIBERO), then drive any robot with a shared model or your own deployment.","href":"/python"}]},{"group":"Improve your model","pages":[{"title":"Datasets","href":"/datasets"},{"title":"Training","href":"/training"},{"title":"Deployments","href":"/deployments"}]},{"group":"References","pages":[{"title":"CLI reference","sidebarTitle":"CLI reference","href":"/reference/cli"},{"title":"Python SDK reference","sidebarTitle":"SDK reference","href":"/reference/sdk"}]},{"group":"Help","pages":[{"title":"Troubleshooting","href":"/troubleshooting"}]}]},"basePath":"","title":"Two xArm 7s (experimental) - Dreamscale","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}