ROS.NET+Unity HelloWorld

Well, since it first quietly hit github, people have inquired about ROS.NET and mono. It’s POSSIBLE, but presently requires pre-generating message code and/or precompiling DLLs on Windows.

Last week, I taught myself enough Unity to script a passable /tf visualizer.

ROS.NET_Unity (a wrapper around ROS.NET to facilitate precompilation/pregeneration for use with Unity)

The current message generation implementation, is handled by a .NET executable that generates a C# project.

This wouldn’t be THAT much of a problem, but it presently assumes Windows filesystem paths work, that the system has msbuild.exe and .NET 3.5+ compatibility.

For the above proof of concept, I simply copy/pastad the dlls from the output directory of ROS.NET_UNity (after running buildme.bat) into …\Assets\Plugins\, and implemented a node in a unity script… ROS.Init, NodeHandle AND ALL!

To work cross-platform, the ROS_Comm, XmlRpc_Wrapper, and any other dependencies (, dynamic reconfigure, etc.) could be copied along with the generated Messages/ folder INTO a unity project’s Assets directory, allowing them to be compiled by unity… but this requires previously generating the messages sources.

builds it with msbuild, then builds an intermediate project that modifies the generated source, and finally, plops a compiled Messages.dll into an output directory (a rough and sketchy first-stab with a few hundred fixes to deprecate cases, which deserves a reimplementation in an interpreted language at some point)


Buzz buzz buzz…

Figured I’d aggregate some media attention the robotics lab earned recently here.

My mom found the first one before I did and called me about it… excitedly. In the video, I’m the one expertly maneuvering the Parrot ARDrone with UMass Lowell’s Dynamically Resizing Ergonomic And Multi-touch Controller with my hands on one/both of those touch screens at various angles. Collision? What collision?

Lowell Sun


Boston Business Journal


-Any message can be published.
-Simple messages (ints, strings, messages containing arrays of ints w/ known and/or unknown length) can be subscribed for. (working on getting the deserialization capabilities to include ANY possible message definition)
-Services are next on my todo list after that… presently, the service manager does nothing but print “THE SERVICES… THEY DO NUSSING” (a la “the goggles do nothing”) for the time being


Found out the issue I was having with passing pointers to managed C# functions as arguments to functions in an unmanaged C++ DLL… and it was OPERATOR FAIL!


Latest Video

One of the University of Massachusetts Lowell Robotics Lab’s latest Surface projects = TURBO MASHUP

As blogged by @Surface, it’s the Microsoft Surface flying an ARDrone using UMASS Lowell’s DREAM Controller!