#ifndef __RANGEFINDER_H__ #define __RANGEFINDER_H__ #include #include #include // Filter library /* * #define AP_RANGEFINDER_ORIENTATION_FRONT 0, 10, 0 * #define AP_RANGEFINDER_ORIENTATION_RIGHT -10, 0, 0 * #define AP_RANGEFINDER_ORIENTATION_BACK 0,-10, 0 * #define AP_RANGEFINDER_ORIENTATION_LEFT 10, 0, 0 * #define AP_RANGEFINDER_ORIENTATION_UP 0, 0,-10 * #define AP_RANGEFINDER_ORIENTATION_DOWN 0, 0, 10 * #define AP_RANGEFINDER_ORIENTATION_FRONT_RIGHT -5, -5, 0 * #define AP_RANGEFINDER_ORIENTATION_BACK_RIGHT -5, -5, 0 * #define AP_RANGEFINDER_ORIENTATION_BACK_LEFT 5, -5, 0 * #define AP_RANGEFINDER_ORIENTATION_FRONT_LEFT 5, 5, 0 */ class RangeFinder { protected: RangeFinder(AP_HAL::AnalogSource * source, FilterInt16 *filter) : _analog_source(source), _mode_filter(filter) { } public: // raw_value: read the sensor int raw_value; // distance: in cm int distance; // maximum measurable distance: in cm int max_distance; // minimum measurable distance: in cm int min_distance; int orientation_x, orientation_y, orientation_z; void set_orientation(int x, int y, int z); /** * convert_raw_to_distance: * function that each child class should override to convert voltage * to distance (in cm) */ virtual int convert_raw_to_distance(int _raw_value) { return _raw_value; } /** * read: * read value from sensor and return distance in cm */ virtual int read(); AP_HAL::AnalogSource* _analog_source; FilterInt16 * _mode_filter; }; #endif // __RANGEFINDER_H__