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

Advice for Teleoperation of a Robot

asked 2019-11-25 10:51:48 -0500

zulfiz gravatar image


My project is to teleoperate a robot over a ROS network. I have been able to demonstrate that the concept works over a local ROS network. But, now I have to implement it so that robot can be operated remotely. I have a control station that has some controls to control the robot. The control station is connected to internet. I have a the robot which then subscribes to the control commands being published by the control station and performs the appropriate actions. Also the robot has a camera mounted on it which publishes a live video stream for the control station. I am able to achieve this cross communication if my control station and robot are connected to the same network. But, now I have to implement it where they are connected to separate internet networks. I saw following solutions over the internet:

  1. Use Robot Web Tools to achieve this (Could someone point to a good tutorial, that I can use as a starting point)
  2. Use Port Forwarding (I am using Netgear At&T 770S Aircards for internet connections as I want my communication to happen over 4G LTE. I am facing issues to get the port forwarding work. I think this is the easiest route, but I don't know if Netgear Aircards can be used to do port forwarding. I have tried to setup port forwarding on port 80 by logging into the modem on a browser but open port checker tool says that port is closed.)

Please let me know, which route is the best way to go. Also, it'll be really helpful if you could point me towards some useful resources. If there is some solution which would be better than these two solutions, please let me know. Looking forward to your responses. Thank you!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2019-11-25 14:13:45 -0500

billy gravatar image

updated 2019-11-25 20:17:42 -0500

You will need both port forwarding and robotwebtools if you plan to make the interface a web browser. You don't say in your question how you are doing it today but I'll assume you're using the standard route of having ROS on multiple machines and using standard pub/sub.

If you plan to have the remote machine running ROS and controlling same as now, I think you'll find a VPN in your future but I have zero understanding of how that will work so will not comment further.

If you do not plan to have ROS running on remote machine, then rosbridge, robotwebtools and portforwarding will be required.

As you note, robotwebtools is how to interface using browser. The robotwebtools site example codes includes a telop example so much of the work has been for you, but the last time I looked at that site the code had some dead links (URL to libraries that no longer work). You'll also find that getting telop to run on an iPhone will be very difficult as iOS will not present a keyboard unless there is a textbox open. When I started the same thing you're trying I gave up on the keyboard based telop and instead created a click-a-button based code for "telop"ing. If you're planning on remote machine being a PC with keyboard, then you're probably OK. But if control via a phone is required, you should not plan on a keyboard input method.

You'll need to use and understand rosbridge, robotwebtools, apache, HTML, and at least a little about how networks work.

I cannot help you with your portforwarding issue. You haven't provided any info on your network (school, work, home, port 80 blocked, intermediate firewalls, etc).

If you tell me you're not working on a homework assignment I can provide the HTML code for my page that allows for driving robot around clicking on buttons on webpage with camera streaming video.

EDIT after follow on questions:

1 - see below for HTML code that worked on my set up. This code resides on the robot computer and is accessed through the page being served by Apache that is also running on the robot computer.

2 - Google tells me that port forwarding can be setup on those air cards. You'll need to port 80 and 8080 and 9090 I think(can't remember for sure) to run the code below. The air card that needs the port forwarding is the one that supports the robot, not the one being used by remote. You need to know the ip address for the aircard supporting the robot and route ports specially to the IP address of the robot on the wifi network.

3 - As I noted in the original answer, if you plan to run ROS on remote machine I cannot help you. I think you need VPN for that. I don't know anything about VPN(never tried). My ... (more)

edit flag offensive delete link more


Thank you @Bily for your response. I'll try to answer your questions below:

  1. No, this is not a homework assignment. So, if you could provide me with some examples you implemented it'll be great.
  2. I cannot use my work WiFi for this project. They have setup their firewalls, which make the port forwarding issue very difficult. So, I have gotten two AT&T AirCards 770S. One provides internet coverage to robot, and the other provides internet coverage to the Remote Station. Let me know any other information you might need to comment on this.
  3. I'll have ROS running on both ends and my control station would be a laptop. So, I don't think I would have the issue of a keyboard.

Looking forward to your reply.Thank you!

zulfiz gravatar image zulfiz  ( 2019-11-25 15:02:47 -0500 )edit

Got similar issue in 2020. We were wondering if you solve the issue, so you could teleoperate your robot via 4G LTE network.

lukelu gravatar image lukelu  ( 2020-09-17 22:53:30 -0500 )edit

Question Tools

1 follower


Asked: 2019-11-25 10:51:48 -0500

Seen: 871 times

Last updated: Nov 25 '19