libnifalcon v1.0.1 has been released. This is a bug-fix release for errors involving trying to use multiple falcons on the same machine with the libusb communications core. It also adds tests for multiple falcons, and a small fix to the mechanical measurements.
After over 2 years of work, libnifalcon version 1.0 has been released. This version provide the most stable kinematics core we've had so far, simplified communications management, and even has enough comments to possibly be usable by someone else.
If you have any issues, please report them to the mailing list or the forums here.
I'll hopefully be making new releases of the pd/max externals in the next few days to go along with this.
Numbers refer to bug listings for libnifalcon bug tracking, at https://www.assembla.com/spaces/libnifalcon/tickets
2009-05-17 Kyle Machulis <firstname.lastname@example.org>
* Release v1 beta 4
* Fixed include install directories (#15)
* Fixed include file listings so that they show up in Visual Studio projects (#9)
* Fixed program option printing (#18)
* Divided falcon_test_cli into multiple smaller tests
* Added color fading test to falcon_test_cli
* Added wall test to falcon_test_cli (#2)
* Changed internal implementation holding to use smart pointers instead of bare pointers (#12)
* Fixed double free bug in libusb (#21)
* Cleaned loop counting methods in falcon_test_cli (#19 #22)
* Added per-comm-target compiles for findfalcons test (#17)
* Added QPT timing calls for windows (#6)
* Updated gmtl to v0.6.0
* Added package file generation for pkg-config (Thanks to Stephen Sinclair)
* Removed unnecessary stdint.h types
* Added blocking read/write calls to comm libraries for loading firmware
* Fixed validity checks for firmware mode setting and firmware loading across all comm cores
* Fixed firmware existence checking, now much more reliable
* Changed all array passing to use boost::array instead of bare arrays
* Fixed FTD2XX comm library to make reading more stable... read more
* Overhauled CMake system because I didn't really know what I was
doing with it the first time around (and may still not this time)
* Added logging capabilities using Apache's log4cxx library
* Removed C code completely, still available in repository (boneyard
directory) but no longer distributed in source tarballs
* Rearranged src directory to only contain what used to be in cpp
* Added pregen'd angular matrix LUT header since it currently never
changes but takes a bit of time to generate on some systems
* Added logging level options to FalconCLIBase
* Fixed lots of small bugs in findfalcons_cpp, FalconCLIBase,
* Fixed compiling in Visual Studio on windows (MinGW still works
fine too)... read more
libnifalcon is not dead! Just developing somewhat slowly since day job is taking up time.
Here's the latest release update. We're almost to beta 3, hopefully it'll appear sometime in March.
Every time I plan a release day, without fail, the last thing I do is
think "Oh, wonder if things still compile on windows", and then the
release gets delayed a week.
So yeah, once again, I seem to have completely hosed windows building.
At some point in February, I also broke libusb support and cmake
generation for any platform with case-sensitive file system. I really
gotta start testing on more than my macbook. :) ... read more
Here's the changelog notes:
* Release v1 beta 2
* Changed units in stamper kinematic core position readings from
millimeters to meters
* Changed units in stamper kinematic core force values to newtons
(now matches HDAL)
* Changed units in FalconGeometry to meters
* Updated falcon_test_cli to reflect unit changes
* Added many more comments, though still nothing in depth
* Removed falcon_mouse demo (many people have difficulty building
and it doesn't work right, moved to own repository,
* Fixed some const/reference passing arguments
* Changed comm libraries to use pointers and prototypes to remove
necessity for comm includes in lib headers
* Fixed FTD2XX compatibility (comm driver hadn't been working in the
past few releases)
* Fixed compilation and compatibility for windows (now using mingw
as test compiler)... read more
More small fixes.
- Fixed raw force input (was being overwritten by kinematics even if in
- Fixed freeze bug on external destruction (waiting for a thread that
was never there...)
1 day turnaround to a new version was not exactly what I was expecting.
But, this fixes the two biggest crash bugs I was aware of, and fixes the
comm library selection issue that basically made v1.0 uncompilable
without changes to code.
Source and binaries (bins for osx only still) are up at:
I've gone ahead and moved libnifalcon to beta status. There's really not much point to optimizing more without some sort of testing, so now it's testing time. :)
libusb-1.0 has been added to the library for linux usage. Lots of other changes, check the changelog for them.
In an effort to be as anal about the most boring parts of this driver as possible, I've added a libusb-1.0 based communications core for linux. It's by far the fastest and lightest weight of any of the communication cores, but unfortunately only works on linux for the moment. libftdi still seems fine on os x, and ftd2xx will always be the default on windows.
Too tired to write up my usual snappy comments, so here's the changelog.
* Release v1 alpha 4
* More cmake file condensing
* Fixed comparison bug in FalconGripFourButton
* Added CPU specific optimizations for option for GCC builds
* Added Fast Math optimization option for GCC >= 4.0
* Added (but commented out) packet buffering scheme for firmware
* Fixed bug with returning grip info data portion from novint firmware object
* Fixed library misnaming for C libraries (Thanks to Stephen Sinclair)
* Removed automatic ftd2xx building from Mac and Linux due to symbol issues (now requires explicit CMake option setting - FORCE_FTD2XX_BUILD)
* Added cmake option for libusb debug messages (LIBUSB_DEBUG)
* Added execution flags to the FalconDevice runIOLoop function... read more
Stupid OS X and its stupid lack of caring about stupid capital letters in filenames.
Fixed the openscenegraph cmake calls, which were broke on everything that wasn't OS X
I've posted Kevin Ouellet's opengl falcon mechanics demo as its own project. Even though it's listed as v0.1, it's quite stable. I'm just leaving the 1.0 version until the connection and firmware loading capabilities are cleaned up a little bit, which should happen soon.
Two releases today!
libnifalcon 1.0.alpha3, which features a cmake system that somewhat resembles what a someone who maybe decided to read the documentation finally would write. Much cleaner code, everything builds through a couple of functions. Renamed some libraries, because I'd like libnifalcon* to represent the C++ version. The C version still works, but probably won't see a lot of additions anymore.... read more
While I'm not calling the C libraries deprecated, since they work fine for simple communication, I'm figuring the C++ libraries will be what most people are going to use with libnifalcon. With that in mind, I've switched the libnifalcon c-based library names to libnifalcon_c_(comm), i.e. libnifalcon_c_libftdi, etc... Not a huge change, just means I can keep libnifalcon.* for the C++ stuff.
Yet another hurried, half-finished release! Yay!
I added the FindBoost module from cmake 2.6.2 so I could keep compatibility back to cmake 2.6.0 while still having boost 1.36 compile correctly. Fixed up findfalcons_cpp to not require kinematics anymore.
Of most interest will probably be my compatibility libraries for Novint's HDL. I'd really like to be able to have libnifalcon code "just work" on any platform that already supports Novint's SDK, so I'm trying to emulate their SDK using libnifalcon calls. Let's hope they don't mind. :D... read more
And so begins the path to v1.
This version is probably full of broken, but I really wanted to get the C++ code out there into the hands of developers so we could start testing and refining the API. Please note that, since this is ALPHA, there will probably still be changes to the API as is. Functions may change randomly, though I really only expect parameters to do so. The general structure of the library is sound, and really, I can't make it any more generic than I already have. The error handling is just a bit schizophrenic at the moment.... read more
Earlier this month, FTDI released a new version v0.1.4 of their FTD2XX driver for OS X. I just hooked it up to the C++ libraries in the repository, and other than having serious issues with the return values coming from the falcon during firmware loading (and the fact that I'm using a really gross spinlock on it), it seems to work as well as libftdi. I'd most likely still recommend libftdi for non-windows platforms, but this means we don't have to worry quite as much about comm cores between platforms anymore.
Ok, I think the next version of libnifalcon may very well be the 1.0 version. I spent all weekend working on the new C++ core, and all the functionality of the C libraries is now available, in a much more flexible core.
All of Kevin Ouellet's work on getting measurements for the falcon and making a new kinematics core has been integrated into the libnifalcon trunk, as the FalconKinematicStamper and FalconMechanics projects. ... read more
I did a ton of work today on folding Kevin Ouellet's kinematics code into the new C++ version of libnifalcon. Unfortunately, I didn't really get time to structure the CMake files correctly around the build, so until further notice (hopefully less than 24 hours), svn checkouts of libnifalcon will require gmtl to build.
I'll be fixing this ASAP, just too tired at the moment. I should really start developing this stuff on branches, heh. :)
So, it took a year from launch, but the falcon is now being sold at the price originally mentioned 4 or so years ago. Well, sold at that price by one store, at least.
In other news, the C++ library is nearing the functionality level of the C library. Only thing left to do to complete that is figure out how to move grip data from the firmware to the grip classes in an abstract way. Check the repository for updates.
I just added the basis for the new C++ version of libnifalcon to the repository. It's nowhere near done yet, but you can at least get an idea of where I'm going with it. The idea is to provide swappable cores for every portion of the falcon, which I currently have as communications, firmware, grips, and kinematics.
I probably should've branched this, but since I've kept the C code in working condition, I decided to just stay on the trunk. Hopefully this won't botch anyone's development.
Well, it's been a year since I posted what is still the world's stupidest youtube video about the novint falcon (and funny enough, it's also now one of the most viewed). That was also the first portion of what is now libnifalcon.
So, in celebration, I'm releasing v0.5 today, which is chock full of basic functionality and fixes that should've been in a year ago! I fixed a major race condition issue in the firmware loading, so now firmware will reliably load on all platforms. I also added firmware detection mechanisms, though this is still a somewhat manual process. Check the "Test Firmware" portion of the wiki for more information.... read more
Even after a year of development, I'm still finding issues with my base initialization functions. Turns out that the last step before we send down the firmware sends back 2 bytes, not one, and purging the buffers didn't do any good because of what I'm guessing is more latency timer race conditions. Anyways, we now look for 2 bytes instead of 1, which boosts the ratio of successful firmware loads WAY up on mac and linux (before, they would only succeed due to the race condition, which happened far more on mac than linux. Go figure.)... read more
v0.2 of the np_nifalcon Max/MSP and Puredata external has been released. This version simply adds the ability to set the homing bit through the external, which is actually pretty much required if you want to get anything done. Code is in the file releases, binaries may follow at some point if I decide to do a bunch of static compiling again.