-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Which version of ROS does this ROS.NET implementation support? #11
Comments
It should be fine communicating with versions from diamondback through indigo. As far as version-compatibility, if you don't see message md5sum mismatches in rosout, then it'll work, and the messages that have changed since diamondback are on a very short list and relatively obscure. With windows 8.1, be careful with the XmlRpcWin32... I have only compiled it with VS2008 (previously) and VS2010... with VS2012, I've only had success by not upgrading that project... but I wasn't exhaustive. As it is implemented now, you won't be able to make windows store or windows RT apps, but any traditional desktop program will work on windows 7-10 |
Nice! I'm going to give it a try and come back with the results. As I understood from the readme this will allow me to build custom message types. I already have an Ubuntu with indigo up and running so I'm going to give this repo a spin and report back to you. I'm new to ROS but a quick learner. I don't intend to build store apps or RT. I'm planning on building traditional desktop programs so this going to be ok. As far as XmlRpcWin32 is concerned I'll try not to upgrade and see how this will go. I am planning on using VS2013 but if anything f(l)ails there is no problem going back to VS2010 I suppose. Let me try VS2013 first and then see how things turn out. Anyway, you've done a great job!!! |
hehe thanks. Everything but TF is generally solid... used it for a few funded projects and competitions (with fuerte, hydro, and indigo robots)... usually with WPF UIs. For custom messages, a recent (maybe not yet documented) advancement is that you can treat projects' folders like ros package folders... so if you made a project called "my_node" and put my_msg.msg in the msg folder inside it, it would generate the Messages.my_node.my_msg class... then on the linux side, you would just need a ros package called my_node with the same my_msg.msg in its msg folder for linux nodes to import/include to communicate with your .NET node |
Hello, I'm back with my preliminary results as promised.
Finally after shutting down my simple subscriber and tried to re-run the rqt_graph on the Ubuntu I got an exception which resolved only AFTER I restarted my roscore. :( PluginHandlerDirect._restore_settings() plugin "rqt_graph/RosGraph#0" raised an exception: Any ideas? Thank you in advance! |
Try "rosnode list" after the UI os closed... Probably not ubregistering Also, rather than just stopping the debugger, hitting X on the window
|
OK! That solved the ghost node problem! I did what you said and the rosnode list no longer displays the ghost windows node because it now sends proper goodbye :) However I am still unable to receive any messages on windows from the talker process on the ubuntu machine. More insight: Publisher update for [/chatter]: http://lemnos:54146/, already have these connections: *lemnos is the name of my ubuntu (virtual machine 192.168.56.101) If there is no "talker" running on my ubuntu then the output just mentions this: Publisher update for [/chatter]: already have these connections: and then nothing else (since there are no connections on the /chatter topic I guess.. Any help on why the messages aren't getting through? |
Solved it! Somehow the stupid windows translated the ros master uri ip to hostname and then it couldnt resolve back the name to connect to the master! One other thing: Any ideas on that? THANK you once again for your invaluable support! |
Iirc, rqt_graph should work if started after the node? I think there's some For master uri and stuff, you can set them in your windows environment
|
The rqt_graph dies with the aforementioned exception only when I try to start it while the windows node is running. If I stop the windows node first, rqt_graph starts normally... This is weird... |
From what I understand the core module checks only once for existing publishers at initialization time. So if a publisher starts on the Ubuntu side AFTER the subscriber has started on the C# side, the subscriber never learns about or "hears" from the new publisher. Any suggestions how to change that? This is an important point of failure since ALL subscribers HAVE to be started before the C# initialization code runs to be able to see them. |
Also the SimplePublisher although visible (as a node - through rosnode list) from the Ubuntu side, doesn't seem to publish any messages (the "rostopic echo /chatter" command doest show anything on the screen). Am I missing something important here? I mean I am clearly doing something wrong but has to be a major mistake. What are the steps to run a WPF ROS app? I need to call ROS.Init and then I need a while (ROS.ok)? There is no need for "spin" once or something, right? |
There is no need for a spin... there's internal threading. For a WPF app, you just need to call ROS.Init, create a nodehandle (that is scoped somewhere which won't get garbage collected), create pubs and subs (scoped somewhere which won't get garbage collected), and that's all that's needed until the window closes and things need to be shutdown cleanly... WPF-wise, just make sure to go through dispatcher.(begin)invoke in the callback, or it'll error because the callback is on a different thread. What does rosnode info show for your .NET node? |
I haven't seen any issues with node ordering in the past year-ish... could it be that the linux node's predecessor is not exiting? after it dies, does "rosnode cleanup" find any zombies? |
For the simple subscriber: kazepis@lemnos:~$ rosnode info /simplesubscriberNode [/simplesubscriber] Subscriptions:
Services: None contacting node http://192.168.56.101:61808/ ... But the IP of the windows machine is 192.168.56.1 The simple subscriber is a windows node so it shouldnt try to contact it on the 101 IP. Right? When the windows node dies (most of the times it dies gracefully) the rosnode cleanup doesnt show any output. |
OMG Eric, I'm so stupid... //from the windows simplesubscriber The ROS.ROS_HOSTNAME should be pointed at the windows IP (..56.1) instead of the ubuntu (..56.101) right? |
YES... that would definitely cause the weirdness you're seeing. The hostname needs to be the ip of the machine running the node, and the master_uri is the central machine they all talk to. I'm uploading fresh versions of the simple* wpf nodes with healthier WPF+ROS lifecycles and without the programmatically set ROS_MASTER_URI and ROS_HOSTNAME. You can use either the user or system windows environment variables to set those variables for EVERY node on the system, which is far more manageable IMO. |
Oh God, you are the best! I'm going to call it a day and add in my tomorrow's TODO list to try and play with custom messages and services. I'll keep you posted in here! Thanx a million! |
Hello Eric, Since I can't understand the internal mechanics could you please look into this? Am I doing something incorrect? |
Good morning! :) P.S. Since I am new to github, do you believe that I should create a new issue? |
And a pull request |
Hello from Greece!
I was poking around on the internet and landed on this repo.
I want to develop C# applications on windows (8.1) that are able to communicate with ROS Indigo Igloo running on some other Ubuntu 14.04 machine. So I am wondering whether this .NET repo will do the trick and which version of ROS it supports.
Thank you in advance!
The text was updated successfully, but these errors were encountered: