Game
We designed a simple game to show off both the control and feedback capabilities of the the Impulse. In our game the player controls a black rectangular gameobject (GO) by moving and rotating the Stewart platform. Players interact with square game objects by pushing against them or picking them up with the player. Whenever the player collides with a game element, the platform will resist and even push against the player’s hand giving the feeling of pushing against a real object.
The greatest challenge the game design was creating a compliant control scheme that allowed the player to have control over position and rotation of the game object while at the same time allowing the game object to react to collisions is a natural way. Our solution was to take advantage of Unity’s internal physics engine and calculate the game object's motion using forces.
To position the game object we use two points, the first point represents the OG's position in X,Y,Z space. The second point is the calculated position of the Stewart platform or in other words, where we want the game object to go. To move the GO, forces are applied in the X,Y and Z direction that are proportional to the difference between the two points. The farther the game object is from its desired point the faster it will get there. In Order to prevent the game object from overshooting its desired position and displaying a springlike motion, we enabled damping in the unity engine.
The greatest challenge the game design was creating a compliant control scheme that allowed the player to have control over position and rotation of the game object while at the same time allowing the game object to react to collisions is a natural way. Our solution was to take advantage of Unity’s internal physics engine and calculate the game object's motion using forces.
To position the game object we use two points, the first point represents the OG's position in X,Y,Z space. The second point is the calculated position of the Stewart platform or in other words, where we want the game object to go. To move the GO, forces are applied in the X,Y and Z direction that are proportional to the difference between the two points. The farther the game object is from its desired point the faster it will get there. In Order to prevent the game object from overshooting its desired position and displaying a springlike motion, we enabled damping in the unity engine.
GO Control: (Left) GO location (white) is very close to platform location. (Middle Left) platform location moves away from GO force (Red Arrow) is applied to GO in direction of platform location. (Middle Right) As GO approaches the desired location force decreases. (Right) GO is at equilibrium at the platform location.
This gives players complete control over the GO so long as it encounters no environmental forces. If environment forces are encountered they will influence the motion of the Go in ways the player can not directly control. These interactions vary with the strength of the environmental force, small constant forces such as gravity do not hamper the control of the GO where as large sudden forces such as those generated by collisions can completely negate player control.
The rotation of the GO is controlled in a very similar fashion as its position. Torques are applied that are related to the angular displacement of GO and Stewart platform.
Ideally the Stewart platform would constantly provide force feedback to the player. However, we found that even with soft servos constantly fighting against the platform quickly got tiring. To work around this limitation we implemented two modes, control mode and feedback mode. In control mode, the motors are not powered simply act as GO for measuring platform position. In feedback mode the motors are powered and are actively moving the stewart platform to a desired position. It is important to know players can control the game object in both modes but in feedback mode the motors push back.
In the current game feedback mode is only implemented when the GO collides with something such as a wall or the ground. On these collisions, the Stewart platform enters feedback mode and tries to move to the current location of the GO.
Ideally the Stewart platform would constantly provide force feedback to the player. However, we found that even with soft servos constantly fighting against the platform quickly got tiring. To work around this limitation we implemented two modes, control mode and feedback mode. In control mode, the motors are not powered simply act as GO for measuring platform position. In feedback mode the motors are powered and are actively moving the stewart platform to a desired position. It is important to know players can control the game object in both modes but in feedback mode the motors push back.
In the current game feedback mode is only implemented when the GO collides with something such as a wall or the ground. On these collisions, the Stewart platform enters feedback mode and tries to move to the current location of the GO.