Releases: jhu-dvrk/sawIntuitiveResearchKit
Releases · jhu-dvrk/sawIntuitiveResearchKit
2.3.0
2.3.0 (2024-08-30)
- API changes:
- Supports firmware 9
- Reorganized files so C++ based ROS nodes are included in this repository and can be compiled for both ROS1 and ROS2.
components
andexamples
are now undercore
. The directoryros
contains all the ROS dependent applications (i.e.dvrk_robot
,dvrk_arms_from_ros
,dvrk_hrsv_widget
) - The old
dvrk-ros
repository, specific to ROS1 has been spit in multiple repositories:dvrk_python
,dvrk_video
,dvrk_model
... All the new repositories are compatible with ROS1 and ROS2
- Deprecated features:
- None
- New features:
- Support for Goovis HMD (https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/Goovis)
- Control Si LEDs
- Basic gravity compensation for ECM Si (only applies to endoscope weight)
- PID files use strings for joint types
- Shared files:
- Added instruments 400230, 410298, 420230 and 420327
- New consoles simulated for surgeon console and patient cart (Classic and Si)
- Bug fixes:
- Faster jaw velocity in teleoperation
- #203 coupling matrix for
FIXED
instrument type - SUJSi can be used without all 5 dESSJ (bluetooth)
2.2.1
2.2.1 (2023-12-29)
- API changes:
- None
- Deprecated features:
- None
- New features:
- Shared files:
- Added
tool
mega suturecut needle drivers 400309 and 420309 - Added
console
for simulated PSM Si and ECM Si - Added
io
for MTML on DQLA
- Added
- Console JSON: added configuration option "close-all-relays"
- Display explanation when powering fails on Si controllers
- Added CMake option to compile without Bluetooth for SUJ Si in simulated mode
dvrk-remove-logs.py
: added-f
option to skip confirmation prompt
- Shared files:
- Bug fixes:
- Fixes for Windows compilation
- Fixed crash on exit
- Fixed crash on PSM GUI direct control
dvrk-configuration-generator.py
- Fixed boards IDs for PSMs and ECMs using DQLA controllers
- Better default for gripper
2.2.0
2.2.0 (2023-11-21)
- API changes:
- Configuration files specific to each system/group shouldn't be stored in
share
directory anymore. We created https://github.com/dvrk-config to host repositories of configuration files. e.g. for JHU https://github.com/dvrk-config/dvrk_config_jhu - More CRTK and snake_case renaming
- PID config file is now using JSON
- Configuration files specific to each system/group shouldn't be stored in
- Deprecated features:
- Ubuntu 16.04 is not supported anymore
- Ubuntu 18.04 requires using clang as compiler (see documentation)
- Matlab based configuration generator. Use
dvrk-config-generator.py
instead base-frame
for SUJ, wasn't usedrotation
configuration parameter for PSM teleoperation, Use thebase-frame
in console JSON configuration file instead.mainQtArm
application, should usesawIntuitiveResearchKitQtConsole
instead
- New features:
- Support for ROS2 and ROS1 on Ubuntu 20.04 (Galactic/Noetic) and ROS2 on Ubuntu 22.04 (Humble)
- Support for Si PSMs and ECM
- IO, PID and kinematics and tool detection working, missing gravity compensation
- New potentiometer calibration program specific to Si arms
- Added support for Si SUJ, calibration remains tricky
- Support for new Classic controllers with a single FPGAv3 (DQLA vs QLA1)
- Control:
- PID (see also sawControllers CHANGELOG):
- Control using actuator space (was using joint space)
- Removed non-linear gains, fixed deadband transitions
- Use reference velocity
- PSM teleoperation:
- Use MTM pose and twist to control PSM, PSM PID now uses reference actuator positions and velocities
- PID (see also sawControllers CHANGELOG):
- SUJ:
- Refactor of SUJ Classic code
- Added Fixed SUJ for groups using custom frame to mount their PSMs and ECM
- Option to set any arm as reference arm. By default all arm cartesian poses are wrt ECM but this can be changed to any PSM for groups using PSM-held camera
- New ROS features:
- Publisher
arm/local/measured_cv
- Publisher
arm/gravity_compensation/setpoint_js
provides torques used for gravity compensation - Services
arm/forward_kinematics
andarm/inverse_kinematics
- Publisher
arm/crtk_version
(i.e. 1.1.0) - Subscribers
arm/free
andarm/hold
- Subscriber
arm/pid_feed_forward/servo_jf
to allow user to add their own feed forward - Subscriber
teleop_PSM/following/mtm/body/servo_cf
to add haptic only when teleop is active - Add
ral
(ROS Abstraction Layer) for CRTK Python client so Python scripts can be used with either ROS1 or ROS2
- Publisher
- New sawRobotIO1394 config generator (Python based), also generates a simple arm and console JSON configuration file
- More instrument definitions
- Added
dvrk-sd-card-updater.py
to update firmwares for SD cards using in new controllers (Classic with DQLA/FPGAv3 and Si with dRA1/FPGAv3) and Si ESPM - Added
dvrk-remove-log.py
to cleanup old cisstLog files - CMake:
- Updated install targets and debian packages generation
- Works with ROS2/colcon
- Bug fixes:
- daVinci head sensor: fixed bit Id so all four sensors are used
- Engage procedures are stopped when adapter/instrument is removed
- Fixed some transitions for PSM jaw control (
move
to/fromservo
) - Fixed emulate adapter/tool
2.1.0
2.1.0 (2021-08-11)
- API changes:
- Changed instrument identifier from
enum
tostd::string
- Instrument name is now following the convention
name:model[version]
. It used to bename_model
- Changed instrument identifier from
- New features:
- Added new configuration file to list all supported instruments with option to load site specific list: https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/Custom-Instruments
- More instruments supported, including new Si Large Needle Driver with gears (version 12+)
- Instrument depth:
- Using Classic or S specific depth to determine if instrument should engage
- Using depth of joint 4 using forward kinematics to restrict motion towards/inside the cannula
- Updated wiki:
- Better calibration documentation: https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/Calibration
- PSM joint 3 calibration: https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/Potentiometer-calibration-for-PSM-insertion
- Classic vs S instruments: https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/Tool-Generations
- Support for custom instruments: https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/Custom-Instruments
- Updated JSON schemas: https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/Configuration-File-Formats
- Added example for cisstRobotPython
- Bug fixes:
- Fixed range of motion used to engage sterile adapter and instruments to avoid encoder/pot errors
- Fixed bug in Matlab config generator for ECM
- Teleop PSM restarts automatically after an instrument's swap
2.0.1
2.0.1 (2021-05-26)
- API changes:
- More snake case renaming for C++ code (internal code)
- New features:
- Console:
- Added calibration mode (command line option -C) to disable potentiometer checks and saving encoder offsets when calibrating potentiometers
- Console:
- Bug fixes:
- Fixed examples of configuration files for data collection using cisstMultiTask state table collectors
2.0.0
2.0.0 (2021-04-08)
Added CODE_OF_CONDUCT
-
API changes:
- Internal cisst commands and ROS topics use CRTK naming convention as much as possible
- Commands without CRTK equivalents have been renamed using
snake_case
(vs previous convention usingCamelCase
) to match ROS/CRTK conventions - A conversion script is provided to help porting code to new naming. The process is not fully automated, porting code to dVRK 2.0 will require some manual updates. Script can be found on the cisst repository, in
utils/crtk-port
. The porting script uses translations files (.dic
). We provide a few different translation files:crtk-commands.dict
: cisst command names, mostly for C++ code without ROS dependenciescrtk-ros-commands.dict
: ROS topics translation, mostly to port applications using the ROS topics directlymembers-saw-intuitive-research-kit.dict
: data members and methods for dVRK C++ code. This can be used to port C++ code based on dVRK code C++ code
- Console configuration files shouldn't use
io
,pid
andkinematic
forarms
. Instead, useserial
and optionallysystem
. The application will then look for the arm JSON configuration file (e.g.PSM1-12345.json
) - Kinematic config files updated so limits are part of DH parameters, now use SI units!
-
Deprecated features:
- Reduced search path for configuration files, now need to add directory prefix. For example, to load
"sawRobotIO1394-MTMR-foot-pedals.xml"
, you need to use"io/sawRobotIO1394-MTMR-foot-pedals.xml"
. Same applies toarm
,kinematic
,console
.
- Reduced search path for configuration files, now need to add directory prefix. For example, to load
-
New features:
- General:
- Supported Linux platforms are Ubuntu/ROS are 16.04/kinetic, 18.04/melodic, 20.04/noetic
- On Ubuntu, added
rosinstall
files to use withwstool
. This is now the preferred way to retrieve the cisst/SAW/dVRK code - Added github workflow (https://github.com/jhu-dvrk/dvrk-github-workflow/actions)
- JSON schemas are used to validate configuration files and generate documentation, see README in
share/schemas
- Preliminary support for ethernet/UDP. FireWire remains the preferred interface
- Preliminary support for MacOS and Windows, no ROS and with ethernet interface only (no FireWire support)
- sawSocketStreamer and sawOpenIGTLink support using configuration files (README can be found in
share
directory) - Dark mode (option
-D
)
- Console:
- Added event + ROS to report if teleop is enabled
- Exposed audio features: set volume, beep and text to speech to ROS
- Emulate foot pedal events (operator, clutch, camera) using ROS topics
- Widget:
- Display list of arms and current state (using color). Clicking on arm name brings arm widget in focus
- Display list of tele-op PSM pairs, selectable in GUI. Clicking on pair name brings pair widget in focus
- In Direct mode, emulate console events (clutch, camera...) using check boxes
- Added widget for endoscope focus (+/-)
- Arm:
- Use CRTK convention for most motion and operating state commands
- Faster homing by loading preloaded encoders from controllers
- Added command to get joint configuration (name, type, limits for position, velocity and effort)
- Added single ratio applied to both velocity and acceleration for
move
commands - Added ROS service to query frames along kinematic chain for a given set oof joint values
- Widget:
- In Direct mode, added widget to move arm using
move_jp
command (joint space) and jaws (for PSM) - Added operating state widget with ability to send state commands in Direct mode
- For PSM and MTM, display jaws and gripper joint state
- In Direct mode, added widget to move arm using
- ECM:
- Added gravity compensation
- Use PID feed forward, better PID tracking, higher maximum velocity for trajectory generation
- Support multiple endoscope types (SD/HD, straight/up/down)
- Use closed form IK
- Widget: added drop down menu to select endoscope type (in manual mode)
- MTM:
- In effort mode, apply torque to wrist platform to move away from user's hand. Force can be scaled using configuration setting
platform-gain
- In effort mode, apply torque to wrist platform to move away from user's hand. Force can be scaled using configuration setting
- PSM:
- Added support to change tool type at runtime. With proper hardware/firmware, get tool type automatically from Dallas Chip
- Kinematic is now defined using the arm part (first 3 dofs) and tool part (last 3 or 5 dofs) and optional gripper
- Tool definition files added in
share/tool
- Widget:
- Added drop down menu to select tool type (in manual mode)
- Added plot to display jaw effort
- SUJ:
- Added simulated mode
- In simulated mode, added command/configuration setting to set joint positions
- Teleoperation PSM:
- Better engage check to start tele-operation when starting and after clutch
- Added rate control on PSM jaws, slower when engaging
- Scale angle to match jaw and gripper ranges
- Support tele-operation while ECM is moving
- Widget: display orientation offset between MTM and PSM
- ROS:
- Matlab and Python client libraries are now based on CRTK client libraries, see dvrk-ros CHANGELOG.md
- cisstMultiTask dVRK arm using ROS topics, can be used to tele-operate between two computers with ROS as middle-ware
- sawRobotIO1394:
- Widget: more closely match sawRobotIO names, shows safety relay status
- Software will only allow firmware 6 and 7. 7 is recommended
- Code refactor to reduce number of classes and ease maintenance
- Moved to format 4 to enforce new features
- MTMs use two files, one for 7 active joints, one for gripper analog input
- Utilities:
- Added
qlacommand
to superseedqlacloserelays
. Examples:qlacommand -c open-relays
,qlacommand -pudp -c reboot
- Added script to reset FireWire kernel modules on PC. It requires
sudo
privileges:sudo `which qlareloadfw.bash`
- Kernel log messages (
dmesg -w
) now display the board id, board type (f for FireWire, e for ethernet) and firmware version
- Added
- General:
-
Bug fixes:
- Fixed bug re. setting trajectory ratios not always applied
- Tele-operation for PSM, use alignment mismatch to avoid small jump when engaging
1.7.1
1.7.0
1.7.0 (2019-04-09)
-
API changes:
-
Deprecated features:
kinematic
field in JSON console config file has been replaced byarm
for MTMs to support gravity compensation (see New features)
-
New features:
- Added gravity compensation for the MTM. Contribution from CUHK. Thank you!
- Support for multiple teleop components per MTM or PSM (ee issue #97)
- Using the console, operator can use a "clutch" quick tap to toggle between PSMs.
- Using ROS topics, programs can select which pairs to activate or de-activate.
- TeleopPSM: added options to disable jaw on PSM side
- Teleop Qt widgets: use prmPositionCartesianGet widget
- Arms: added set ratio velocity and acceleration to control max velocity used in joint tractories
-
Bug fixes:
- Console:
- Throttle error messages
- Fixed Coag digital input when operator present is using a different input
- Fixed valid/timestamp for head sensor events
- Arms:
- Console:
1.6.0
1.6.0 (2018-05-16)
- API changes:
- Deprecated features:
- Fixed reference frames to match ISI convention on real da Vinci systems.
mtml.json
andmtmr.json
are now deprecated - In arm JSON configuration files, do not use
base-offset
. Use console JSON configurationbase-frame
instead - Teleop PSM/ECM JSON:
rotation
is now moved underconfigure-parameter
- Standard (i.e. not system specific) IO XML configuration files moved to
share/io
folder. Console class will search inshare/io
so this should be backward compatible
- Fixed reference frames to match ISI convention on real da Vinci systems.
- New features:
- Teleoperation ECM:
- First working implementation, tested on JHU system
- Use structs for MTMR/L and ECM instead of pointers
- Teleoperation PSM:
- Match gripper/jaw angle before starting teleoperation
- Use structs for MTM and PSM instead of pointers
- Added option to ignore jaw in PSM if MTM doesn't have a gripper (e.g. Falcon)
- General:
- Fixed interval statistics with better load estimation, updated Qt widget
- Fixed 3D rotation widget, show reference frame and allow to rotate view with mouse
- Transformation Qt widget now shows moving/reference frame names, valid/invalid flag and timestamp
- Console:
- While configuring from JSON file,
exit
if an error is found, this makes it easier to see error messages - daVinci head sensor: figured out cabling to connect head sensor from full daVinci system to dVRK controllers, added software support with special component (see https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/HeadSensor#davinci-head-sensor)
- Added audio feedback, emit different beep tones for operator present, master clutch and camera control pedal. This requires to install sox and espeak (
sudo apt install sox espeak
) - Added component to control endoscopic camera from master console foot pedals (requires custom wires, see instructions https://github.com/jhu-dvrk/sawIntuitiveResearchKit/wiki/Full-da-Vinci#endoscope-focus-controller)
- While configuring from JSON file,
- Arm:
- Added relative position commands in joint and cartesian space
- Console JSON configuration file, added
base-frame
with static transformation and name of reference frame for each arm - For all cartesian velocities/twist, added name of moving frame
- PSM: added set_effort_jaw command, this can be along with set_effort_joint or set_wrench on PSM
- SUJ:
- Better/faster propagation of base frames
- Added simulation mode, can set joint values using ROS topic
- Removed "desired" position, all positions are "measured"
- Joint names are now compatible with WPI ROS/urdf models
- ROS:
- Added tf2 support
- Created multiple ROS bridges, publishers, subscribers, tf2 and cisst/SAW period stats (custom message), much faster processing of subscribers
- Initial support for crtk topics
- sawRobotIO1394:
- New velocity estimation on FPGA with firmware rev 6, improved PID and cartesian impedance controllers
- Software will not allow firmware different from 4, 5 or 6. 6 is recommended
- If pot/encoder tolerance distance is set to 0, ignore axis in safety checks
- Code refactor to reduce number of classes and ease maintenance
- Teleoperation ECM:
- Bug fixes:
- Fixed data member initialization (valgrind)
1.5.0
1.5.0 (2017-11-07)
- API changes:
- Console: watchdog default changed to 30 ms. The default can be overridden in console.json file.
- Arm: SetRobotControlState has been removed, use SetDesiredState and GetDesiredState/GetCurrentState commands along with DesiredState/CurrentState events
- Arm: no need to set a new state to switch control mode (position/cartesian position/goal/effort)
- Arm: joint states size is now based on number of joints used for kinematics. Gripper (PSM) and jaw (MTM) are reported using a different joint state command/topic
- Console: digital inputs/outputs not specific to an arm are now defined in a different file. All sawRobotIO1394-{PSM,ECM,MTM} XML config files need to be updated!
- Deprecated features:
- Arm: removed hard coded pot tolerance per arm type. Now uses sawRobotIO XML file to save settings per arm and implementation uses time instead of iteration counter.
- New features:
- New dVRK logo: https://github.com/jhu-dvrk/dvrk-logo/blob/master/dVRK-blue-05-04-2017-01.png
- Arm:
- New current calibration procedure, reduces current offset and undesired torques when request current is zero. Please regenerate your sawRobotIO configuration files!
- Use mtsStateMachine to better control initialization and homing, now manages desired vs. current state
- States for each control mode have been removed, the mode will be automatically set when receiving a new move command
- Control modes have been added (space: actuator/joint/cartesian/user and mode: position/trajectory/effort/user) instead of states
- Control mode for user implementations in derived classes can be set using SetControlCallback
- Use Reflexxes for trajectory generation. Can now interrupt existing trajectory using current velocity instead of resetting to 0. Dropped use of robLSPB
- Cartesian impedance controller has been added to all arms. Very useful for simple haptic feedback on MTMs. Some examples are available in dvrk-ros.
- When using firmware 6, use velocity estimation from controller (much better timestamps and estimation)
- Uses new standardized mtsMessage for Qt messages and ROS log
- PSM:
- Added support for 5mm tools (snake-like tools)
- For 5mm tools, joint state has 8 joints
- Added IK with equality constraints to support 5mm tools
- Added implementation for tool specific torque limits (loaded from psm-xyz.json)
- Added general purpose socket base protocol to communicate with PSM
- In psm-_.json, no need to provide all coupling matrices, just need the actuator to position
- MTM: Homing is now slower to prevent hard hits on roll joint. Also just looking for lower limit instead of both lower and upper limits
- Teleop PSM:
- Added support for alternate master arm (sawForceDimensionSDK)
- Console:
- Added support for dynamic loading of external cisst/SAW components (e.g. sawKeyboard, sawForceDimensionSDK, sawSensablePhantom)
- Support for alternate foot pedals (keyboard) and master arms (Novint Falcon, ForceDimension)
- Separated configuration files for digital inputs/outputs from arm configuration files (see API changes)
- Uses new standardized mtsMessage for Qt messages and ROS log
- Console Qt:
- Added tag/clear shortcuts in message window
- Can power all arms without homing, this allows to test safety chain and pot/encoders without PID on
- SUJ:
- use state machine compatible with other arms
- now reports joint values even if the arm is not in state "READY"
- minor updates for firmware 6
- use joint state instead of joint position
- CMake:
- Everything can now be compiled on Windows when using proper branch of sawRobotIO
- ROS:
- Bug fixes:
- Fixed loading joint coupling matrix when the arm is started with a tool in place
- Fixed jumps at homing and control mode transitions with rewritten PID component