Player is a network server for robot control. It provides interfaces of sensors and actuators over network. A program communicates with Player to get sensor data and to send commands to actuators. So basically Player is a bridge between your program and phsical robots/simulator. For more information about Player, you can check this Player wiki page.
Stage is a robot simulator. It simulates mobile robots, sensors and other objects in the environment. For more information, see the Stage page on Github.
In my course of robotics, I used to install Ubuntu in Parallels Desktop as my develop environment to finish the course assignments. But different usage of keyboard shotcut(I’m kind of a terminal intended guy) between Ubuntu and MacOSX is really annoying to me. I tried to look for a better solution to meet my requirements:
1) Light-weight and easy to maintain;
2) Everything can be done in command line except for writing code in IDE.
It ends up to be docker + xforwarding.
For those who just want to use the develop environment, you can pull the docker image here. More detail information about how this image was built out, you can check out the Dockerfile here.
Besides the docker build, I want to share some trickies of compiling the Player/Stage:
Updated on [04-02-2017]:
As Docker released new version of Docker for MacOSX, now it is leveraging supervisor framework to execute containers. Thus X11 forwarding is natively supported and we don’t need sshd anymore.
Following is my application:
#!/bin/bash
myname="robotdev"
open -a XQuartz
xhost + $(hostname)
docker run -it --rm -u docker -e DISPLAY=$(hostname):0 -h robotdev -v /tmp/.X11-unix:/tmp/.X11-unix -v ~/dev:/home/dev --name "$myname" titanzhang/robotdev /bin/bash
xhost - $(hostname)