8.1.3. ECM brakes

8.1.3.1. Introduction

Note

Make sure you use an ECM controller, i.e. a controller with a single 36V motor power supply for both FPGA-QLA sets. Controllers for the MTMs have two power supplies for the motors, a 24V for the first 4 axes and a 12V for the last 4 axis. Controllers for the PSMs have a single power supply for all axis, but it is only 24V. On your controller, set the board IDs to 4 and 5 (see board Ids). As for the PSMs, you must connect the cable that comes directly from the arm to the controller.

Note

The Si ECM and PSMs also have brakes on the first 3 joints. There seems to be very little variations between the different arms, the values provided by default (generated by dvrk-config-generator.py) should work for most systems. Users will likely not need to calibrate their brakes.

The Classic ECM differs from the Classic PSMs, it requires brakes to remain in place. The PSMs are designed with counterweights so if they loose power, they can fall on or in the patient. The ECM holds a fairly heavy endoscope, so brakes are required to prevent unwanted motion. Note that the first 3 joints have brakes but not the 4th (roll along the endoscope).

There are 4 important values that will need to be tweaked to control the 3 ECM brakes. These are hardware specific and therefore store in the ECM IO JSON configuration file.

  • release_current: current required to release the brakes in amperes

  • release_time: amount of time you need to keep the current high to release the brakes (in seconds)

  • released_current: current required to maintain the brakes released. This value should be significantly lower than the current to initially release the brakes

  • engaged_current: current required to engage (lock) the brakes. On the ECM, always zero.

There is no automated calibration process, so users have to manually edit values in the JSON file. In the generated configuration file, pay attention to the section “AnalogBrake” and the default values.

"brakes": [
  {
    "axis_id": 0,
    "board_id": 5,
    "drive": {
          "bits_to_current": {
            "offset": -6.282572138151098,
            "scale": 0.00019073486328125
          },
          "current_to_bits": {
            "offset": 32986.383288733305,
             "scale": 5242.88
          },
          "maximum_current": 0.25
    },
    "engaged_current": 0,
    "release_current": 0.25,
    "release_time": 2,
    "released_current": 0.09
  },
../../../_images/brake_current_graph.png

ECM Classic brake current

Please note that the values provided on this page are hardware specific, and you must adjust them to your system. Ideally, you want to find the lowest possible current that still work reliably on your hardware.

Warning

You really need to perform this step. We have no sensor to detect if the brakes are released or not. This means that the system will assume the brakes are released and then apply motor current. Even though the arm might still be blocked by the brakes, the PID controllers can apply a fair amount of current and damage the motors.

8.1.3.2. Procedure

Warning

If you haven’t done it yet, remember to calibrate the brakes current feedback (with -b command line option).

At that point, we don’t have a utility program to automatically adjust the parameters specific to the brakes, namely the 4 following values in the JSON file:

  • release_current and release_time

  • released_current

  • engaged_current, though this one is easy, it should be set to 0.

    Warning

    Based on specification sheets that we believe correspond to the solenoid used for the 3rd brake (insertion) on the Classic and S/Si ECMs, we should not exceed 13W for 7 seconds or 1.3W for continuous drive. That would translate to 1.48A for the release_current and 0.465A for the released_current.

For this procedure we will use the sawRobotIO1394QtConsole program along with the ECM JSON configuration file for your arm. You will need to manually edit the JSON file and between changes, quit and restart the sawRobotIO1394 console program to test the new values.

../../../_images/gui-Classic-ECM-io.png

sawRobotIO console for an ECM

  1. The first step is to determine the release_current.

    • In the JSON file, set all the released_current (NOTE: releaseD current) to zero and the release_time to 10 seconds. Start from a low value for the release_current for all 3 brakes. Values are provided in amperes (~0.1 for 100 mA).

    • Start the sawRobotIO1394 console and click Enable All to power the actuators and brakes.

    • Press the Release button for the brakes. You should see the requested current move to the value set in the JSON file and a current feedback close to it. After 10 seconds (or whatever release_time you’ve set in the JSON file), current should go back to released_current value (i.e. 0 for now).

    • During these 10 seconds, try to move the ECM, joint by joint. If you stand close to the arm, you should even hear a click if the brakes get released.

    • If a given brake is not released, quit the application, increase the value of release_current (and maximum_current if needed) for the corresponding joint in the JSON file and try again.

    • You can increase the requested current to an extent, i.e. the hardware is limited by the power supply so make sure you always check the current feedback. If the current feedback doesn’t increase as you’re increasing the requested current (and software maximum current), it means that you have reached the maximum possible with your power supply.

  2. Once you’ve found the proper values for release_current, you can decrease the release_time value, ideally all the way down to 2.0 seconds.

  3. The last step is to find the lowest possible for released_current. This is the current applied release_time seconds after release_current to keep the brakes from re-engaging. It’s IMPORTANT to find the lowest possible value. Again, start from a low value and increase progressively until you find settings such that the brakes stay released.

We are not totally sure how much variability there is between systems. In order to get a sense for it, please update the following table after you calibrated your brakes:

Recorded settings for ECM Classic brakes

System

1 Release (A)

1 Release (s)

1 Released (A)

2 Release(A)

2 Release (s)

2 Released (A)

3 Release(A)

3 Release (s)

3 Released (A)

JHU

0.250

2.0

0.090

0.220

2.0

0.090

1.100

2.0

0.200

ISI

0.250

2.0

0.100

0.210

2.0

0.100

1.200

2.0

0.200

WSU

0.270

0.5

0.120

0.300

0.5

0.130

1.100

2.0

0.170

UCL

0.250

2.0

0.040

0.140

2.0

0.040

1.100

2.0

0.200

PU

0.250

2.0

0.130

0.180

2.0

0.100

1.100

2.0

0.200

VU-MP

0.250

2.0

0.080

0.220

2.0

0.070

0.800

2.0

0.200

Note

Older dVRK controllers

We found that the power requirements are close to the maximum amount of power a 24V power supply initially installed can deliver. There is some variability between different systems and brakes, so you might need to upgrade the power supply to 36V in the controller enclosure. To check if you have reached the maximum deliverable power, keep an eye on the current feedback. These values should be close to the required current. If the current feedback seems to plateau while you increase the requested current, you’ll likely need to upgrade your power supply.