DanielCasner

Robotics and Networked Embedded Systems Wizard

Projects

Creative Commons License I am interested in almost everything. On this page, I've collected a few of the projects I've done in the past or am currently working on. Schematics for my electric bicycle, useful little scripts and applications, and robotic source code among other things. Unless otherwise specified all files here are under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.

Documentation can be extracted from most of these programs using doxygen. Gzipped files (*.gz) should be extracted with the -N option to restore their original filenames.


Software and Libraries

AIBO ERS-220 robot
  • ChuMPD — A Music Player Daemon remote control for the Chumby.
  • Optic Flow for AIBO tek — An impelemntation of optical flow calculation optimized for the AIBO's MIPS processor
  • markov.py .py — A python library providing generic Markov chain related classes for various AI experiments. The emphasis is on generalizablity and efficient execution.
  • TinyOS Voronoi cells and coverage breach computation module nesC — Each node sends its location to its neighbors and then based on neighbor location information calculates its voronoi cell and sends a breach message if part of the cell is outside a set radius.
  • Podcast Agrigator .py — An RSS agrigator specifically for collecting podcasts onto a removable device. Podcast Agrigator can be run either manually or set to run as a daemon which periodically checks to see if a removable storage device (such as an MP3 player or cell phone) is mounted and updates the selected feeds when run. Subscription information is stored on the device so you may connect it to different computers which run Podcast Agrigator and get the same result.
  • py-espeak .py — A "boosted" wrapper for the espeak API It allows you to synthesize speach from python much more conveniently than any of the other python wrappers I found on the Internet. Note: requires Boost.Python and the espeak library and some basic knowledges of linux development to compile.
  • treesearch.py .py — A generic programming fast tree search and A* search implementation in Python.

Electronics

Electric Bicycle
  • Electric Bicycle — A human / electric hybrid bicycle enabling a faster cruising speed powered accessories. Sustaining 30mph makes busy streets safer as it become practical to occupy a full lane. It also makes bicycling practical for longer commutes and more fun. Lighting and the bike computer are powered off of the same batteries as the motor.
    • Notes including more description
    • Bike Computer — including a battery coulomb counter, battery voltage and current sensors, odometer, pedometer and headlight, tail light and turn signal drivers, an alarm buzzer, light level sensor, battery guage LEDs, Bluetooth interface, USB power for charging phones etc. and the ability to log data to a USB flash drive. I decided not to interface with the power electronics beyond inserting a current sense resistor to reduce the design risk. It also means that this bike computer design can be used on other electric bicycles, including off the shelf ones.
  • Fingerz — I am designing an Arduino compatible board based on Atmel's ATmega128RFA1 microprocessor with build in 802.15.4 radio. My hope is that it will be useful for robotics and home automation and also open up mesh networking to the hobby community. Current commercially available mesh nodes like the SunSPOTs cost around $200 per node. Open source code and schematics for my project will be available here soon.

Scripts

  • asi.py 2.3 .py — Author Side Include: For those who don't have access to Apache SSI on their webservers this script is the answer. It processes the #include file=... and #flastmod file=... directives in HTML files. The results are either uploaded via FTP or placed in a local directory. It also keeps track of the last time it was run and only processes files which have been modified since its last exicution. Optionally all files (not just HTML) which have been modified can be uploaded making this a useful synchronization tool.
  • binreplace.py .py — Find and replace in mixed binary / text files. This is especially handy for making modifications to python pickles which for some reason can't be loaded.
  • distcc_hosts.py .py — Tests whether a set of distcc hosts is online or not and sets environmental variables appropriately for distributed compelation.
  • download.py .py — Recursively download files of a specified type from a website.
  • Matex .py — A script which accepts a matrix expression specified in MATLAB like syntax and returns LaTeX code suitable to go inside an equation environment.
  • sshcast .pl*NIX — A little Perl script which is a very simple minded alternative to icecast. This script takes an ssh host and a play list, downloads the files one at a time via scp and plays them using mpg321 or ogg123 as appropriate. I use it for playing music stored on my desktop while working on other *nix machines.

Games and Entertainment

  • Accent for Pidgin .pl — A perl plugin for Pidgin. The original goal of this plugin was to create affected or accented speach in all outgoing messages by processing them with regular expressions provided in a configuration file. All incoming messages are filtered aswell. Two example files are included, one for Talkin' like a pirate (regular expressions by Scott Reynen) and one based on Santiago's Jägerizer. Of course you could really do anything involving regular expressions with this. Enjoy and if you come up with any other good configuration files please let me know.