# Problems running rviz while using ssh

**URL:** https://forum.hello-robot.com/t/problems-running-rviz-while-using-ssh/67
**Category:** Ask
**Created:** [September 1, 2020, 8:16pm UTC](https://forum.hello-robot.com/t/problems-running-rviz-while-using-ssh/67 "2020-09-01T20:16:25Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![csemecu](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/csemecu/32/45_2.png) [@csemecu](https://forum.hello-robot.com/u/csemecu)
#### Post date: [September 1, 2020, 8:16pm UTC](https://forum.hello-robot.com/t/problems-running-rviz-while-using-ssh/67/1 "2020-09-01T20:16:26Z")

</div>

I have been trying to follow the directions on [Untethered Operation](https://docs.hello-robot.com/untethered_operation/) and got an error that seems to be related with OpenGL and OGRE.

After I succesfully ssh into the robot I tried the command:

> roslaunch stretch\_funmap mapping.launch

I’m going to paste the entire command line output later, but the bottom line is I get a warning with an exception:  
`[WARN] [1598989836.193298359]: OGRE EXCEPTION(3:RenderingAPIException): Unable to create a suitable GLXContext in GLXContext::GLXContext at /build/ogre-1.9-B6QkmW/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXContext.cpp (line 61)`

I looked a bit online and found [this in ROS Answers](https://answers.ros.org/question/10056/rviz-ogre-exception3renderingapiexception-unable-to-create-a-suitable-glxcontext-in-glxcontext/) (although that answer is from 2012) so I typed into my own computer’s terminal `glxinfo | grep version` and this was the output:

 ![issue_glxinfo](https://canada1.discourse-cdn.com/flex030/uploads/hello_robot2/original/1X/71e09417248885c1533d1abdfed45066729d8410.png)

This warning becomes an error after 100 tries  
`[ERROR] [1598990791.632950490]: Unable to create the rendering window after 100 tries. [INFO] [1598990791.632966605]: Stereo is NOT SUPPORTED terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_M_construct null not valid [INFO] [1598990791.671393091]: current scan mode: Boost, max_distance: 12.0 m, Point number: 8.0K , angle_compensate: 2 [rviz-16] process has died [pid 11132, exit code -6, cmd /opt/ros/melodic/lib/rviz/rviz -d /home/hello-robot/catkin_ws/src/stretch_ros/stretch_funmap/rviz/stretch_mapping.rviz __name:=rviz__ log:=/home/hello-robot/.ros/log/9e8b418c-ec8e-11ea-bb16-38002587e8f3/rviz-16.log]. log file: /home/hello-robot/.ros/log/9e8b418c-ec8e-11ea-bb16-38002587e8f3/rviz-16*.log`

Any help will be greatly appreciated 🙂

* * *

And here I’m pasting the entire output of the terminal up until the first warning of the ogre exception:

`hello-robot@stretch-re1-1008:~$ roslaunch stretch\_funmap mapping.launch  
… logging to /home/hello-robot/.ros/log/65f0ada0-ec8c-11ea-bb16-38002587e8f3/roslaunch-stretch-re1-1008-10532.log  
Checking log directory for disk usage. This may take a while.  
Press Ctrl-C to interrupt  
Done checking log file disk usage. Usage is \<1GB.

started roslaunch server [our\_hostname]:34503/

# SUMMARY

CLEAR PARAMETERS

- /ekf\_se/

PARAMETERS

- /camera/realsense2\_camera/accel\_fps: 63
- /camera/realsense2\_camera/accel\_frame\_id: camera\_accel\_frame
- /camera/realsense2\_camera/accel\_optical\_frame\_id: camera\_accel\_opti…
- /camera/realsense2\_camera/align\_depth: True
- /camera/realsense2\_camera/aligned\_depth\_to\_color\_frame\_id: camera\_aligned\_de…
- /camera/realsense2\_camera/aligned\_depth\_to\_fisheye1\_frame\_id: camera\_aligned\_de…
- /camera/realsense2\_camera/aligned\_depth\_to\_fisheye2\_frame\_id: camera\_aligned\_de…
- /camera/realsense2\_camera/aligned\_depth\_to\_fisheye\_frame\_id: camera\_aligned\_de…
- /camera/realsense2\_camera/aligned\_depth\_to\_infra1\_frame\_id: camera\_aligned\_de…
- /camera/realsense2\_camera/aligned\_depth\_to\_infra2\_frame\_id: camera\_aligned\_de…
- /camera/realsense2\_camera/allow\_no\_texture\_points: True
- /camera/realsense2\_camera/base\_frame\_id: camera\_link
- /camera/realsense2\_camera/calib\_odom\_file:
- /camera/realsense2\_camera/clip\_distance: -2.0
- /camera/realsense2\_camera/color\_fps: 15
- /camera/realsense2\_camera/color\_frame\_id: camera\_color\_frame
- /camera/realsense2\_camera/color\_height: 720
- /camera/realsense2\_camera/color\_optical\_frame\_id: camera\_color\_opti…
- /camera/realsense2\_camera/color\_width: 1280
- /camera/realsense2\_camera/depth\_fps: 15
- /camera/realsense2\_camera/depth\_frame\_id: camera\_depth\_frame
- /camera/realsense2\_camera/depth\_height: 720
- /camera/realsense2\_camera/depth\_optical\_frame\_id: camera\_depth\_opti…
- /camera/realsense2\_camera/depth\_width: 1280
- /camera/realsense2\_camera/device\_type:
- /camera/realsense2\_camera/enable\_accel: False
- /camera/realsense2\_camera/enable\_color: True
- /camera/realsense2\_camera/enable\_depth: True
- /camera/realsense2\_camera/enable\_fisheye1: False
- /camera/realsense2\_camera/enable\_fisheye2: False
- /camera/realsense2\_camera/enable\_fisheye: False
- /camera/realsense2\_camera/enable\_gyro: False
- /camera/realsense2\_camera/enable\_infra1: False
- /camera/realsense2\_camera/enable\_infra2: False
- /camera/realsense2\_camera/enable\_infra: False
- /camera/realsense2\_camera/enable\_pointcloud: False
- /camera/realsense2\_camera/enable\_pose: False
- /camera/realsense2\_camera/enable\_sync: True
- /camera/realsense2\_camera/filters: pointcloud
- /camera/realsense2\_camera/fisheye1\_frame\_id: camera\_fisheye1\_f…
- /camera/realsense2\_camera/fisheye1\_optical\_frame\_id: camera\_fisheye1\_o…
- /camera/realsense2\_camera/fisheye2\_frame\_id: camera\_fisheye2\_f…
- /camera/realsense2\_camera/fisheye2\_optical\_frame\_id: camera\_fisheye2\_o…
- /camera/realsense2\_camera/fisheye\_fps: 30
- /camera/realsense2\_camera/fisheye\_frame\_id: camera\_fisheye\_frame
- /camera/realsense2\_camera/fisheye\_height: 480
- /camera/realsense2\_camera/fisheye\_optical\_frame\_id: camera\_fisheye\_op…
- /camera/realsense2\_camera/fisheye\_width: 640
- /camera/realsense2\_camera/gyro\_fps: 200
- /camera/realsense2\_camera/gyro\_frame\_id: camera\_gyro\_frame
- /camera/realsense2\_camera/gyro\_optical\_frame\_id: camera\_gyro\_optic…
- /camera/realsense2\_camera/imu\_optical\_frame\_id: camera\_imu\_optica…
- /camera/realsense2\_camera/infra1\_frame\_id: camera\_infra1\_frame
- /camera/realsense2\_camera/infra1\_optical\_frame\_id: camera\_infra1\_opt…
- /camera/realsense2\_camera/infra2\_frame\_id: camera\_infra2\_frame
- /camera/realsense2\_camera/infra2\_optical\_frame\_id: camera\_infra2\_opt…
- /camera/realsense2\_camera/infra\_fps: 30
- /camera/realsense2\_camera/infra\_height: 480
- /camera/realsense2\_camera/infra\_width: 640
- /camera/realsense2\_camera/initial\_reset: True
- /camera/realsense2\_camera/json\_file\_path:
- /camera/realsense2\_camera/linear\_accel\_cov: 0.01
- /camera/realsense2\_camera/odom\_frame\_id: camera\_odom\_frame
- /camera/realsense2\_camera/pointcloud\_texture\_index: 0
- /camera/realsense2\_camera/pointcloud\_texture\_stream: RS2\_STREAM\_COLOR
- /camera/realsense2\_camera/pose\_frame\_id: camera\_pose\_frame
- /camera/realsense2\_camera/pose\_optical\_frame\_id: camera\_pose\_optic…
- /camera/realsense2\_camera/publish\_odom\_tf: True
- /camera/realsense2\_camera/publish\_tf: True
- /camera/realsense2\_camera/rosbag\_filename:
- /camera/realsense2\_camera/serial\_no:
- /camera/realsense2\_camera/tf\_publish\_rate: 0.0
- /camera/realsense2\_camera/topic\_odom\_in: odom\_in
- /camera/realsense2\_camera/unite\_imu\_method:
- /camera/realsense2\_camera/usb\_port\_id:
- /d435i\_configure/initial\_mode: High Accuracy
- /ekf\_se/acceleration\_gains: [0.8, 0.0, 0.0, 0…
- /ekf\_se/acceleration\_limits: [1.3, 0.0, 0.0, 0…
- /ekf\_se/base\_link\_frame: base\_link
- /ekf\_se/control\_config: [True, False, Fal…
- /ekf\_se/control\_timeout: 0.2
- /ekf\_se/debug: False
- /ekf\_se/debug\_out\_file: /path/to/debug/fi…
- /ekf\_se/deceleration\_gains: [1.0, 0.0, 0.0, 0…
- /ekf\_se/deceleration\_limits: [1.3, 0.0, 0.0, 0…
- /ekf\_se/frequency: 15
- /ekf\_se/imu0: /imu/data
- /ekf\_se/imu0\_config: [False, False, Fa…
- /ekf\_se/imu0\_differential: True
- /ekf\_se/imu0\_nodelay: False
- /ekf\_se/imu0\_queue\_size: 1
- /ekf\_se/imu0\_relative: True
- /ekf\_se/imu0\_remove\_gravitational\_acceleration: True
- /ekf\_se/initial\_estimate\_covariance: [‘1e-9’, 0, 0, 0,…
- /ekf\_se/map\_frame: map
- /ekf\_se/odom0: /odom
- /ekf\_se/odom0\_config: [True, True, True…
- /ekf\_se/odom0\_differential: True
- /ekf\_se/odom0\_nodelay: False
- /ekf\_se/odom0\_queue\_size: 1
- /ekf\_se/odom0\_relative: False
- /ekf\_se/odom\_frame: odom
- /ekf\_se/print\_diagnostics: True
- /ekf\_se/process\_noise\_covariance: [0.05, 0, 0, 0, 0…
- /ekf\_se/publish\_acceleration: False
- /ekf\_se/publish\_tf: False
- /ekf\_se/sensor\_timeout: 0.2
- /ekf\_se/stamped\_control: False
- /ekf\_se/transform\_time\_offset: 0.0
- /ekf\_se/transform\_timeout: 0.0
- /ekf\_se/two\_d\_mode: True
- /ekf\_se/use\_control: False
- /ekf\_se/world\_frame: odom
- /funmap/debug\_directory: /home/hello-robot…
- /imu\_filter\_node/fixed\_frame: map
- /imu\_filter\_node/use\_mag: False
- /joint\_state\_publisher/rate: 15.0
- /joint\_state\_publisher/source\_list: ['/stretch/joint\_…
- /laser\_scan\_matcher\_node/fixed\_frame: odom
- /laser\_scan\_matcher\_node/max\_angular\_correction\_deg: 20.0
- /laser\_scan\_matcher\_node/max\_iterations: 10
- /laser\_scan\_matcher\_node/max\_linear\_correction: 0.2
- /laser\_scan\_matcher\_node/use\_imu: False
- /lidar\_node/angle\_compensate: True
- /lidar\_node/frame\_id: laser
- /lidar\_node/inverted: False
- /lidar\_node/scan\_mode: Boost
- /lidar\_node/serial\_baudrate: 115200
- /lidar\_node/serial\_port: /dev/hello-lrf
- /robot\_description: \<?xml version="1…
- /robot\_state\_publisher/publish\_frequency: 15.0
- /rosdistro: melodic
- /rosversion: 1.14.9
- /stretch\_driver/broadcast\_odom\_tf: False
- /stretch\_driver/controller\_calibration\_file: /home/hello-robot…
- /stretch\_driver/rate: 25.0
- /stretch\_driver/timeout: 0.5

NODES  
/  
d435i\_accel\_correction (stretch\_core/d435i\_accel\_correction)  
d435i\_configure (stretch\_core/d435i\_configure)  
d435i\_frustum\_visualizer (stretch\_core/d435i\_frustum\_visualizer)  
ekf\_se (robot\_localization/ekf\_localization\_node)  
funmap (stretch\_funmap/funmap)  
imu\_filter\_node (imu\_filter\_madgwick/imu\_filter\_node)  
joint\_state\_publisher (joint\_state\_publisher/joint\_state\_publisher)  
keyboard\_teleop (stretch\_core/keyboard\_teleop)  
laser\_scan\_matcher\_node (laser\_scan\_matcher/laser\_scan\_matcher\_node)  
lidar\_node (rplidar\_ros/rplidarNode)  
robot\_state\_publisher (robot\_state\_publisher/robot\_state\_publisher)  
rviz (rviz/rviz)  
stretch\_driver (stretch\_core/stretch\_driver)  
/camera/  
realsense2\_camera (nodelet/nodelet)  
realsense2\_camera\_manager (nodelet/nodelet)

auto-starting new master  
process[master]: started with pid [10542]  
ROS\_MASTER\_URI= [our IP]  
setting /run\_id to 65f0ada0-ec8c-11ea-bb16-38002587e8f3  
process[rosout-1]: started with pid [10553]  
started core service [/rosout]  
process[d435i\_accel\_correction-2]: started with pid [10561]  
process[camera/realsense2\_camera\_manager-3]: started with pid [10562]  
process[camera/realsense2\_camera-4]: started with pid [10563]  
process[d435i\_configure-5]: started with pid [10564]  
process[d435i\_frustum\_visualizer-6]: started with pid [10565]  
process[joint\_state\_publisher-7]: started with pid [10571]  
[INFO] [1598989834.458254598]: Initializing nodelet with 8 worker threads.  
process[robot\_state\_publisher-8]: started with pid [10576]  
process[stretch\_driver-9]: started with pid [10588]  
process[funmap-10]: started with pid [10589]  
[WARN] [1598989834.504898268]: The root link base\_link has an inertia specified in the URDF, but KDL does not support a root link with an inertia. As a workaround, you can add an extra dummy link to your URDF.  
process[imu\_filter\_node-11]: started with pid [10595]  
process[ekf\_se-12]: started with pid [10596]  
process[lidar\_node-13]: started with pid [10597]  
process[laser\_scan\_matcher\_node-14]: started with pid [10601]  
[INFO] [1598989834.567274114]: Starting ImuFilter  
process[keyboard\_teleop-15]: started with pid [10612]  
process[rviz-16]: started with pid [10618]  
[INFO] [1598989834.601399913]: Using dt computed from message headers  
[INFO] [1598989834.601437222]: The gravity vector is kept in the IMU message.  
[INFO] [1598989834.622742910]: Starting LaserScanMatcher  
[INFO] [1598989834.634866389]: RPLIDAR running on ROS package rplidar\_ros. SDK Version:1.7.0  
[INFO] [1598989834.644671622]: Imu filter gain set to 0.100000  
[INFO] [1598989834.644706194]: Gyro drift bias set to 0.000000  
[INFO] [1598989834.644721151]: Magnetometer bias values: 0.000000 0.000000 0.000000  
[WARN] [1598989834.695048937]: Both imu0\_differential and imu0\_relative were set to true. Using differential mode.  
[INFO] [1598989834.695517348]: RealSense ROS v2.2.16  
[INFO] [1598989834.695673987]: Built with LibRealSense v2.37.0  
[INFO] [1598989834.695786847]: Running with LibRealSense v2.37.0  
[INFO] [1598989834.849312959]:  
[INFO] [1598989834.913205]: /d435i\_accel\_correction started  
[INFO] [1598989835.109010]: /d435i\_frustum\_visualizer started  
[INFO] [1598989835.244530]: /d435i\_configure started  
[INFO] [1598989835.321033517]: Device with serial number 944122073257 was found.

[INFO] [1598989835.321080394]: Device with physical ID 2-2-10 was found.  
[INFO] [1598989835.321095900]: Device with name Intel RealSense D435I was found.  
[INFO] [1598989835.321709949]: Device with port number 2-2 was found.  
[INFO] [1598989835.321772063]: Resetting device…  
[INFO] [1598989835.346140417]: rviz version 1.13.13  
[INFO] [1598989835.346185725]: compiled against Qt version 5.9.5  
[INFO] [1598989835.346198615]: compiled against OGRE version 1.9.0 (Ghadamon)  
[INFO] [1598989835.355282617]: Forcing OpenGl version 0.  
[INFO] [1598989835.589228]: /keyboard\_teleop started  
libGL error: No matching fbConfigs or visuals found  
libGL error: failed to load driver: swrast  
[INFO] [1598989835.631027]: /stretch\_driver started  
[INFO] [1598989835.632444]: broadcast\_odom\_tf = False  
[INFO] [1598989835.633059]: Loading controller calibration parameters for the head from YAML file named /home/hello-robot/catkin\_ws/src/stretch\_ros/stretch\_core/config/controller\_calibration\_head.yaml  
/home/hello-robot/catkin\_ws/src/stretch\_ros/stretch\_core/nodes/stretch\_driver:1262: YAMLLoadWarning: calling yaml.load() without Loader=… is deprecated, as the default Loader is unsafe. Please read [https://msg.pyyaml.org/load](https://msg.pyyaml.org/load) for full details.  
controller\_parameters = yaml.load(fid)  
[INFO] [1598989835.634963]: controller parameters loaded = {‘tilt\_looking\_up\_offset’: 0.05202406429090555, ‘arm\_retracted\_offset’: 0.0026643147285247233, ‘tilt\_angle\_backlash\_transition’: -0.4, ‘tilt\_angle\_offset’: 0.0016183797745203895, ‘pan\_angle\_offset’: 0.09576371108630456, ‘pan\_looked\_left\_offset’: 0.0009385042517834909}  
[INFO] [1598989835.635678]: self.head\_tilt\_calibrated\_offset\_rad in degrees = 0.0927263307294  
[INFO] [1598989835.636319]: self.head\_pan\_calibrated\_offset\_rad in degrees = 5.48685647576  
[INFO] [1598989835.636994]: self.head\_pan\_calibrated\_looked\_left\_offset\_rad in degrees = 0.0537723326823  
[INFO] [1598989835.637654]: self.head\_tilt\_backlash\_transition\_angle\_rad in degrees = -22.9183118052  
[INFO] [1598989835.638364]: self.head\_tilt\_calibrated\_looking\_up\_offset\_rad in degrees = 2.98075931699  
[INFO] [1598989835.639029]: self.wrist\_extension\_calibrated\_retracted\_offset\_m in meters = 0.00266431472852  
[INFO] [1598989835.643986]: /stretch\_driver rate = 25.0 Hz  
[INFO] [1598989835.644691]: /stretch\_driver timeout = 0.5 s  
[INFO] [1598989835.645839]: /stretch\_driver use\_fake\_mechaduinos = False  
[INFO] [1598989835.646535]: /stretch\_driver base\_frame\_id = base\_link  
[INFO] [1598989835.647390]: /stretch\_driver odom\_frame\_id = odom  
libGL error: No matching fbConfigs or visuals found  
libGL error: failed to load driver: swrast  
[INFO] [1598989836.082021]: /funmap started  
libGL error: No matching fbConfigs or visuals found  
libGL error: failed to load driver: swrast  
[WARN] [1598989836.193298359]: OGRE EXCEPTION(3:RenderingAPIException): Unable to create a suitable GLXContext in GLXContext::GLXContext at /build/ogre-1.9-B6QkmW/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXContext.cpp (line 61)  
rviz::RenderSystem: error creating render window: OGRE EXCEPTION(3:RenderingAPIException): Unable to create a suitable GLXContext in GLXContext::GLXContext at /build/ogre-1.9-B6QkmW/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/GLX/OgreGLXContext.cpp (line 61)`

---

<div class="post-metadata">

### Author: ![csemecu](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/csemecu/32/45_2.png) [@csemecu](https://forum.hello-robot.com/u/csemecu)
#### Post date: [September 1, 2020, 9:46pm UTC](https://forum.hello-robot.com/t/problems-running-rviz-while-using-ssh/67/2 "2020-09-01T21:46:06Z")

</div>

As a work around, I was able to set a remote master in my computer using our hostname and I can run rviz in my own laptop before I launch the funmap launch file. However, this results in rviz not having the same configuration

---

<div class="post-metadata">

### Author: ![bshah](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/bshah/32/55_2.png) [@bshah](https://forum.hello-robot.com/u/bshah)
#### Post date: [September 2, 2020, 12:40am UTC](https://forum.hello-robot.com/t/problems-running-rviz-while-using-ssh/67/3 "2020-09-02T00:40:58Z")

</div>

Hi @csemecu, it’s likely that “Unsuitable GLXContext” error is OpenGL complaining about being unable to start an X Window. The error after a 100 tries (`Unable to create the rendering window`) support this. It should be a simple fix. Since you’re running on Ubuntu, simple add a `-X` flag when ssh-ing into the robot. This allows Rviz to instantiate a renderable X window on your desktop through something called “X Forwarding”. So the command looks like:

```bash
$ ssh -X username@ip-address

```

By the way, I’m glad you were able to get around this using ROS remote master. I personally prefer to use remote master over X Forwarding anyways. The forwarded version of Rviz lags when manipulating the viewport since the computation takes place on the robot. In order to get the same Rviz configuration on my dev computer, I’ve set up a local version of the `stretch_ros` ROS package and `stretch_user` debug folder. If you’re interested in this setup, I’d be happy to add more information to the [Untethered Operation](https://docs.hello-robot.com/untethered_operation/) guide.

---

<div class="post-metadata">

### Author: ![burakaksoy](https://avatars.discourse-cdn.com/v4/letter/b/df788c/32.png) [@burakaksoy](https://forum.hello-robot.com/u/burakaksoy)
#### Post date: [July 23, 2021, 7:14pm UTC](https://forum.hello-robot.com/t/problems-running-rviz-while-using-ssh/67/4 "2021-07-23T19:14:41Z")

</div>

Hi @bshah, I am interested in “setting up a local version of the `stretch_ros` ROS package and `stretch_user` debug folder.” on my dev computer. How can I do that?

Thanks

---

<div class="post-metadata">

### Author: ![bshah](https://yyz2.discourse-cdn.com/flex030/user_avatar/forum.hello-robot.com/bshah/32/55_2.png) [@bshah](https://forum.hello-robot.com/u/bshah)
#### Post date: [July 24, 2021, 4:01pm UTC](https://forum.hello-robot.com/t/problems-running-rviz-while-using-ssh/67/5 "2021-07-24T16:01:44Z")

</div>

Hi @burakaksoy, welcome to the forum! I’ve added information on how to do it to the same Untethered Operation, under the [Visualizing remotely with RViz](https://docs.hello-robot.com/untethered_operation/#visualizing-remotely-with-rviz) section. Let me know if you have any questions.
