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

Windows 10 + ROS kinetic with docker + Deep learning Nvidia

asked 2018-10-31 05:27:44 -0600

goupil35000 gravatar image

updated 2018-11-01 03:57:59 -0600

gvdhoorn gravatar image

Hi,

I'm using ROS Kinetic with docker under Ubuntu 16.04, and nvidia-docker as well to use gpu.

Under windows 10, I know that a beta version of ROS 2 is working. But ROS 2 needs some improvements in tools for us to use it, so we want to use ROS 1.

We are able to run under windows 10 a docker with ROS Kinetic in it (I didn't test it, but it seems to work and you can add a X11 server to get graphics). But there is no nvidia-docker in Windows 10, and it's not planned by Nvidia.

Currently we work under Ubuntu, we communicate to the robot through a serial communication and we take images from cameras in ROS topics ?

My questions are these ones: if I use the deep learning part directly under windows 10, is-it easy to communicate with ROS under docker ? The computer will be directly on a robot, so does using such a configuration will be disadvantageous ?

Hope that my question is not completely silly but I need to explore this solution because some people in our team prefer using windows.

Thanks for reply


Edit: Hi gvdhoorn,

Thanks for your reply.

You're right. It's needed to know what is the bandwidth needed. Basically, we need to get from ROS 2 color images (right+left) at 2K/30Hz, using 2 USB3.0 links.

But after thinking about your question, the biggest problem I have is how to capture images in docker under windows from USB3.0 and how to communicate from docker to a COM ports. And if this is possible, what are the performances.

Maybe these questions are more docker and windows related than ROS, even if I want to use ROS in a docker. But if someone has some ideas, it will be great for me !

Have a nice day.

Update: maybe I found the answer: it seems not possible to communicate with USB directly from a docker container under windows 10. One work-around is to use USBIP, but you will have delays ( https://forums.docker.com/t/docker-fo... ). This answer was made in 2017, so maybe some progress has be done about this since then.

edit retag flag offensive close merge delete

Comments

I believe useful answers are going to depend on what it is that you actually want to "communicate" between your Windows programs and your ROS application. Images? Point clouds? Other sensor data? Who is producing, who is consuming?

If you can add a few sentences about that, that would be good.

gvdhoorn gravatar image gvdhoorn  ( 2018-10-31 05:41:18 -0600 )edit

Perhaps the experimental ROS Melodic port that Microsoft announced can help here. That would seem to reduce the need for Docker, although it will depend on the exact packages that you're trying to use.

See here for the announcement.

gvdhoorn gravatar image gvdhoorn  ( 2018-11-01 04:11:25 -0600 )edit

Hi gvdhoom,

Thanks for your answer. I saw the presentation in ROSCon.

I will try it.

goupil35000 gravatar image goupil35000  ( 2018-11-01 12:48:38 -0600 )edit

Can you please not post answers unless you are answering your own question?

Thanks

gvdhoorn gravatar image gvdhoorn  ( 2018-11-01 12:51:08 -0600 )edit

1 Answer

Sort by » oldest newest most voted
0

answered 2018-11-12 23:53:57 -0600

ruffsl gravatar image

Maybe these questions are more docker and windows related than ROS, even if I want to use ROS in a docker.

I’d recommend reflecting on the core dependencies and requirements for your application, and how they relate to Windows 10. If you want to use Docker with GPU hardware acceleration, graphical interface passthrough, mounting of external device interface, and software defined networking, I’d suspect opting for any major Linux distro as a host OS could resolve most of that functionality, reducing the number of hurals just out of the gate so you can focus on the robotic aspects of the project. This is part in due to that the state of linux containers is more mature on linux.

That being said, as gvdhoorn has pointed out, MS has invested efforts in releasing ROS1 for Windows. I haven't used it yet, but if your more comfortable doing software development in windows, this could be a nice avenue for writing native ROS1 code. I’d argue that if you really needed windows support for your application, and are just starting with ROS, then going with ROS2 to target the window deployment would be the better long term investment; using a ros1 bridge in the interim as you migrate older code.

As for using Docker VMs on windows, I’ve found the complication of the virtual machine it introduces difficult; with bridge networks constraining, trying to share file systems a pain, and the added performance overhead unwelcome.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2018-10-31 05:27:44 -0600

Seen: 1,991 times

Last updated: Nov 12 '18