Hi, I'm Suhas. Nice to meet you!

Hi, I’m Suhas from India. I’m an incoming master’s student at Saarland University and have done my bachelors in Electronics and Communication engineering. I’m interested in Robotics, specifically in perception and planning part (though I’m very much new to the whole topic). I have had some experience working on computer vision problems in my bachelors.

I intend to participate in GSOC 2021 and found this project through it. To understand it better, I’m working on exercises present on Robotics Academy and picked up an issue where I thought I might be able to contribute. Test gzclient + vnc + novnc as a replacement of gzweb in RADI I need some help and suggestions in this.

As of now I have manually,

  1. Installed x11vnc inside container
  2. Exposed a port 5900 for the container to communicate with x11vnc
  3. Started gzclient from container terminal.
  4. Start x11vnc from container terminal

Now the gzclient can be accessed from outside using novnc.

To dockerise it, I’ll move the installation of x11vnc and expose port to Dockerfile. To start the gzclient and x11vnc, I think I can make changes here

Is this fine? And is this intended as a replacement for gzweb or an additional option? So I have to remove the code starting gzweb server as well.
There’s one more issue, the gzclient is not maximised by default. But it’s possible to control display size by modifying ~/.gazebo/gui.ini

Please let me know if this is the expected approach and also if you have any suggestions. Thanks!

2 Likes

Hi @Suhas-G ,

glad to hear from you. Yes, you are completely right, that is the expected approach.

It would be good to have a performance comparison between current implementation (using gzweb) and the new one (using x11vnc + novnc) in the same computer. That way we would have an estimation for the (hopeful) speedup of the new approach for “world visualization”.

Feel free to attach the instructions for your deployment in that issue, so other JdeRobot developers may also test it and hopefully integrate it. For now, only for the FollowLine exercise. If found useful we will apply it for the remainder.

Cheers!

Thanks @jmplaza.
I was facing some issues in getting the gzclient to run when done through docker, so it took some time. (It was because of environment variables not set in shell). I did a comparision but didn’t find a lot of improvement unfortunately, infact memory usage increased. :sweat_smile:

Comparision:
Comparision was made at 2 points for follow_line exercise. One before running the algorithm script, after connection got established. 2nd one after running the script at approximately same point on the track


1st Row: Gzweb. Left: Before starting script, Right: After starting script
2nd Row: GZclient. Left: Before starting script. Right: After starting script

So as seen in image, memory consumption is actually more, though CPU appears to be used a bit less. CPU usage varies. For Gzweb it varies from 400% to 500%, for Gzclient it varies from 380% to 450% from what I have seen. (Higher than 100 is indicating multiple cores)

I used 2 browser tabs in case of Gzclient instead of iframe, because we can specify the novnc port to use.
The code changes I have pushed to my fork branch. Comparing JdeRobot:master...Suhas-G:issue-740 · JdeRobot/RoboticsAcademy · GitHub

Let me know what I can try. And if anyone else can also try out the setup to compare performance, maybe it would be better.

Thanks!

Great analysis @Suhas-G !.

The gzclient solution opens the door to better debugging support and even new GUI possibilities in the future. Let’s move towards it. Feel free to cope the issue-740 for FollowLine exercise and submit the corresponding pull-requests. Changes in the RADI and in the exercise.html (=the new name for host.py) will be required.

Thanks @jmplaza !
So both gzweb and gzclient should available in RADI right?
I can retain the Dockerfile commands to install gzweb and in manager.py, I have to run x11vnc commands only for “follow_line” and gzweb for other exercises?
And the new name for host.py is a separate issue right? So it should be part of a different pull request?

HI @Suhas-G ,

yes, gzweb and gzclient should be available in RADI. Let’s retain for now the gzweb commands for all exercises except FollowLine. Manager will start x11vnc only for FollowLine exercise for now. And exercise.html for that exercise will change too.

Yes, changing host.py to exercise.py is a different issue, but for the FollowLine one let’s introduce it in this Pull-Request.

Cheers,

OK. I will update the issue after raising a pull request.
The forum does not allow putting links to github(dot)com domain I think, so it has hidden my previous comments.

I have raised a pull request. gzclient + vnc + novnc for follow_line(fixes #740) by Suhas-G · Pull Request #759 · JdeRobot/RoboticsAcademy · GitHub

1 Like