Hardware Components
Strongback provides abstract interfaces for common actuators, sensors, user controls, and other devices. This makes your subsystems simpler and more focused. And when you use these interfaces in your robot code, your robot can use hardware implementations on the real robot while your tests can use mock implementations so you can test more without the robot hardware.
The following subsections describe each of Strongback’s low-level physical component abstractions:
-
Accelerometers that measure acceleration in one or more axes. Hardware-based accelerometers include the ADXL345 and the RoboRIO’s built-in accelerometer.
-
Angle sensors that measure relative changes in angles, heading, and/or angular rates. Examples of hardware-based angle sensors are encoders, potentiometers, and gyroscopes.
-
Distance sensors are sensors that that measure relative distances. Potentiometers and ultrasonic sensors are examples of hardware-based distance sensors.
-
Switches are sensors that have an active state when triggered and an inactive state when not triggered. Conceptually switches are relatively abstract, but can represent multiple kinds of hardware devices, including Reed switches, limit switches, proximity sensors, magnetic switches, and user-interface buttons. Fuses are a specialization of a switch that can be reset.
-
Motors are devices that can be set to operate at a controllable speed. Each Strongback’s motor represents a physical motor and motor controller pair. For example, a CIM motor and Talon SRX controller would be modeled in Strongback as a single
Motor
object. -
Solenoids are physical devices that can be extended and retracted. Examples of physical solenoid devices include electromagnetic solenoids that move an armature when activated. Pneumatic cylinders and the electromagenetic solenoid valves that control the air are together modeled as one single- or double-acting solenoid in Strongback.
-
Drives are components with multiple motors typically used for robot locomotion. Strongback has a tank drive with multiple motors on each side that are controlled together while those on opposite sides are controlled independently; tank drives can be controlled using arcade-style, tank-style (aka skid-steer), or cheesy-drive human interfaces. It also offers a mechanum drive that has independently-controllable motors on each corner wheel; mechanum drives can be controlled using polor or cartesian systems, and can be used to control holonomic chassis as well.
-
Miscellaneous components such as clocks, temperature sensors, voltage sensors, current sensors, and even larger physical composite devices such as the Power Distribution Panel.