Files
breezyslam/java/edu/wlu/cs/levy/breezyslam/components/Laser.java
2018-06-30 22:36:15 -04:00

109 lines
3.5 KiB
Java

/**
*
* BreezySLAM: Simple, efficient SLAM in Java
*
* Laser.java - Java code for Laser model class
*
* Copyright (C) 2014 Simon D. Levy
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this code. If not, see <http://www.gnu.org/licenses/>.
*/
package edu.wlu.cs.levy.breezyslam.components;
/**
* A class for scanning laser rangefinder (Lidar) parameters.
*/
public class Laser
{
protected int scan_size;
protected double scan_rate_hz;
protected double detection_angle_degrees;
protected double distance_no_detection_mm;
protected int detection_margin;
protected double offset_mm;
/**
* Builds a Laser object from parameters based on the specifications for your
* Lidar unit.
* @param scan_size number of rays per scan
* @param scan_rate_hz laser scan rate in Hertz
* @param detection_angle_degrees detection angle in degrees (e.g. 240, 360)
* @param detection_margin number of rays at edges of scan to ignore
* @param offset_mm forward/backward offset of laser motor from robot center
* @return a new Laser object
*
*/
public Laser(
int scan_size,
double scan_rate_hz,
double detection_angle_degrees,
double distance_no_detection_mm,
int detection_margin,
double offset_mm)
{
this.scan_size = scan_size;
this.scan_rate_hz = scan_rate_hz;
this.detection_angle_degrees = detection_angle_degrees;
this.distance_no_detection_mm = distance_no_detection_mm;
this.detection_margin = detection_margin;
this.offset_mm = offset_mm;
}
/**
* Builds a Laser object by copying another Laser object.
* Lidar unit.
* @param laser the other Laser object
*
*/
public Laser(Laser laser)
{
this.scan_size = laser.scan_size;
this.scan_rate_hz = laser.scan_rate_hz;
this.detection_angle_degrees = laser.detection_angle_degrees;
this.distance_no_detection_mm = laser.distance_no_detection_mm;
this.detection_margin = laser.detection_margin;
this.offset_mm = laser.offset_mm;
}
/**
* Returns a string representation of this Laser object.
*/
public String toString()
{
String format = "scan_size=%d | scan_rate=%3.3f hz | " +
"detection_angle=%3.3f deg | " +
"distance_no_detection=%7.4f mm | " +
"detection_margin=%d | offset=%4.4f m";
return String.format(format, this.scan_size, this.scan_rate_hz,
this.detection_angle_degrees,
this.distance_no_detection_mm,
this.detection_margin,
this.offset_mm);
}
/**
* Returns the offset of the laser in mm, from the center of the robot.
*
*/
public double getOffsetMm()
{
return this.offset_mm;
}
}