Developing with Inverse3
This article builds on the quick-start guide and serves as an introduction to the Inverse3 as a haptic development tool. To this end, it discusses various hardware configurations, methods of control, and key features that change the behaviour of the device.
Device Handedness and Coordinate System
The Inverse3 has two hardware configurations which are optimised for different scenarios.
Each device can be used by either left or right-handed users, but right-handed users may find right-handed configured devices easier to use in some situations.
Using two devices together in a bimanual scenario, the left-handed device should be placed on the left side and right-handed device on the right to minimise collisions and interference.
Both devices follow a right-handed coordinate system shown on the device plaques located on the arm side of the Inverse3. The coordinate system origin is located on the flat face of the device’s mounting plate, near the centre.
Check the HardwareAPI documentation for the language or plugin you plan to use as the coordinate system provided in the APIs may already follow the game engine specific coordinate system.
Controlling the Inverse3
Control of the Inverse3 is not limited to the control of forces; it is also possible to control its joint torques and angles. This section outlines the various control modes, and the relevant inputs and outputs with their respective units.
Using either mode comes with intrinsic risks to both users and the device, for safety information see Inverse3 Safe Use
Cartesian Control
Force control is the preferred method for using Inverse3 as it takes force in newtons (N), and returns its position in meters (m) and velocity in meters per second (m/s). In position control mode the Inverse3 moves and maintains a specified position. Switching between the two modes is seamless which means that they can be used together to provide a better user experience. For example, the device can be moved away from interactable objects at the start of a simulation or, with use of a tracked VerseGrip, position control mode can hold the cursor’s position when switching tools.
Setting a position that is outside of the device range will not return errors, but the device will slowly fall.
Joint Control
Analogously, Inverse3 joint torques and angles can be controlled directly. In torque control mode the device will generate torque specified in newtons per millimeters (N·mm) and in joint angle control it will move to an angle specified in degrees (°). In either case, the device returns its position in ° and velocity in degrees per second (°/s).
Colour Codes
The Haply logo status light changes colour based on the device’s operating mode:
Red | Connected to the computer |
Flashing Red | Calibrating |
Yellow | Connection Timed Out |
Green | In use: Force, Torque Control |
Blue | In use: Position, Angle Control |
Purple | In use: Unpowered |
Optional Performance Improvement Features
Inverse3 has multiple features that aim to provide control over its performance and feel. This section provides a brief overview of these features and their use.
Velocity Estimation
Velocity cannot be measured directly so it is typically derived from the position resulting in a noisy and inaccurate signal that requires filtering. The Inverse3 comes with an onboard velocity estimation algorithm that takes advantage of the close hardware integration, producing a velocity signal that does not need filtering.
The velocity estimate is an estimate and may not be fully accurate. Its accuracy and performance may be subject to change as we work to improve it.
Gravity Compensation
Gravity compensation eliminates the forces resulting from the mass of the Inverse3’s components making it feel weightless irrespective of mounting orientation. At the start of a simulation the device uses an onboard sensor to calibrate the algorithm; changing the device orientation during operation will lead to erratic behaviour.
Gravity compensation only works in force control mode.
The gravity compensation strength is adjustable using a gravity scaling factor (set to 0.75 by default) and it can be turned off all together using API-specific commands (see the API reference for details) .
Force Scaling
The Inverse3 generates different force magnitudes in different directions. As a result, trying to generate a force that exceeds Inverse3’s capabilities can result in a force with a different direction to the desired force. Enabling force scaling preserves the direction of the force but lowers its magnitude. This feature is turned on by default, but it can be disabled using the API-specific commands.
VerseGrip Orientation Tracking
Tracking tool orientation with the Inverse3 requires a VerseGrip.
Learn more about the VerseGrips in Quick Start: VerseGrip article.