# The whole operator stack, and what CI validates. # # Built from checkouts rather than tags, so `dora validate` resolves each node's # manifest from its `path:` and checks the wiring against the versions in front # of you. The sibling repos are expected next to this one, which is how they are # cloned in practice. # # Three nodes, one loop: the bridge carries the browser, this node decides who # drives, and the arm node moves the arm and reports back. strict_types: true nodes: - id: teleop path: dora-teleop build: pip install . inputs: tick: dora/timer/millis/50 ui_command: ws-transceiver/data_out clients: ws-transceiver/clients response: ulite6/response motion_state: ulite6/motion_state robot_state: ulite6/robot_state tcp_pose: ulite6/tcp_pose joint_pose: ulite6/joint_pose outputs: - jog - request - ui_state env: SPEED_MM_S: "60" SPEED_DEG_S: "30" - id: ws-transceiver path: ../dora-websocket-transceiver build: pip install . inputs: data_in: teleop/ui_state outputs: - data_out - clients env: WS_PORT: "9000" STATIC_DIR: "../dora-teleop/web" HTTP_PORT: "9010" - id: ulite6 path: ../dora-ulite6 build: pip install . inputs: tick: dora/timer/millis/100 request: teleop/request jog: teleop/jog outputs: - response - motion_state - joint_pose - tcp_pose - robot_state env: ROBOT_IP: "192.168.1.192" TOOL_TYPE: "vacuum" # Nothing moves because the node started. An operator asks for the first # motion, which is the whole point of a teleop stack. INIT_MODE: "none"