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. Tully On Sun, Jul 20, 2014 at 2:14 PM, Mike Purvis wrote: > 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 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 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". >> >> 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@lists.ros.org >> http://lists.ros.org/mailman/listinfo/ros-users >> > > > _______________________________________________ > ros-users mailing list > ros-users@lists.ros.org > http://lists.ros.org/mailman/listinfo/ros-users > >