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

https://www.github.com/uml-robotics/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 ros.net node in a unity script… ROS.Init, NodeHandle AND ALL!

To work cross-platform, the ROS_Comm, XmlRpc_Wrapper, and any other dependencies (tf.net, 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

WBUR

Boston Business Journal

ROS_CSharp

-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

CLRFTL

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!

*facepalm*

Museum of Science robotics block party

Thermal problems all around… the mac minis were running hot, and junior’s front fan was a little kid finger magnet.

Other than that, and the tough questions, such as “what does your giant remote controlled car with sensors on it actually do?”, it was a blasty blast! B-)

My family finally got a chance to see a bunch of the projects I’ve worked on, and the quadcopter flew like a dream.