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 amperesrelease_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 brakesengaged_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
},
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_currentandrelease_timereleased_currentengaged_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_currentand 0.465A for thereleased_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.
sawRobotIO console for an ECM
The first step is to determine the
release_current.In the JSON file, set all the
released_current(NOTE: releaseD current) to zero and therelease_timeto 10 seconds. Start from a low value for therelease_currentfor 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_timeyou’ve set in the JSON file), current should go back toreleased_currentvalue (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(andmaximum_currentif 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.
Once you’ve found the proper values for
release_current, you can decrease therelease_timevalue, ideally all the way down to 2.0 seconds.The last step is to find the lowest possible for
released_current. This is the current appliedrelease_timeseconds afterrelease_currentto 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:
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.