ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

FIXED IT:*strong text*

I analysed the problem with WireShark this afternoon. The problem was that the Android Emulator (QEMU) has a built in firewall, thus using masquerading. The pubsub publisher sends the local ip address running on the emulated cell phone and the emulated firewall changes the address at host side, likely with a bridge. So the ROS Core running on a Ubuntu system was taking fine with HTTP thru the firewall but when I did a:

                                   'rostopic echo \mychatter'

it was trying to send a direct TCP/IP connection directly to the host address inside the emulator. So the SYN packets were just being lost.

I installed pubsub on an Nexus Tablet, not an emulation, and it worked fine. Seems worthy of a NOTE in the Android_Core Tutorial that *This demo doesn't work on a Emulated android device the currently described setup with Android Studio *. I mentioned it in my Question/Description that this was an Android Emulation. I don't know of anything I could have done on Android Studio to get around this. If there is it surely is worth mentioning in the Wiki pages in BOLD.

Anyone know if there is anything set up in ROS to avoid this problem in the Studio setup? Seems pretty silly for ROS to be limited to only machines behind the same firewall. Did I miss something in the tutorial? I was wondering if ROS_IP is provided with ROS_MASTER_URI for non Android Studion emulations to allow ROS to operate thru firewalls. I've picked up a few books on ROS and so far haven't read anyting about special proceedures to take for firewalls.

-piet

FIXED IT:*strong text*

I analysed the problem with WireShark this afternoon. The problem was that the Android Emulator (QEMU) has a built in firewall, thus using masquerading. The pubsub publisher sends the local ip address running on the emulated cell phone and the emulated firewall changes the address at host side, likely with a bridge. So the ROS Core running on a Ubuntu system was taking fine with HTTP thru the firewall but when I did a:

                                   'rostopic echo \mychatter'

it was trying to send a direct TCP/IP connection directly to the host address inside the emulator. So the SYN packets were just being lost.

I installed pubsub on an Nexus Tablet, not an emulation, and it worked fine. Seems worthy of a NOTE in the Android_Core Tutorial that *This demo doesn't work on a Emulated android device the currently described setup with Android Studio *. I mentioned it in my Question/Description that this was an Android Emulation. I don't know of anything I could have done on Android Studio to get around this. If there is it surely is worth mentioning in the Wiki pages in BOLD.

Anyone know if there is anything set up in ROS to avoid this problem in the Studio setup? Seems pretty silly for ROS to be limited to only machines behind the same firewall. Did I miss something in the tutorial? I was wondering if ROS_IP is provided with ROS_MASTER_URI for non Android Studion emulations to allow ROS to operate thru firewalls. I've picked up a few books on ROS and so far haven't read anyting about special proceedures to take for firewalls.

I just looked on the web and find this:

  http://wiki.ros.org/ROS/NetworkSetup

              What about firewalls?
                       If there is a firewall, or other obstruction, between a pair of machines 
                       that you want to use with ROS, you need to create a virtual network
                       to connect them. 

                       We recommend openvpn.

This seems like a rather awkward limitation. Like hooking up some language recognition software in a clowd like Amazon AWS to control robots runing ROS.

-piet

FIXED IT:*strong text*

I analysed the problem with WireShark this afternoon. The problem was that the Android Emulator (QEMU) has a built in firewall, thus using masquerading. The pubsub publisher sends the local ip address running on the emulated cell phone and the emulated firewall changes the address at host side, likely with a bridge. So the ROS Core running on a Ubuntu system was taking fine with HTTP thru the firewall but when I did a:

                                   'rostopic echo \mychatter'

it was trying to send a direct TCP/IP connection directly to the host address inside the emulator. So the SYN packets were just being lost.

I installed pubsub on an Nexus Tablet, not an emulation, and it worked fine. Seems worthy of a NOTE in the Android_Core Tutorial that *This demo doesn't work on a Emulated android device the currently described setup with Android Studio *. I mentioned it in my Question/Description that this was an Android Emulation. I don't know of anything I could have done on Android Studio to get around this. If there is it surely is worth mentioning in the Wiki pages in BOLD.

Anyone know if there is anything set up in ROS to avoid this problem in the Studio setup? Seems pretty silly for ROS to be limited to only machines behind the same firewall. Did I miss something in the tutorial? I was wondering if ROS_IP is provided with ROS_MASTER_URI for non Android Studion emulations to allow ROS to operate thru firewalls. I've picked up a few books on ROS and so far haven't read anyting about special proceedures to take for firewalls.

I just looked on the web and find this:

  http://wiki.ros.org/ROS/NetworkSetup

           What about firewalls?
                  If there is a firewall, or other obstruction, between a pair of machines 
                  that you want to use with ROS, you need to create a virtual network
                  to connect them. 

                  We recommend openvpn.

This seems like a rather awkward limitation. Like hooking up some language recognition software in a clowd like Amazon AWS to control robots runing ROS.

-piet