Sounds like everyone agrees ICE is the best bet. I'm going to start playing with that. I appreciate all the code examples I can see. Thanks everyone. -Aaron On 6/15/2010 12:56 PM, Klaus Petersen wrote: > I found the ros / ice combination quite ideal. ice works on a very broad > range of operating systems (windows, linux, osx etc.) and languages > (c++, c#, java etc.). It shares with ros the feature, that it is very > easy to use and very quickly to setup (especially if you want to do > something simple). As long as ros is not natively cross-platform to > windows, this seems a very nice solution to reach from a ros node to > windows pcs on the network. I didnt check to many other middlewares > though, only ACE, OpenRTM and Yarp (and these are all quite different > pairs of shoes as well). Compared to these ice was definitely the > easiest and performance-wise strongest choice. At least from my perspective. > > I will see that I post some example code from my application tomorrow. > > Klaus > > > Ken Conley さんは書きました: >> I would second what Klaus recommends (i.e. find some glue and use it). >> >> To answer your C# question, you can implement the communication layer of >> ROS. It will probably take a couple of weeks, though I imagine C# is >> harder. Of the other clients, only rospy and roscpp were implemented >> from scratch. The rest were implemented on top of roscpp. The hard part >> is that you'll have to write a message generator. Our format is simple, >> but serializers take time to get right, and the lack of a ROS build >> toolchain on Windows will probably make your workflow painful. The wire >> protocol itself is very simple and couple be done in a day or so if >> you're trying to do something simple. >> >> However, there are a lot of middlewares out there, like ICE, and you >> just figure out what can bridge between C# on Windows and C++/Python on >> Linux. It will probably save you a lot of time and effort. ROS is more >> about the integration of a packaging system, online tools, and coding >> community -- not middleware. Until we get a more complete toolchain >> running on Windows, you might as well take a shortcut. >> >> - Ken >> >> >> On Tue, Jun 15, 2010 at 9:15 AM, Klaus Petersen > > wrote: >> >> Hi Aaron, >> >> I have done both, using the python framework to communicate from windows >> c++ with ros nodes on linux, and checked proprietary solutions. I will >> re-post what I think the easiest way is to communicate in the python way >> below. However, in the end I came to prefer to communicate between >> windows and ros using ice (www.zeroc.com ) If >> you just need to pass some >> data, this is very easy to set up. Check the documentation, they have >> some examples for basic remote message calling for c# as well. Ice has >> of course a different scope than ros and can not substitute its >> functionality (except if you build your own framework around it), but as >> I said for quickly passing data it is excellent. >> >> Klaus >> >> >> The former post regarding windows / python / vc++ (not c# anyway): >> >> To receive ros standard messages (Float32 in this example) in vc++ >> (thats what I checked it with) I did something like this: >> >> #undef _DEBUG >> #include >> >> // the method that gets embedded into python >> static PyObject* ros_indirect_callback(PyObject *self, PyObject *args) >> { >> double double_data; >> >> if (!PyArg_ParseTuple(args, "d", &double_data)) >> return NULL; >> >> printf("Do something with the data %f here.\n", double_data); >> >> return Py_BuildValue("i", 0); >> } >> >> // some data in order to register the method >> static PyMethodDef embedded_methods[] = >> { >> { >> "ros_indirect_callback", >> ros_indirect_callback, >> METH_VARARGS, >> "" >> }, >> { >> NULL, >> NULL, >> 0, >> NULL >> } >> }; >> >> // thread that runs the ros node (gets locked after calling spin()) >> void ros_thread::run(void) >> { >> Py_Initialize(); >> Py_InitModule("ros_win", embedded_methods); >> >> PySys_SetArgv(0, argv); >> >> PyRun_SimpleString("import ros_win\n" >> "import roslib\n" >> "import rospy\n" >> "from std_msgs.msg import Float32" ); >> >> PyRun_SimpleString("def callback(data):\n" >> " ros_win.ros_indirect_callback(data.data)\n" ); >> >> PyRun_SimpleString("rospy.init_node('listener', >> anonymous=True)\n" >> "rospy.Subscriber('chatter', Float32, callback)\n" >> "rospy.spin()\n" ); >> } >> >> >> To send messages: >> >> #undef _DEBUG >> #include >> >> #include >> #include >> >> using namespace std; >> >> void send_double_data(double v) >> { >> Py_Initialize(); >> PySys_SetArgv(0, argv); >> >> string s_str = "str = " + boost::lexical_cast(v); >> PyRun_SimpleString(s_str.c_str()); >> >> PyRun_SimpleString("rospy.loginfo(str)\n" >> "pub.publish(Float32(str))\n"); >> } >> >> >> For reference: >> http://www.ros.org/wiki/Windows >> http://docs.python.org/extending/index.html >> http://www.boost.org/doc/libs/1_42_0/libs/python/doc/index.html >> >> >> Aaron Solochek さんは書きました: >> > Yeah, I've read that. It addresses getting ROS running on windows, >> > which is not what I want to do. I don't need a complete ROS >> environment >> > on windows. All I need is to communicate with a ROS network. >> > >> > My question is whether it will be fairly straight forward to >> emulate a a >> > very simple ROS node on windows (capable of sending joystick >> commands), >> > or if that will be complicated enough that I'm better off doing >> > something proprietary for the windows<->ROS communication link. >> > >> > To be clear, I'm talking about trying to implement the bare minimum >> > required to appear as a ROS node to roscore (running on another >> machine) >> > from scratch in C#. >> > >> > -Aaron >> > >> > >> > >> > On 6/14/2010 5:18 PM, Ken Conley wrote: >> >> This wiki page has all the currently known ways of getting >> running on >> >> Windows: >> >> >> >> http://www.ros.org/wiki/Windows >> >> >> >> - Ken >> >> >> >> On Mon, Jun 14, 2010 at 11:18 AM, Aaron Solochek >> >> >> >> >> wrote: >> >> >> >> The system I'm working on uses ROS on the backend for a >> variety of >> >> control stuff, but has a user interface that is going to be >> written >> >> in C#. >> >> >> >> What is the recommended way to get some 2-way communication >> going >> >> between this windows program and ROS? Should I make a node >> on the linux >> >> box that speaks some proprietary thing with the windows >> program, or >> >> should I try to implement a ROS node in C#? >> >> >> >> Better yet, has anyone already done something I can use for >> this? :) >> >> >> >> Any advice would be appreciated, and please copy me on >> replies since I'm >> >> only getting the daily digest of this list. >> >> >> >> Thanks, >> >> >> >> -Aaron >> >> _______________________________________________ >> >> ros-users mailing list >> >> ros-users@code.ros.org >> > >> >> https://code.ros.org/mailman/listinfo/ros-users >> >> >> >> >> >> >> > >> > _______________________________________________ >> > ros-users mailing list >> > ros-users@code.ros.org >> > https://code.ros.org/mailman/listinfo/ros-users >> > >> >> _______________________________________________ >> ros-users mailing list >> ros-users@code.ros.org >> https://code.ros.org/mailman/listinfo/ros-users >> >> >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> ros-users mailing list >> ros-users@code.ros.org >> https://code.ros.org/mailman/listinfo/ros-users > > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users > > !DSPAM:4c17b0d393991906920951! >