Skip to content

Releases: jhu-dvrk/sawIntuitiveResearchKit

2.3.0

31 Aug 15:00
91a937f
Compare
Choose a tag to compare

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 and examples are now under core. The directory ros 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

29 Dec 21:00
356bac3
Compare
Choose a tag to compare

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
    • 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
  • 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

29 Nov 14:41
7dd6827
Compare
Choose a tag to compare

2.2.0 (2023-11-21)

  • API changes:
  • 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 used
    • rotation configuration parameter for PSM teleoperation, Use the base-frame in console JSON configuration file instead.
    • mainQtArm application, should use sawIntuitiveResearchKitQtConsole 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
    • 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 and arm/inverse_kinematics
      • Publisher arm/crtk_version (i.e. 1.1.0)
      • Subscribers arm/free and arm/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
    • 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/from servo)
    • Fixed emulate adapter/tool

2.1.0

11 Aug 15:48
Compare
Choose a tag to compare

2.1.0 (2021-08-11)

2.0.1

25 May 16:01
Compare
Choose a tag to compare

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
  • Bug fixes:
    • Fixed examples of configuration files for data collection using cisstMultiTask state table collectors

2.0.0

07 Apr 20:04
Compare
Choose a tag to compare

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 using CamelCase) 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 dependencies
      • crtk-ros-commands.dict: ROS topics translation, mostly to port applications using the ROS topics directly
      • members-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 and kinematic for arms. Instead, use serial and optionally system. 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 to arm, kinematic, console.
  • 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 with wstool. 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
    • 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
    • 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 superseed qlacloserelays. 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
  • 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

05 Jul 02:40
Compare
Choose a tag to compare

1.7.1 (2019-07-04)

  • API changes:
    • None
  • Deprecated features:
    • None
  • New features:
    • None
  • Bug fixes:
    • Fixed joint velocity abs bug in GC controller: #117

1.7.0

09 Apr 19:49
Compare
Choose a tag to compare

1.7.0 (2019-04-09)

  • API changes:

  • Deprecated features:

    • kinematic field in JSON console config file has been replaced by arm 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:
      • Fixed valid/timestamp for jaw/gripper joint states
      • Fixed PSM jaw transitions between servo and move modes (see issue #112)
      • Removed reference to deprecated mtml.json and mtmr.json in configuration files (see issue #106)

1.6.0

16 May 23:09
Compare
Choose a tag to compare

1.6.0 (2018-05-16)

  • API changes:
  • Deprecated features:
    • Fixed reference frames to match ISI convention on real da Vinci systems. mtml.json and mtmr.json are now deprecated
    • In arm JSON configuration files, do not use base-offset. Use console JSON configuration base-frame instead
    • Teleop PSM/ECM JSON: rotation is now moved under configure-parameter
    • Standard (i.e. not system specific) IO XML configuration files moved to share/io folder. Console class will search in share/io so this should be backward compatible
  • 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:
    • 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
  • Bug fixes:
    • Fixed data member initialization (valgrind)

1.5.0

08 Nov 00:17
Compare
Choose a tag to compare

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