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 arc installer does none of that.
  • Python 3.10, 3.11, 3.12 or 3.13 in the environment that has the SDK. The SDK and arc must 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.

On the robot
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.

A venv or conda environment (it printed PATH/bin/python)
curl -fsSL https://arc.northstarrobotics.ai/install.sh | bash -s -- --backend feather --venv PATH
Any other interpreter, such as a system Python
curl -fsSL https://arc.northstarrobotics.ai/install.sh | bash -s -- --backend feather --python /path/to/python
A new environment on top, leaving yours unwritten
curl -fsSL https://arc.northstarrobotics.ai/install.sh | bash -s -- --backend feather --python /path/to/python --overlay-venv ~/arc_env

Use 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 feathersdk works there and prints feathersdk: found or feathersdk: 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 arc needs a newer version of something you have, it stops before installing, lists those packages and changes nothing. The likely one is cryptography older 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.

On the robot
source PATH/bin/activate
arc enroll

Enroll describes the questions.

Write the configuration

Pick a directory for the robot's files, for example ~/robot, and run the rest from there.

On the robot
arc setup --backend feather

This 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 call arc makes 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

On the robot
arc doctor robot.toml
arc feather-check

arc 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.

On the robot
arc feather-check --open

It 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.

  1. Dry run. Leave dry_run = true. The robot is read and nothing is commanded. The log has would send lines: check them against the arms.

  2. 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 1

    The 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 -1 in right_signs or left_signs.

  3. Arms. arc run robot.toml, and ask Northstar for an operator. Small, slow motions first.

  4. Base. Set base_enabled = true, with the wheels off the ground the first time. The speed limits are base_max_linear_mps and base_max_angular_radps.

  5. 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 file arc feather-check writes. It may describe Feather's SDK. The same goes for feather_adapter.py once 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.

On this page

Robot client 0.2.8
docs.northstarrobotics.ai