# ROS development on MacOSX using docker We need to use docker-machine to handle USB ports inside the docker. ## Docker Machine - Install docker-machine: https://docs.docker.com/machine/install-machine/ - Install virtualbox ### Configuration Follow this gist: https://gist.github.com/stonehippo/e33750f185806924f1254349ea1a4e68 to setup USB to be visible inside the container. ## Pull ROS image ``` docker pull ros:latest ``` ## Run container Following the guide : https://docs.docker.com/samples/library/ros/ ### Create network ``` docker network create ros-network ``` ### Container with roscore only ``` docker run -it --rm --net ros-network --name=roscore ros:latest roscore ``` ### Dev container Command with debug support: ``` docker run -it --rm \ --security-opt seccomp:unconfined \ --net ros-network \ -p 9091:9091 \ --device=/dev/ttyUSB0 \ -v $PWD:/home/project \ --name=$container_name \ --workdir=/home/project \ $image_name /bin/bash ``` ### RViz container #### Install XQuartz Install it from : https://www.xquartz.org/ Configure following: https://sourabhbajaj.com/blog/2017/02/07/gui-applications-docker-mac/ - https://sourabhbajaj.com/blog/2017/02/07/gui-applications-docker-mac/#run-xquartz - get host IP: `ifconfig en0 | grep inet | awk '$1=="inet" {print $2}'` - `defaults write org.macosforge.xquartz.X11 enable_iglx -bool true` #### Run XQuartz ``` IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}') xhost +${IP} ``` #### Install RViz to ROS Image #### Run ``` docker run --rm \ --env="DISPLAY=192.168.5.43:0" \ --volume="$HOME/.Xauthority:/root/.Xauthority:rw" \ --net ros-network \ --env ROS_MASTER_URI=http://roscore:11311 \ --name=rviz \ ros_rviz:latest rviz ``` **Currently does not work** ``` rviz: /build/ogre-1.9-B6QkmW/ogre-1.9-1.9.0+dfsg1/RenderSystems/GL/src/OgreGLSupport.cpp:56: virtual void Ogre::GLSupport::initialiseExtensions(): Assertion `pcVer && "Problems getting GL version string using glGetString"' failed. ```