Hi all,
I have been looking into ROS during the last couple of weeks, understanding how it works. I've ran it in Ubuntu (the pre-installed VirtualBox), then got it installed in OSX (Mountain Lion) and Windows 7. So for so good, things seem to work as described, and ROS looks promising.
My interest in ROS is to use it as a communication layer between several things we've been developing at my research lab (and yes, those 'things' include robots :)
However, we are not a robotics team, but an intelligent agents and synthetic characters groups, so we are used to develop on high-level platforms.
So the thing is, we develop everything in dotNet, both in Windows and OSX, and now we would like to try to link everything using ROS, because ROS offers exactly the communication mechanisms that we need. We have actually nearly built our own communication layer with the same kind of subscribe/publish mechanisms for independent 'plug-in-play' modules until we found out ROS does this and much more (like all the tools you have, and also modules for the NAO robot, which we also use)
So what I ask is suggestions for a workflow on this - making several libraries that were developed in C# to communicate over ROS.
My first bet was that I could use IronPython to get my dotnet classes to communicate with the python script that launches the ros node. The python script would add a callback to the dotnet class' events in order to publish ros messages when a certain dotnet event was launched, and would run a method on the same class with the msg information whenever a subscribed message was received.
So issue #1: I have failed to load roslib into IronPython. Does anyone know if this can be solved? Here is my execution. I first run it with python, so you see it works, things are set up correctly. However, with ipy it doesn't find roslib.
Tiago-Ribeiros-MacBook-Pro:~ tiagoribeiro$ roscd SimplePerception/
Tiago-Ribeiros-MacBook-Pro:SimplePerception tiagoribeiro$ python nodes/SimplePerceptionEffector.py
/opt/ros/fuerte/lib/python2.7/site-packages/ros_comm-1.8.12-py2.7.egg/rospy/topics.py:758: UserWarning: '\Perception\SimplePerception' is not a legal ROS graph resource name. This may cause problems with other ROS tools
[INFO] [WallTime: 1349574242.992873] hello world 1349574242.99
[INFO] [WallTime: 1349574243.994326] hello world 1349574243.99
^C
Tiago-Ribeiros-MacBook-Pro:SimplePerception tiagoribeiro$ ipy nodes/SimplePerctionEffector.py
Traceback (most recent call last):
File "nodes/SimplePerceptionEffector.py", line 5, in
ImportError: No module named roslib
Tiago-Ribeiros-MacBook-Pro:SimplePerception tiagoribeiro$
Issue #2: Even if I got this running, the WinRos Sdk is not working with python, as ROS doesn't find my package.
I failed to find a workflow on using ROS with python on windows - the tutorials point only to using cpp modules. So what should I run on windows to get ROS to find the package (assuming it's written in python)?
Issue #3: The previous issues make me realize that I might have to work with C++ and dotnet. Before I dig my hands into that, does anyone know a-priori if I won't be able to compile managed C++ with ROS? Or any suggestions on how to link my dotnet events and methods to the C++ ros interface?
Do you guys think it will build easily within visual studio?
And more - if I go on with using C++, will I have any issues while 'travelling' between a Windows environment and OSX environment? That was the main reason why I wanted to run this over IronPython.
Issue #4: Last but not least, and this is really important on our final decision of using ROS or not: Me and my colleague are building and linking together a bunch of independent modules that provide behavior and expressivity control to characters independently of their mind or body, so our packages will be used to link different minds to different robots, and event to virtual characters in Unity3D.
The purpose of this is that anyone in our labs that needs a character can use our stuff.
So even if we get this working, will we be able to redistribute our libraries running over ROS easily to someone who isn't familiarized with ROS, but just wants to use whatever we build over it?
I think this is an important question regarding my vision on the whole purpose of ROS: everything looks and works great, but it's a pain to install and setup. It definitely looks like something I don't want to depend on if I'm developing stuff for other people to use. And it is definitely something that would make me think twice before using something that depended on it - especially if I just develop cultural agents that just smile and run around inside a Unity3D scene and someone just says "hey I have this stuff here that will look great on your character, you just have to spend a couple of days going through this whole process of getting ROS to run on your machine/OS"
Is there any guide or workflow for redistributing a ROS-based library/application?
I hope I was clear on the questions. Thank you for any help!
Tiago Ribeiro
Originally posted by TiagoRibeiro on ROS Answers with karma: 41 on 2012-10-06
Post score: 0