Added Java support.

This commit is contained in:
Simon D. Levy
2014-10-26 17:46:47 -04:00
parent 721f75e2af
commit 08ab4a55bb
36 changed files with 630 additions and 311 deletions

View File

@@ -18,30 +18,41 @@
# Where you put the libbreezyslam library
LIBDIR = /usr/local/lib
JAVADIR = ../java/edu/wlu/cs/levy/breezyslam
# Use EOG or your favorite image-display program
VIEWER = eog
# Set these for different experiments
DATASET = exp2
USE_ODOMETRY = 1
USE_ODOMETRY = 0
RANDOM_SEED = 9999
all: log2pgm
all: log2pgm Log2PGM.class
pytest:
./log2pgm.py $(DATASET) $(USE_ODOMETRY) $(RANDOM_SEED)
$(VIEWER) $(DATASET).pgm
$(VIEWER) $(DATASET).pgm ~/Desktop/$(DATASET).pgm
cpptest: log2pgm
./log2pgm $(DATASET) $(USE_ODOMETRY) $(RANDOM_SEED)
$(VIEWER) $(DATASET).pgm
javatest: Log2PGM.class
java -classpath ../java:. -Djava.library.path=$(JAVADIR)/algorithms:$(JAVADIR)/components Log2PGM \
$(DATASET) $(USE_ODOMETRY) $(RANDOM_SEED)
$(VIEWER) $(DATASET).pgm
log2pgm: log2pgm.o
g++ -O3 -o log2pgm log2pgm.o -L$(LIBDIR) -lbreezyslam
log2pgm.o: log2pgm.cpp
g++ -O3 -c -I ../cpp log2pgm.cpp
Log2PGM.class: Log2PGM.java
javac -classpath ../java Log2PGM.java
$(DATASET).pgm:
./log2pgm.py $(DATASET) $(USE_ODOMETRY) $(RANDOM_SEED)
@@ -49,4 +60,4 @@ backup:
cp -r .. ~/Documents/slam/bak-breezyslam
clean:
rm -f log2pgm *.pyc *.pgm *.o *~
rm -f log2pgm *.pyc *.pgm *.o *.class *~

View File

@@ -106,7 +106,6 @@ static void load_data(
while (fgets(s, MAXLINE, fp))
{
char * cp = strtok(s, " ");
long * odometry = new long [3];
odometry[0] = atol(cp);
@@ -356,11 +355,11 @@ int main( int argc, const char** argv )
}
else
{
((RMHC_SLAM *)slam)->update(lidar);
slam->update(lidar);
}
Position position = slam->getpos();
// Add new coordinates to trajectory
double * v = new double[2];
v[0] = position.x_mm;

View File

@@ -3,6 +3,14 @@
% data from Paris Mines Tech and displays the map and robot
% position in real time.
%
% Usage:
%
% >> logdemo(dataset, [use_odometry], [random_seed])
%
% Examples:
%
% >> logdemo('exp2')
%
% For details see
%
% @inproceedings{coreslam-2010,
@@ -84,7 +92,7 @@ for scanno = 1:size(scans, 1)
% Update SLAM with lidar alone
slam = slam.update(scans(scanno,:));
end
% Get new position
[x_mm, y_mm, theta_degrees] = slam.getpos();
@@ -110,7 +118,6 @@ for scanno = 1:size(scans, 1)
x_pix = x_pix_r + mm2pix(x_mm, MAP_SIZE_METERS, MAP_SIZE_PIXELS);
y_pix = y_pix_r + mm2pix(y_mm, MAP_SIZE_METERS, MAP_SIZE_PIXELS);
% Add robot image to map
fill(x_pix, y_pix, 'r')
drawnow

View File

@@ -64,11 +64,11 @@ def load_data(datadir, dataset):
break
toks = s.split()[0:-1] # ignore ''
odometry = (int(toks[0]), int(toks[2]), int(toks[3]))
lidar = [int(tok) for tok in toks[24:]]
scans.append(lidar)
odometries.append(odometry)