Skip to content

Releases: epics-modules/urRobot

R2-2

29 May 14:16

Choose a tag to compare

Minor feature release

New Features

  • Custom URScript support: (See #5, #9). Ability to upload and run arbitrary URScript programs on the robot controller.
    An additional screen for custom URScripts was created and a related display for it was added to ur_rtde_control screen.

Other Improvements

  • Additional waypoint performance improvements (#7, #8): Refactored waypoint "reached" logic (again). There is now a
    separate waypoint_reached.db and waypoints.lua was refactored. Now only the active waypoint is monitored.
  • TCP offset controls moved to separate related display on ur_rtde_control screen.
  • Replaced outdated CSS-Phoebus .bob screens with autoconverted ones from MEDM.
  • Fix Makefiles so urExample IOC is built automatically when BUILD_IOCS=YES
  • Updated documentation

R2-1

01 May 18:08

Choose a tag to compare

Fixes high CPU usage issue (see f774c14)

Waypoint:Reached luascript records (e.g. urExample:WaypointJ:1:Reached) previously used CP links for all the inputs. This caused the record to process on every update of the Receive interface's polling loop (typically set to 50Hz) and therefore caused very high CPU usage. On my machine, while idle htop shows 100% usage (a full core) before this fix. After the fix, just ~20%!

The change in f774c14 brought to light a fragile synchronization problem in the paths.lua logic, which was fixed in 1e2ff33


Known Issues:

R2-0

31 Mar 22:47

Choose a tag to compare

A big release with lots of bug fixes and improvements.

Bug Fixes

  • Fixed IOC crash when robot is switched out of remote control mode. The
    dashboard driver's DashboardClient throws a boost::system::system_error
    when the connection drops, which previously propagated out of the poll thread
    and called std::terminate(). Added exception handling in the dashboard
    driver's poll loop, writeInt32, and writeOctet methods. Catch blocks call
    disconnect() to ensure isConnected() returns false on subsequent poll
    iterations. The gripper driver is also protected since it reads robot state
    from the dashboard driver's asyn parameters rather than making its own
    dashboard connection.

    Recovery procedure after switching out of remote control mode:

    1. Switch the robot back to remote control mode on the teach pendant
    2. Press the stop button on the teach pendant, or process Dashboard:Stop
    3. Reconnect the dashboard: process Dashboard:Connect
    4. Reconnect the control interface: process Control:Reconnect

Breaking Changes

  • RTDEControlConfig now requires 4 arguments (previously 3). The new
    signature is:

    RTDEControlConfig("port_name", "dashboard_driver_name", "receive_driver_name", poll_period)
    

    The robot IP is no longer passed directly; it is obtained from the dashboard
    driver. Any IOC startup scripts or iocsh files calling RTDEControlConfig
    must be updated.

  • URGripperConfig second argument changed from robot IP to the dashboard
    driver port name:

    URGripperConfig("port_name", "dashboard_driver_name", poll_period)
    
  • Default asyn port names changed. The _INSTANCE macros in urRobot.iocsh
    have been renamed to _PORT and the asyn_ prefix has been removed from
    default values.

Enhancements

  • Simplified inter-driver communication. Drivers that need data from other
    drivers now use findDerivedAsynPortDriver and getIntegerParam/getStringParam
    instead of creating duplicate ur_rtde connections:

    • URGripper no longer maintains its own DashboardClient. It reads robot
      mode from the URDashboard driver's asyn parameters, eliminating the
      duplicate connection to port 29999.
    • RTDEControl no longer maintains its own RTDEReceiveInterface. It reads
      safety status bits from the RTDEReceive driver's asyn parameters.
    • RTDEControl reads robot mode from the URDashboard driver via
      asynOctetSyncIO instead of creating a temporary DashboardClient.
  • Simplified the async motion state machine in RTDEControl.

    • Added waypoint_move flag to distinguish waypoint moves from regular
      moveJ/moveL. The driver resets the flag automatically after each waypoint
      move. Users should generally not interact with this.
  • Replaced subArray indexing for joint/TCP pose commands with dedicated asyn
    parameters using per-joint addresses (addr 0-5). Simplifies client-side usage.

  • Commanded values now sync to readback values when auto-move transitions to
    YES. This prevents the situation where you tweak an axis, then realize it was not in
    auto-move mode, you switch to auto-move, then tweak again and it moves twice and much
    as originally intended.

Misc

  • Added .req file for IO:SpeedSlider.
  • Updated docstrings in header files.
  • Updated documentation.

R1-0

10 Mar 17:39

Choose a tag to compare

First major release