Velocities => PoseChange
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,3 +1,6 @@
|
|||||||
|
java/edu/wlu/cs/levy/breezyslam/algorithms/RMHCSLAM.h
|
||||||
|
java/edu/wlu/cs/levy/breezyslam/components/Map.h
|
||||||
|
java/edu/wlu/cs/levy/breezyslam/components/Scan.h
|
||||||
examples/__pycache__
|
examples/__pycache__
|
||||||
examples/*.pyc
|
examples/*.pyc
|
||||||
examples/*.pgm
|
examples/*.pgm
|
||||||
@@ -7,6 +10,7 @@ examples/log2pgm
|
|||||||
python/breezyslam/*.pyc
|
python/breezyslam/*.pyc
|
||||||
python/breezyslam/__pycache__
|
python/breezyslam/__pycache__
|
||||||
python/build
|
python/build
|
||||||
|
*.class
|
||||||
*.o
|
*.o
|
||||||
*.so
|
*.so
|
||||||
*.swp
|
*.swp
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
package edu.wlu.cs.levy.breezyslam.algorithms;
|
package edu.wlu.cs.levy.breezyslam.algorithms;
|
||||||
|
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Laser;
|
import edu.wlu.cs.levy.breezyslam.components.Laser;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Velocities;
|
import edu.wlu.cs.levy.breezyslam.components.PoseChange;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Map;
|
import edu.wlu.cs.levy.breezyslam.components.Map;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Scan;
|
import edu.wlu.cs.levy.breezyslam.components.Scan;
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ import edu.wlu.cs.levy.breezyslam.components.Scan;
|
|||||||
* </pre>
|
* </pre>
|
||||||
* Implementing classes should provide the method
|
* Implementing classes should provide the method
|
||||||
*
|
*
|
||||||
* void updateMapAndPointcloud(int * scan_mm, Velocities & velocities)
|
* void updateMapAndPointcloud(int * scan_mm, PoseChange & poseChange)
|
||||||
*
|
*
|
||||||
* to update the map and point-cloud (particle cloud).
|
* to update the map and point-cloud (particle cloud).
|
||||||
*
|
*
|
||||||
@@ -62,7 +62,7 @@ public abstract class CoreSLAM {
|
|||||||
|
|
||||||
protected Laser laser;
|
protected Laser laser;
|
||||||
|
|
||||||
protected Velocities velocities;
|
protected PoseChange poseChange;
|
||||||
|
|
||||||
protected Map map;
|
protected Map map;
|
||||||
|
|
||||||
@@ -74,8 +74,8 @@ public abstract class CoreSLAM {
|
|||||||
// Set default params
|
// Set default params
|
||||||
this.laser = new Laser(laser);
|
this.laser = new Laser(laser);
|
||||||
|
|
||||||
// Initialize velocities (dxyMillimeters, dthetaDegrees, dtSeconds) for odometry
|
// Initialize poseChange (dxyMillimeters, dthetaDegrees, dtSeconds) for odometry
|
||||||
this.velocities = new Velocities();
|
this.poseChange = new PoseChange();
|
||||||
|
|
||||||
// Initialize a scan for computing distance to map, and one for updating map
|
// Initialize a scan for computing distance to map, and one for updating map
|
||||||
this.scan_for_mapbuild = this.scan_create(3);
|
this.scan_for_mapbuild = this.scan_create(3);
|
||||||
@@ -92,38 +92,38 @@ public abstract class CoreSLAM {
|
|||||||
|
|
||||||
private void scan_update(Scan scan, int [] scan_mm)
|
private void scan_update(Scan scan, int [] scan_mm)
|
||||||
{
|
{
|
||||||
scan.update(scan_mm, this.hole_width_mm, this.velocities);
|
scan.update(scan_mm, this.hole_width_mm, this.poseChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void update(int [] scan_mm, Velocities velocities)
|
public void update(int [] scan_mm, PoseChange poseChange)
|
||||||
{
|
{
|
||||||
// Build a scan for computing distance to map, and one for updating map
|
// Build a scan for computing distance to map, and one for updating map
|
||||||
this.scan_update(this.scan_for_mapbuild, scan_mm);
|
this.scan_update(this.scan_for_mapbuild, scan_mm);
|
||||||
this.scan_update(this.scan_for_distance, scan_mm);
|
this.scan_update(this.scan_for_distance, scan_mm);
|
||||||
|
|
||||||
// Update velocities
|
// Update poseChange
|
||||||
this.velocities.update(velocities.getDxyMm(), velocities.getDthetaDegrees(), velocities.getDtSeconds());
|
this.poseChange.update(poseChange.getDxyMm(), poseChange.getDthetaDegrees(), poseChange.getDtSeconds());
|
||||||
|
|
||||||
// Implementing class updates map and pointcloud
|
// Implementing class updates map and pointcloud
|
||||||
this.updateMapAndPointcloud(velocities);
|
this.updateMapAndPointcloud(poseChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the scan, and calls the the implementing class's updateMapAndPointcloud method with zero velocities
|
* Updates the scan, and calls the the implementing class's updateMapAndPointcloud method with zero poseChange
|
||||||
* (no odometry).
|
* (no odometry).
|
||||||
* @param scan_mm Lidar scan values, whose count is specified in the <tt>scan_size</tt>
|
* @param scan_mm Lidar scan values, whose count is specified in the <tt>scan_size</tt>
|
||||||
* attribute of the Laser object passed to the CoreSlam constructor
|
* attribute of the Laser object passed to the CoreSlam constructor
|
||||||
*/
|
*/
|
||||||
public void update(int [] scan_mm)
|
public void update(int [] scan_mm)
|
||||||
{
|
{
|
||||||
Velocities zero_velocities = new Velocities();
|
PoseChange zero_poseChange = new PoseChange();
|
||||||
|
|
||||||
this.update(scan_mm, zero_velocities);
|
this.update(scan_mm, zero_poseChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected abstract void updateMapAndPointcloud(Velocities velocities);
|
protected abstract void updateMapAndPointcloud(PoseChange poseChange);
|
||||||
|
|
||||||
public void getmap(byte [] mapbytes)
|
public void getmap(byte [] mapbytes)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ package edu.wlu.cs.levy.breezyslam.algorithms;
|
|||||||
|
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Position;
|
import edu.wlu.cs.levy.breezyslam.components.Position;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Laser;
|
import edu.wlu.cs.levy.breezyslam.components.Laser;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Velocities;
|
import edu.wlu.cs.levy.breezyslam.components.PoseChange;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Map;
|
import edu.wlu.cs.levy.breezyslam.components.Map;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Scan;
|
import edu.wlu.cs.levy.breezyslam.components.Scan;
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
package edu.wlu.cs.levy.breezyslam.algorithms;
|
package edu.wlu.cs.levy.breezyslam.algorithms;
|
||||||
|
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Position;
|
import edu.wlu.cs.levy.breezyslam.components.Position;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Velocities;
|
import edu.wlu.cs.levy.breezyslam.components.PoseChange;
|
||||||
import edu.wlu.cs.levy.breezyslam.components.Laser;
|
import edu.wlu.cs.levy.breezyslam.components.Laser;
|
||||||
|
|
||||||
|
|
||||||
@@ -57,17 +57,17 @@ public abstract class SinglePositionSLAM extends CoreSLAM
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the map and point-cloud (particle cloud). Called automatically by CoreSLAM::update()
|
* Updates the map and point-cloud (particle cloud). Called automatically by CoreSLAM::update()
|
||||||
* @param velocities velocities for odometry
|
* @param poseChange poseChange for odometry
|
||||||
*/
|
*/
|
||||||
protected void updateMapAndPointcloud(Velocities velocities)
|
protected void updateMapAndPointcloud(PoseChange poseChange)
|
||||||
{
|
{
|
||||||
// Start at current position
|
// Start at current position
|
||||||
Position start_pos = new Position(this.position);
|
Position start_pos = new Position(this.position);
|
||||||
|
|
||||||
// Add effect of velocities
|
// Add effect of poseChange
|
||||||
start_pos.x_mm += velocities.getDxyMm() * this.costheta();
|
start_pos.x_mm += poseChange.getDxyMm() * this.costheta();
|
||||||
start_pos.y_mm += velocities.getDxyMm() * this.sintheta();
|
start_pos.y_mm += poseChange.getDxyMm() * this.sintheta();
|
||||||
start_pos.theta_degrees += velocities.getDthetaDegrees();
|
start_pos.theta_degrees += poseChange.getDthetaDegrees();
|
||||||
|
|
||||||
// Add offset from laser
|
// Add offset from laser
|
||||||
start_pos.x_mm += this.laser.getOffsetMm() * this.costheta();
|
start_pos.x_mm += this.laser.getOffsetMm() * this.costheta();
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ else
|
|||||||
ARCH = sisd
|
ARCH = sisd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ALL = libjnibreezyslam_components.$(LIBEXT) Laser.class Position.class Velocities.class URG04LX.class
|
ALL = libjnibreezyslam_components.$(LIBEXT) Laser.class Position.class PoseChange.class URG04LX.class
|
||||||
|
|
||||||
all: $(ALL)
|
all: $(ALL)
|
||||||
|
|
||||||
@@ -78,8 +78,8 @@ Laser.class: Laser.java
|
|||||||
URG04LX.class: URG04LX.java Laser.class
|
URG04LX.class: URG04LX.java Laser.class
|
||||||
javac $(JFLAGS) -classpath $(JAVADIR) URG04LX.java
|
javac $(JFLAGS) -classpath $(JAVADIR) URG04LX.java
|
||||||
|
|
||||||
Velocities.class: Velocities.java
|
PoseChange.class: PoseChange.java
|
||||||
javac $(JFLAGS) Velocities.java
|
javac $(JFLAGS) PoseChange.java
|
||||||
|
|
||||||
|
|
||||||
Position.class: Position.java
|
Position.class: Position.java
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
*
|
*
|
||||||
* BreezySLAM: Simple, efficient SLAM in Java
|
* BreezySLAM: Simple, efficient SLAM in Java
|
||||||
*
|
*
|
||||||
* Velocities.java - Java code for Velocities class
|
* PoseChange.java - Java code for PoseChange class, encoding triple
|
||||||
|
* (dxy_mm, dtheta_degrees, dt_seconds)
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014 Simon D. Levy
|
* Copyright (C) 2014 Simon D. Levy
|
||||||
*
|
*
|
||||||
@@ -25,13 +26,13 @@ package edu.wlu.cs.levy.breezyslam.components;
|
|||||||
/**
|
/**
|
||||||
* A class representing the forward and angular velocities of a robot as determined by odometry.
|
* A class representing the forward and angular velocities of a robot as determined by odometry.
|
||||||
*/
|
*/
|
||||||
public class Velocities
|
public class PoseChange
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Velocities object with specified velocities.
|
* Creates a new PoseChange object with specified velocities.
|
||||||
*/
|
*/
|
||||||
public Velocities(double dxy_mm, double dtheta_degrees, double dtSeconds)
|
public PoseChange(double dxy_mm, double dtheta_degrees, double dtSeconds)
|
||||||
{
|
{
|
||||||
this.dxy_mm = dxy_mm;
|
this.dxy_mm = dxy_mm;
|
||||||
this.dtheta_degrees = dtheta_degrees;
|
this.dtheta_degrees = dtheta_degrees;
|
||||||
@@ -39,9 +40,9 @@ public class Velocities
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Velocities object with zero velocities.
|
* Creates a new PoseChange object with zero velocities.
|
||||||
*/
|
*/
|
||||||
public Velocities()
|
public PoseChange()
|
||||||
{
|
{
|
||||||
this.dxy_mm = 0;
|
this.dxy_mm = 0;
|
||||||
this.dtheta_degrees = 0;
|
this.dtheta_degrees = 0;
|
||||||
@@ -49,7 +50,7 @@ public class Velocities
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates this Velocities object.
|
* Updates this PoseChange object.
|
||||||
* @param dxy_mm new forward distance traveled in millimeters
|
* @param dxy_mm new forward distance traveled in millimeters
|
||||||
* @param dtheta_degrees new angular rotation in degrees
|
* @param dtheta_degrees new angular rotation in degrees
|
||||||
* @param dtSeconds time in seconds since last velocities
|
* @param dtSeconds time in seconds since last velocities
|
||||||
@@ -64,7 +65,7 @@ public class Velocities
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a string representation of this Velocities object.
|
* Returns a string representation of this PoseChange object.
|
||||||
*/
|
*/
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
@@ -73,7 +74,7 @@ public class Velocities
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the forward component of this Velocities object.
|
* Returns the forward component of this PoseChange object.
|
||||||
*/
|
*/
|
||||||
public double getDxyMm()
|
public double getDxyMm()
|
||||||
{
|
{
|
||||||
@@ -81,7 +82,7 @@ public class Velocities
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the angular component of this Velocities object.
|
* Returns the angular component of this PoseChange object.
|
||||||
*/
|
*/
|
||||||
public double getDthetaDegrees()
|
public double getDthetaDegrees()
|
||||||
{
|
{
|
||||||
@@ -89,7 +90,7 @@ public class Velocities
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the time component of this Velocities object.
|
* Returns the time component of this PoseChange object.
|
||||||
*/
|
*/
|
||||||
public double getDtSeconds()
|
public double getDtSeconds()
|
||||||
{
|
{
|
||||||
@@ -51,8 +51,8 @@ public class Scan
|
|||||||
public native void update(
|
public native void update(
|
||||||
int [] lidar_mm,
|
int [] lidar_mm,
|
||||||
double hole_width_mm,
|
double hole_width_mm,
|
||||||
double velocities_dxy_mm,
|
double poseChange_dxy_mm,
|
||||||
double velocities_dtheta_degrees);
|
double poseChange_dtheta_degrees);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,12 +86,12 @@ public class Scan
|
|||||||
* Updates this Scan object with new values from a Lidar scan.
|
* Updates this Scan object with new values from a Lidar scan.
|
||||||
* @param scanvals_mm scanned Lidar distance values in millimeters
|
* @param scanvals_mm scanned Lidar distance values in millimeters
|
||||||
* @param hole_width_millimeters hole width in millimeters
|
* @param hole_width_millimeters hole width in millimeters
|
||||||
* @param velocities forward velocity and angular velocity of robot at scan time
|
* @param poseChange forward velocity and angular velocity of robot at scan time
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public void update(int [] scanvals_mm, double hole_width_millimeters, Velocities velocities)
|
public void update(int [] scanvals_mm, double hole_width_millimeters, PoseChange poseChange)
|
||||||
{
|
{
|
||||||
this.update(scanvals_mm, hole_width_millimeters, velocities.dxy_mm, velocities.dtheta_degrees);
|
this.update(scanvals_mm, hole_width_millimeters, poseChange.dxy_mm, poseChange.dtheta_degrees);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user