Kinovarobotics / ros_kortex_vision

ROS package for KINOVA® KORTEX™ arms vision module
BSD 3-Clause "New" or "Revised" License
33 stars 36 forks source link

Running in container on Windows Host #13

Closed jabbershort closed 1 year ago

jabbershort commented 1 year ago

I have created a Docker container to utilise the vision package. I've run this with great success when the container is running on an Ubuntu host, however, whenever its run on a Windows system, the streams fail to connect. This even extends to running the native ROS package on an Ubuntu virtual machine, if that VM is run on a Windows host. Do you have any suggestions?

felixmaisonneuve commented 1 year ago

Hi @jabbershort,

Is your docker container the same? Does your docker container on windows support RTSP protocol? Maybe Windows is blocking the stream coming from your Docker container?

ROS on windows is also not ideal, I don't know if you'll be able to make it work, even in a docker container. Does it work when you run your docker container inside a Ubuntu VM?

Best, Felix

jabbershort commented 1 year ago

Hey @felixmaisonneuve

Yes they are both the same. I've managed to get onto the RTSP stream from the camera using VLC and OpenCV (both natively and in a container) from the Windows host, but I can't seem to get the ROS package running at all.

I've had the standard ros_kortex working in a container on a Windows host for a while now, working very well, just not the vision one.

Even running the container or ROS package natively within the Ubuntu VM doesn't work.

Thanks,

felixmaisonneuve commented 1 year ago

I know ROS does not work very well with VMs (it works in VMware but not in VirtualBox or something like that).

For your docker container, maybe it has to do with docker permissions on Windows. Maybe Windows is blocking RTSP for Docker, but it is allowed for VLC and OpenCV. I don't really know, I have never tried to run ROS on windows.

jabbershort commented 1 year ago

Hi @felixmaisonneuve I've done a bit of testing/research and found something about changing the timeout value. I've changed the STATE_CHANGE_ASYNC_TIMEOUT = 15 in constants.h. This seems to make it work.