Set up a robot
Feather robots
How to install, enroll and check ARC on a Feather robot, and the order to turn things on. Experimental.
Feather support is experimental. Northstar has not run it on a Feather robot. Every value that describes the robot is our reading of Feather's documentation, so follow the steps in order and do not skip the checks.
A Feather robot (two 7 joint arms, a driven base, a camera neck) is driven through Feather's own SDK, which you install and keep. arc is installed next to it and calls it through one file that is yours to read and edit.
What Northstar does not need from you: the SDK, its version, or any file that describes it. Nothing on this page asks you to send those.
Before you start
- Feather's SDK is installed on the robot computer and Feather's own tools work.
- The system setup and network setup from Feather's instructions are done. The
arcinstaller does none of that. - Python 3.10, 3.11, 3.12 or 3.13 in the environment that has the SDK. The SDK and
arcmust share one Python. - A Linux aarch64 robot computer. For x86_64, ask Northstar for a wheel.
- Your account's enrollment key. See Enroll.
- An emergency stop in reach, and a person at the robot for every step that opens it.
In Feather's arm configuration, set on_abort_action to "freeze" before you run arc. As shipped it is "disable", which moves the arms to their home position whenever a program that uses them exits, arc included.
Find the Python that has the SDK
Run this the way you normally run Feather's tools: same user, same shell, same activated environment.
python -c "import feathersdk, sys; print(sys.executable)"It prints a path. If it ends in PATH/bin/python inside a venv or conda environment, PATH is what the next step needs.
Install into it
Pick the line that matches what the last step printed.
curl -fsSL https://arc.northstarrobotics.ai/install.sh | bash -s -- --backend feather --venv PATHcurl -fsSL https://arc.northstarrobotics.ai/install.sh | bash -s -- --backend feather --python /path/to/pythoncurl -fsSL https://arc.northstarrobotics.ai/install.sh | bash -s -- --backend feather --python /path/to/python --overlay-venv ~/arc_envUse the third form when your user cannot write to that Python (a system Python owned by root) or when you want it left untouched. The new environment sees the SDK and its packages. Only arc and what it is missing go into the new one.
What the installer does and does not do:
- It checks that
import feathersdkworks there and printsfeathersdk: foundorfeathersdk: not found. It reads nothing else about the SDK. - It changes no package you already have. Every installed package is held at its version, so the install can only add what is missing. Afterwards it compares the package list with the one from before and reports an error if anything differs.
- If
arcneeds a newer version of something you have, it stops before installing, lists those packages and changes nothing. The likely one iscryptographyolder than 42, which Ubuntu ships as a system package. See When a package is too old. - It installs no arm software, no CAN tools and no system packages.
Add --dry-run after bash -s -- to download and verify only.
Enroll
Activate the environment the installer named, then enroll. Choose feather as the arm type.
source PATH/bin/activate
arc enrollEnroll describes the questions.
Write the configuration
Pick a directory for the robot's files, for example ~/robot, and run the rest from there.
arc setup --backend featherThis writes two files:
robot.toml, in which nothing on the robot can move:dry_run = true,base_enabled = false,neck_enabled = false.feather_adapter.py, a plain Python file that holds every callarcmakes into Feather's SDK. If a call does not match the SDK on your robot, this is the file to edit.
Setup also asks about cameras, as on any robot. See Configure your robot.
Check without opening the robot
arc doctor robot.toml
arc feather-checkarc doctor checks the install and the configuration. arc feather-check runs a numbered list of 13 items, each PASS, FAIL or SKIP, with what to do about a failure. Without --open it checks the adapter file and the SDK install only. The items that read the robot are SKIP.
Open the robot and read it
Keep clear of the robot with the emergency stop in reach. Opening the robot runs Feather's own start-up, which can ask to calibrate the arms and can move the neck. arc itself enables and moves nothing in this step.
arc feather-check --openIt asks before it opens the robot, then reads both arms and the neck and compares what it finds with [arms.feather] in robot.toml: motor names, joint limits, and what the arms do when a program exits. A FAIL names the value to change.
Turn things on, one at a time
Change one thing in [arms.feather], run arc run robot.toml, and go on only when that step is right.
-
Dry run. Leave
dry_run = true. The robot is read and nothing is commanded. The log haswould sendlines: check them against the arms. -
One joint. Set
dry_run = false, with the base and neck still off. Then move one joint a small amount and back:arc feather-jog --side right --joint 1The joint moves 0.05 rad and returns, slowly. Repeat for joints 2 to 7, then
--side left. A joint that does not match its number has the wrong motor name. One that moves the other way needs-1inright_signsorleft_signs. -
Arms.
arc run robot.toml, and ask Northstar for an operator. Small, slow motions first. -
Base. Set
base_enabled = true, with the wheels off the ground the first time. The speed limits arebase_max_linear_mpsandbase_max_angular_radps. -
Neck. Set
neck_enabled = true.
Stop on anything unexpected: a joint that moves the wrong way, a jump, or a base that keeps moving after the stick is released.
What you can send Northstar
- Safe to send: the output of
arc feather-check --summary. It prints only item numbers with PASS, FAIL or SKIP. - Keep on the robot computer:
feather_check.json, the details filearc feather-checkwrites. It may describe Feather's SDK. The same goes forfeather_adapter.pyonce you have edited it, and for session logs of a run.
When an item fails, the item number and what you saw the robot do are enough for us to help.
When a package is too old
If the installer stops because a package you have is older than arc needs, replacing it is not something the installer does. There is one other way, and it is a decision for you and Feather:
curl -fsSL https://arc.northstarrobotics.ai/install.sh | bash -s -- --backend feather --python /path/to/python --overlay-venv ~/arc_env --overlay-upgrade cryptography--overlay-upgrade NAME works only with --overlay-venv. The new environment carries its own, newer copy of the package you name, and your environment is still not written to. Every program you run from the new environment, Feather's SDK included, then uses the newer copy. Programs run from your own environment are not affected.
Before it installs, the installer checks what your packages say they require and stops if one does not accept the newer version. After it installs, it imports the SDK and the packages that depend on the one you named. If anything that imported before now fails, it removes what it installed and exits with an error.
An import test cannot prove that everything in the SDK works with the newer copy. After an install with this option, run Feather's own checks from the new environment before relying on it.
NORTHSTAR