Releases: epics-modules/urRobot
R2-2
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
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:
- IOCs using a version of epics-modules/lua after ec69606 and before 5e84255 will crash due to this issue: epics-modules/lua#26.
- Potential issues/crashes on EPICS Base 7.0.10. Still looking into this.
R2-0
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'sDashboardClientthrows aboost::system::system_error
when the connection drops, which previously propagated out of the poll thread
and calledstd::terminate(). Added exception handling in the dashboard
driver's poll loop,writeInt32, andwriteOctetmethods. Catch blocks call
disconnect()to ensureisConnected()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:
- Switch the robot back to remote control mode on the teach pendant
- Press the stop button on the teach pendant, or process
Dashboard:Stop - Reconnect the dashboard: process
Dashboard:Connect - Reconnect the control interface: process
Control:Reconnect
Breaking Changes
-
RTDEControlConfignow 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 oriocshfiles callingRTDEControlConfig
must be updated. -
URGripperConfigsecond 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
_INSTANCEmacros inurRobot.iocsh
have been renamed to_PORTand theasyn_prefix has been removed from
default values.
Enhancements
-
Simplified inter-driver communication. Drivers that need data from other
drivers now usefindDerivedAsynPortDriverandgetIntegerParam/getStringParam
instead of creating duplicateur_rtdeconnections:URGripperno longer maintains its ownDashboardClient. It reads robot
mode from theURDashboarddriver's asyn parameters, eliminating the
duplicate connection to port 29999.RTDEControlno longer maintains its ownRTDEReceiveInterface. It reads
safety status bits from theRTDEReceivedriver's asyn parameters.RTDEControlreads robot mode from theURDashboarddriver via
asynOctetSyncIOinstead of creating a temporaryDashboardClient.
-
Simplified the async motion state machine in
RTDEControl.- Added
waypoint_moveflag 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.
- Added
-
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
.reqfile forIO:SpeedSlider. - Updated docstrings in header files.
- Updated documentation.