We document our experiences developing software and systems for vision, pattern recogntion and imaging in this wiki.
These articles describe things we've worked on related to the Robot Operating System (ROS).
I've developed some modules to facilitate my coding experience with the Robot Operating System (ROS). My work on this sub-project is documented in the Netbeans/ROS integration section of the wiki.
The project had reached the point where I can release it for testing. To do so, I needed to publish the project source to a public location. I decided to publish the source at github.com, I learned how to push your code to github.
I then included the GPL v2 license in the source code files using the handy Netbeans module for inserting source code licenses into your files (http://plugins.netbeans.org/plugin/17960/license-changer). I also cleaned up some of the config files a bit.
I then went to the Netbeans Plugin Portal to offer these plugins/modules to anyone who might want to use them (http://plugins.netbeans.org/). I tried to upload the modules but quickly found I hadn't set all the proper fields. I had to set the license, Author, and website home for each of the modules (as listed here: http://wiki.netbeans.org/FaqPluginRequirements). One can do this by opening the project of each module and setting these fields under the “Properties→Build→Packaging” option for the project.
Finally, you must “sign” your Netbeans module. This was actually a bit of work and I wanted to automate this process. The procedure at the plugin portal (http://wiki.netbeans.org/DevFaqSignNbm) may have worked at one time (for an older version of netbeans than 8.0.2) but this process does not work now. I then triaged and fixed up their out-of-date process for how to sign your Netbeans modules automatically when you build your modules.
To facilitate the release I created a public github repository (https://github.com/uncc-visionlab/netbeans-ros-pack) for this project. I've also uploaded the compiled netbeans modules (3 modules) as a .zip file to the Netbeans Plugin Portal (http://plugins.netbeans.org/plugin/60486/netbeans-ros-pack). This is still a work in progress but these initial tools have helped me develop/debug ROS code more efficiently. I hope they do the same for others.
For odometry and SLAM performance evaluations it was necessary to calibrate the robot on the camera. Calibration in this context requires two things: (1) solving for the unknown variables that govern how the camera takes pictures (referred to as intrinsic parameters), and (2) solving for the unknown variables that specify the position and orientation of the camera in the world/global coordinate frame (referred to as extrinsic parameters). In this circumstance, the extrinsic parameters we needed to compute relate the camera pose, i.e., the position and orientation of the camera, to the motion capture system in the laboratory (made by Optitrack). Detailed discussion on how we did this is on the ROS and Camera Calibration page.
I've been working on making efficient CPU-based code for execution on an ARM embedded system. I discuss some design decisions and coding methods and their cost/benefits from my experiences. Optimizing C++ Code for ROS nodes on embedded systems
If you are developing on an embedded ARM platform, e.g., ODroid XU3, you might want to quickly read these notes to avoid some time consuming problems before they happen to you.
I describe my experiences compiling OpenCV 2.4 and OpenCV 3.0 for use with ROS. I also re-compile important ROS packages which depend upon these libraries to allow development of OpenCV 3.0 packages using ROS Indigo which is tied to the OpenCV 2.4 library distribution.
A short description of how to deploy your own private git server. Useful while developing projects that aren't appropriate for public release.
Describes how to install OpenCL bindings for your GPU. OpenCL is a fast-growing programming language for General-Purpose-Graphical-Processing-Unit (GPGPU) programming. Now you can write code that GPU-accelerates your application that translates across devices. OpenCL is supported by AMD (Radeon) / Intel and Nvidia chipsets and even on embedded systems such as the Mali GPU included in ARM Cortex chipsets, e.g., the ODroid XU3 (Mali T628).
I found it difficult to install the drivers for this Time-Of-Flight (TOF) distance camera. I detail how I made this camera function on my Linux amd64 system (Ubuntu 14.04) and how I got it to work with ROS in this article.
This article details my process for installing and using rosjava. Install rosjava
ShaRP is a java application for viewing, and processing 3D objects. It allows users to edit, deform, align, and fit 3D surface meshes and 3D point clouds.
Work in the visionlab explores development of volumetric procedural models that enable users to specify complex 3D shapes using a small set of basic rules referred to as a procedure.
ImageRover is an plugin-centric application for processing either local or remote data. It uses generic Universal Resource Locations (URLs) to load files which may contain data of any type. Visualization plugins allow the data to be displayed by the application and can plot 1D or 2D functions, curves, surfaces and images. Additional supplied plugins or custom-built plugins may then be used to modify the visualization, process the data, or perform high-level processing of the data.
Java Web Start enables users to install and run these applications with a single mouse click and is the suggested method of launching these applications.
I have started documenting my experiences in getting Blackfin DSP evaluation boards to run uClinux. See uclinux_bf537setup.
To setup linux on the Ubuntu 7.04 Feisty Fawn for the Blackfin DSP evaluation boards. See uclinux_bf537setup_ubuntu for details.
To setup AD1836A Blackfin add-on card for the Blackfin DSP evaluation boards. see uclinux_bf537setup_ad1836 for details.
To setup SPI-MMC Blackfin add-on card for the Blackfin DSP evaluation boards. see uclinux_bf537setup_spimmc for details.
To setup CF/IDE/NAND Extender Blackfin add-on card for the Blackfin DSP evaluation boards. see uclinux_bf537setup_nand for details.
To setup MT9T001 camera sensor for the Blackfin DSP evaluation boards. see uclinux_bf537setup_camera for details
You can change the size of your linux image to be larger by increasing the BLOCKS variable with the uClinux/vendors/AnalogDevices/BF537-STAMP/Makefile.
Programs must be compiled with the “-Wl,-elf2flt” parameter for gcc to generate a “flat ELF” binary format file. Otherwise you will get an “applet not found” error from uClinux.
I have started documenting my experiences in getting Blackfin DSP evaluation boards to run uClinux.
Nathan Conrad has developed a linux driver for the Acuity laser rangefinder model AR4000. The driver was initially compatible with linux kernel 2.6.18 and is likely compatible with 2.6.17-2.6.12. Work continues on the driver to keep it current with Linux kernel modifications present in 2.6.20. See linux_driver for details.
Installing a new workstation to the lab system.
How to add a new user to the lab system. For these instructions username will be used in place of the actual user's name.