Archive for the ‘warehouse’ Category

Laser Range finder & Python

Friday, March 7th, 2008

The Hokuyo URG04 LIDAR now works as expected. This is the code I used to read and display the data.

See here for possible applications.

Identifying locations in the Warehouse

Tuesday, March 4th, 2008

If you want to computerize your warehouse you need to identify storage locations within the Warehouse. Usually you label every possible storage location with a 3D coordinate.

Then every location can have it’s unique ID consisting of Row of shelfes (red in the image above), Column (all locations above each other; blue in the image above) and Level (all location besides each other; yellow in the image above).

This scheme allows you to label allocations with Row-Column-Level, e.g. 01-02-03 for the first Row, second Column, third Level. Usually labels identifying the storage locations are places on the shelfing above level 1.

Building a Pallet Identifying Fork Lift

Sunday, March 2nd, 2008

If you building deep IT integration in a warehouse you probably want to now which Pallets are where. Your WMS knows where the Pallets should be placed. But where are they placed in reality? Since usually Pallets are transported by Fork Lift it would help to exactly know what is really is on the Fork Lifts.

An easy way to make Pallets identifiable is to put Barcode stickers on the Pallets. If you place them on the middle block they are easy to fix there by glue or clamps and easy to read automatically.

One good location to place a barcode reader is at the fork/mast assembly (detail):

Mount the scanner looking about 30 degrees downward. At the mast assembly the barcode scanner is relatively well protected against damage an can be affixed without to much hassle. The main obstacle is getting power and data lines from the moving fork/mast assembly to the chassis.

After mounting the scanner it should permanently project a scan line on the forks about 80 cm away from the mast.

Now when the fork lift picks up a pallet it should automatically read the barcode during entering the pallet. See below for an illustration:

myPL: the Erlang-based Warehouse

Saturday, December 1st, 2007

Last week we launched my so far biggest software project: a Warehouse Managment System (WMS) for my company. A WMS manages the flow of goods and the allocation of resources (forklifts, storage space, personnel, etc.) inside a warehouse.

After figuring out that the WMS that came with our ERP Software Stack from SoftM AG was a) bad software and b) never really integrated into our processes we decided to write our own replacement for it.

We started about 18 Months ago one experimental testbed and two prototypes using different techniques in Python. In October 2007 we started the final implementation.

The Software uses a custom built database optimized for warehousing, called kernelE. kernelE ist written using the Erlang/OTP Software framework. kernelE is depicted in gray in the diagram above. The size of kernelE is about 5500 LoC Erlang Code of which 10% are auto generated interface code.

kernelE is used by a Python application build with the Django framework. This Python Application is also providing the buiseness logic and the interfacing to the legacy AS/400 based ERP System. The Python application contains slightly more than 1000 LoC and depends heavily on Metaprogramming techniques like higher Order functions and Metaclasses.

It also sits on top of a 8100 LoC interface library for communicating with the AS/400 and 400 LoC for logistics calculations. These Libraries where developed during the building of the various prototypes.

All in all I’m pretty amazed how well it all worked out. Some more Information on it in german can be found here, here, here and here.