Skip to content

Commit

Permalink
Merge pull request #9 from openhumanoids/mf-seperate-maps-from-lcm
Browse files Browse the repository at this point in the history
seperate maps from lcm
  • Loading branch information
Maurice Fallon authored Mar 1, 2017
2 parents b3acfbf + 83f05e6 commit 2662f2b
Show file tree
Hide file tree
Showing 197 changed files with 464 additions and 2,848 deletions.
17 changes: 13 additions & 4 deletions maps_server/CMakeLists.txt → CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,26 +1,35 @@
cmake_minimum_required(VERSION 2.6.0)

# pull in the pods macros. See cmake/pods.cmake for documentation
set(POD_NAME maps-server)
set(POD_NAME maps)
find_package(PkgConfig)
pkg_check_modules(LCMTYPES_BOT2CORE lcmtypes_bot2-core)
include_directories(${LCMTYPES_BOT2CORE_INCLUDE_DIRS})
include(cmake/pods.cmake)

include(cmake/lcmtypes.cmake)
lcmtypes_build()

# main maps library (no application)
add_subdirectory(src/libmaps)
add_subdirectory(src/maps)

# maps library specific to lcm
add_subdirectory(src/maps-lcm)

# library: minimal version of the above
add_subdirectory(src/libmaps-mini)
add_subdirectory(src/maps-mini)

# library: used for filling in cell in height maps
add_subdirectory(src/terrain-map)

# applications using libmaps
# LCM applications using maps and maps_lcm
add_subdirectory(src/server)
add_subdirectory(src/apps)

# misc utils
add_subdirectory(src/utils)

add_subdirectory(src/plane-seg)

# Maps GTK renderer works as of Feb 2017
#add_subdirectory(src/renderers)
58 changes: 36 additions & 22 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,35 +1,49 @@
# Default pod makefile distributed with pods version: 12.09.21

default_target: all

# get a list of subdirs to build by reading tobuild.txt
SUBDIRS:=$(shell grep -v "^\#" tobuild.txt)
# Default to a less-verbose build. If you want all the gory compiler output,
# run "make VERBOSE=1"
$(VERBOSE).SILENT:

# Figure out where to build the software.
# Use BUILD_PREFIX if it was passed in.
# If not, search up to three parent directories for a 'build' directory.
# If not, search up to four parent directories for a 'build' directory.
# Otherwise, use ./build.
ifeq "$(BUILD_PREFIX)" ""
BUILD_PREFIX=$(shell for pfx in ./ .. ../.. ../../..; do d=`pwd`/$$pfx/build; \
BUILD_PREFIX:=$(shell for pfx in ./ .. ../.. ../../.. ../../../..; do d=`pwd`/$$pfx/build;\
if [ -d $$d ]; then echo $$d; exit 0; fi; done; echo `pwd`/build)
endif
# create the build directory if needed, and normalize its path name
BUILD_PREFIX:=$(shell mkdir -p $(BUILD_PREFIX) && cd $(BUILD_PREFIX) && echo `pwd`)

# build quietly by default. For a verbose build, run "make VERBOSE=1"
$(VERBOSE).SILENT:
# Default to a release build. If you want to enable debugging flags, run
# "make BUILD_TYPE=Debug"
ifeq "$(BUILD_TYPE)" ""
BUILD_TYPE="Release"
endif

all: pod-build/Makefile
$(MAKE) -C pod-build all install

all:
@[ -d $(BUILD_PREFIX) ] || mkdir -p $(BUILD_PREFIX) || exit 1
@for subdir in $(SUBDIRS); do \
echo "\n-------------------------------------------"; \
echo "-- $$subdir"; \
echo "-------------------------------------------"; \
$(MAKE) -C $$subdir all || exit 2; \
done
@# Place additional commands here if you have any
pod-build/Makefile:
$(MAKE) configure

.PHONY: configure
configure:
@echo "\nBUILD_PREFIX: $(BUILD_PREFIX)\n\n"

# create the temporary build directory if needed
@mkdir -p pod-build

# run CMake to generate and configure the build scripts
@cd pod-build && cmake -DCMAKE_INSTALL_PREFIX=$(BUILD_PREFIX) \
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) ..

clean:
@for subdir in $(SUBDIRS); do \
echo "\n-------------------------------------------"; \
echo "-- $$subdir"; \
echo "-------------------------------------------"; \
$(MAKE) -C $$subdir clean; \
done
@# Place additional commands here if you have any
-if [ -e pod-build/install_manifest.txt ]; then rm -f `cat pod-build/install_manifest.txt`; fi
-if [ -d pod-build ]; then $(MAKE) -C pod-build clean; rm -rf pod-build; fi

# other (custom) targets are passed through to the cmake-generated Makefile
%::
$(MAKE) -C pod-build $@
66 changes: 66 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
***********
Maps Server
***********

The maps server is a request-respond application for collating local LIDAR (or stereo) data into a point cloud and the serving outputs from that point cloud such as heightmaps, depthmaps or octrees.

Care is take to make the application:

* Minimal: except for the standard libararies mentioned below
* Data-efficient: an support transmission of local maps at 5KB/sec - sufficient for a very very weak wireless link
* Stateless: all content output by the server is self enclosed

The software was developed for the 2015 MIT DARPA Robotics Challenge team.

**Details about message flow**

TODO: put flow chart here

1. DATA_REQUEST: tiny message requesting a high level type of map (a few bits in size). Made by UI e.g. Director. (A)
2. MAP_REQUEST: specific details of map of interest (a few bytes). Made by the data-request-server. (B)
3. MAP_DEPTH: actual height/depth map data stream. Published by maps-server (C)

MAP_OCTREE: as for MAP_DEPTH above except an Octree, messages 10x larger

**(A) enum types supported by data request**

- short range, detailed height map (for footstep planning)
- long range, coarse height map (for navigation planning)
- short range depth map (for manipulation)
- long range depth map (for situational awareness)
- octomap (for manipulation)
- stereo depth map

**(B) information in the maap request**

- which data type to use (depth image, point cloud, octree
- time window to accumulate
- virtual camera to use to project data
- quantization level, resolution
- height estimation mode e.g. median, mean, nearest

**(C) details about the actual maps produced**

The maps is entirely self contained e.g. it doesn't use bot frames or tf, or joint angles. It contains:

- id to identify it
- resolution, compression (e.g. Zlib usually)
- projective transformation matrix for data
- data blob

Example data rate for short range height map: 5KB at 1Hz


**Dependencies**

* Required: PCL, Octomap
* Optional: LCM, libbot

**Pods**

This software is constructed according to the Pods software policies and
templates. The policies and templates can be found at:

* http://sourceforge.net/projects/pods


File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
12 changes: 0 additions & 12 deletions maps_lcmtypes/CMakeLists.txt

This file was deleted.

49 changes: 0 additions & 49 deletions maps_lcmtypes/Makefile

This file was deleted.

20 changes: 0 additions & 20 deletions maps_lcmtypes/README

This file was deleted.

Loading

0 comments on commit 2662f2b

Please sign in to comment.