[ros-users] ROS C#

Tully Foote tfoote at osrfoundation.org
Mon Jul 21 02:22:08 UTC 2014

Hi Zsolt,

An implementation of ROS client libraries in C# compatible with managed
.net frameworks was recently announced on the ros-win mailing list by Eric
McCann: https://groups.google.com/forum/#!topic/win-ros/0QJcwePo5zs That is
probably a good place to get started.


On Sun, Jul 20, 2014 at 2:14 PM, Mike Purvis <mpurvis at clearpathrobotics.com>

> Not to add further confusion, but another possibility could be to write C#
> wrappers for the partially-complete ROS-C library:
> http://wiki.ros.org/rosc
> Looks like no significant changes since last year, but you could get in
> touch with the devs and ask about contributing to it.
> On 20 July 2014 16:17, Zsolt Szabo <szabo.zsolt at nik.uni-obuda.hu> wrote:
>> Dear ROS Community,
>> First of all, let me say hello. I am Zsolt Szabo from Obuda University
>> (Budapest, Hungary). Our department has recently bought a Turtlebot2 robot
>> (and another department from the uni has a Nao, if I am correct) - both is
>> running ROS.
>> However, students in our faculty mainly learn C# (with a little (very
>> little) java). Of course, you can say that they should use rosjava, or
>> learn a proper programming language instead. However, it is not for us to
>> question their choice. The fact is that most of the students know only C#
>> and I plan to make it possible for them to work with ROS using C#, somehow.
>> I checked the official roscs, but it is very old and uses heavily some
>> cpp middleware. Also, the code is funny on some places. So instead I
>> started messing around, and managed to create a lightweight (~2K) cpp
>> middleware that allowes sending fixed-size text messages between c# ROS
>> nodes. However, sending complex (struct) messages, this poses a problem.
>> Without a middleware, I do not think that it is possible, as the mono
>> documentation says <quote>This makes it nearly impossible to directly
>> invoke functions that are not C ABI compatible, such as C++ library
>> functions that are not extern "C".</quote>
>> Another solution I tried is re-implementing the big ROS api itself, but
>> to be honest I did not put too much effort into this one. I checked the
>> Master API ( http://wiki.ros.org/ROS/Master_API ), I managed to execute
>> the getSystemState via XMLRPC, but I got stuck at the registerSubscriber
>> call, because the ROS documentation says "the subscriber will also receive
>> notifications of new publishers via the publisherUpdate API" , and I found
>> absolutely ZERO documentation about the publisherUpdate API ...
>> So to access ROS from c#, I think we have the following three
>> possibilities; these pose three nice questions:
>> 1) try to use and modify the old roscs ==> QUESTION: any
>> details/documentation about the current roscs implementation? Does anyone
>> have any clue about the code structure and about the reason behind the
>> quarks in the .cs code (e.g. MessageField.cs freaks me out A LOT)
>> 2) implement a new roscs with this lightweight cpp middleware using
>> converters or something similar to support more complex messages. ==>
>> QUESTION: do you think this is doable? Right now, to pass non-text
>> messages, I managed to give the absolute pointer of the data from the cpp
>> middleware to the c# code. But I do not think that a cpp code and a c# code
>> sharing the same pointer is a wise idea...
>> 3) implement a new roscs without a cpp middleware (just like rosjava),
>> with XMLRPC + TCPROS support. ==> QUESTION: do you think this is doable /
>> worthwhile? QUESTION: can anyone point me to the proper protocol
>> specifications? the ones I found at the ROS wiki seem kinda stripped down
>> and short.
>> Sorry for the long mail, and thank you all for your help and suggestions.
>> Yours,
>> Zsolt Szabo
>> _______________________________________________
>> ros-users mailing list
>> ros-users at lists.ros.org
>> http://lists.ros.org/mailman/listinfo/ros-users
> _______________________________________________
> ros-users mailing list
> ros-users at lists.ros.org
> http://lists.ros.org/mailman/listinfo/ros-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20140720/7cec955f/attachment.html>

More information about the ros-users mailing list