Projects

Here you will find some professional and personal projects that I've been working on in the last years.

Professional project

 iBeacon for desktop

Using iBeacon for other solutions than mobility/advertising.

Go to the project page

2015
 LTPA Token Factory

Encoder/Decoder library of LTPA v1 and v2 Tokens, to integrate your own SSO tool with IBM products which use this type of Authentication mechanism. Go to the project page.

2014
 OpenCog


OpenCog is an open-source software project rather than a formal organization, but there is also a nonprofit organization -- the OpenCog Foundation -- specifically devoted to fostering the OpenCog Project.
Oficial site: www.opencog.org

I've developed several modules of the Embodiment component. Embodiment is the OpenCog component responsible for controlling a physical body of a intelligent agent. Some of my latest contributions to the project are:

- A language comprehension module, which integrates a English grammar parser and a semantic dependency relationship extractor (RelEx) with the goal of making an intelligent agent understand sentences written in English. For instance, this module lets the user gives commands using natural language, like: "grab the red ball near the fountain"
- A path planner using HPA* to allow the agent navigates through the virtual world
- A Rule Based System to control the agent's actions
- A Frames Based System to represent the knowledge extracted from the
"heard" sentences
- A spatial relationship extractor, to identify the displacement of the objects present in a given scene. It lets the agent to reason about the environment, answer questions about it

Here are some videos which illustrate my contributions:
Demo of Embodied Anaphor Resolution
AI Virtual Dog Answers Simple Questions about Itself and Its Environment
AI Virtual Dog's Emotions Fluctuate Based on Its Experiences
Inside of the AI Virtual Dog Mind
Demo of Virtual Dog Learning to Play Fetch via Imitation and Reinforcement

2007-2010

Personal projects

 Portable Video Game Console        

This is an Electronic Project. I've built a Portable Video Game Console hardware. Besides the necessary software to control it (firmware). You can read more about it at the project page.

2011-2012
 Many-sorted Logic Unifier



This is a Many-sorted logic unifier. It uses index tables to optimize the access to all terms of the unified sentences. The ontology is loaded in a fast tree implementation. A simple script language, whose parser was built with Boost Spirit, helps the user to write down, in plain text, not only the ontology used by the unifier, but all the sentences that will be evaluated by the unifier.

Download file:
Windows binary (32 bits) & source - 371k - The binary file was compiled with MinGW

2008
DPLL (Fast Index Table)


This is an implementation of the algorithm DPLL (Davis–Putnam–Logemann–Loveland). It is a complete backtracking based algorithm for deciding the satisfability of propositional logic formulae in Conjunctive Normal Form.

It uses a index table to optimize the access to all terms of the expression.The main program contains a simple script parser to make the work of building expressions using plain text a easier task. Of course, this parser adds an overhead to the execution cycle, but is acceptable for experimentation purposes.

The algorithm was implemented as a library. That way, more than one type of application can make use of the algorithm.
 
Download file:
Windows binary (32 bits) devel files & source - 177k - The binary files were compiled with MinGW

DPLL Launcher: This application is a very simple tool which makes use of the DPLL lib to check the satisfability of a expression given as an argument. You must to save the CNF formula into a plain text file and inform to the application the file complete path.

Download file:
Windows binary (32 bits) & source - 767k - The binary files were compiled with MinGW

2008
 Sat-CNF Sudoku Encoder

This tool is a very simple utility that can produce a Conjunctive Normal Form Formula which represents a Sudoku game. The output formula contains several clauses that restricts the possibilities, like "there is at least one number in
each entry" or "each number appears at most once in each row". The final sentence can then be solved by the sat algorithm and the game answer can be discovered.

Download file:
Windows binary (32 bits) & source - 156k - The binary files were compiled with MinGW

2007

Sudoku: This is a hack of the original implementation of the game. It was originally implemented by Michael R Sweet. I've prepared this version of the game to test a Satisfability based Sudoku solver algorithm. So, when you click on Solve Game, the current game is encoded in a CNF formula, then evaluated
by a fast DPLL implementation and finally the answer is shown into the grid.

Download file:
Windows binary (32 bits) & source - 560k - The binary files were compiled with MinGW

2009

 RRT Viewer



This application is a viewer tool for observing the behavior of five variations of the path-builder algorithm RRT. Besides the original implementation of the RRT algorithm, four other variations were implemented. These variations have different heuristics to reach the same goal. A variation called SRRT or Swimming RRT was proposed by me (Samir).

Download files:
Windows binary (32 bits) - 1357k - It was compiled with MinGW

Source code - 194k - The source code is prepared to be built with Eclipse/CDT and MinGW, but, obviously, it can be compiled with other C++ compiler

2007
 PowerGine - 3D Engine

PowerGine is a implementation of a purely object oriented 3D engine. It was programmed in C++ and was developed for studies and research purposes. It wasn't intended in any moment, with this project, to create a complete Engine
that could be used to create complete games.  

PowerGine has a lot of functionalities and can be considered a good reference material. However, if you're planning to develop a game, it is not recommended to use this library as your base 3D Engine. There are several open source engines that can be used for that purpose, for instance Ogre3D (www.ogre3d.org).

Features
- A powerful math library
- Complete scene-graph support
- Generic rendering interface, that can be used to implement several renderers
  - An OpenGL renderer is available
- Centralized access to all resources
- External mesh files loader for Wavefront .obj files
- Quake 3 BSP map file loader
- Graph support that can be used to build paths, waypoints and path-planning
- A simple implementation of the classical A* algorithm, compatible with the
  Graph library of the engine
- Network communications support
- Virtual keyboard: You can control an application remotely with this tool
- Support for keyboard, mouse and joystick
- Basic infrastructure for collision detection and physics


Download files:
Windows binary devel (32 bits) - 1791k - It was compiled with MinGW

Source code - 301k - The source code is prepared to be built with Eclipse/CDT and MinGW, but, obviously, it can be compiled with other C++ compiler

2004

Comments