Docker

The latest versions of docker-engine and docker-compose have to be installed before getting started. Please have a look at docker’s official website for more insights into the working and usage of docker images and docker containers.

It is highly recommended that you use docker containers to build and run your nodes rather than directly installing ROS and working with the MAS industrial software on your PC.

Using Our Images

Our docker images are available here. The images provide a proper development environment -with ros pre-installed and without any missing dependencies- for the MAS industrial software. Additionally, the images also contain src packages which are prebuilt.

Directory structure in the image:

/home/robocup/<ros_distro>/catkin_ws
  ├── build
  ├── devel
  ├── logs
  ├── src
    ├── mas_industrial_robotics
    ├── mas_perception_msgs
    ├── mas_navigation
    ├── ...

Where ros_distro corresponds to the ros distribution i.e. kinetic, melodic.

The main github branch of the each ros distro should always reflect latest tag in the github registry, for example kinetic branch reflects mas_industrial_robotics/industrial-kinetic:latest, while the devel branch always reflects devel tag, for example kinetic branch reflects mas_industrial_robotics/industrial-kinetic:devel

  • Start the container

    To start the container, docker-compose is required, with which it is easier to define the environment and volumes from the host PC to the container.

    docker-compose -f start-container.yaml up industrial_<ros_distro>
    

    If there is no local image, docker will automatically pull from MIR github container registry.

    The images can also be pulled manually without docker-compose.

    #kinetic image
    docker pull  ghcr.io/b-it-bots/mas_industrial_robotics/industrial-kinetic:latest
    
    #melodic image
    docker pull ghcr.io/b-it-bots/mas_industrial_robotics/industrial-melodic:latest
    
  • Log in to the container

    docker exec -it mas_industrial_robotics_industrial_kinetic_1 /bin/bash
    

Tip

The container is set up to use host network, and therefore when you run roscore or ros packages in either host or container, and both will have access to ros communication infrastructure such as topics and services.

Mounting Local Volumes

Since the codes in the image are not persistent, which means they will be removed when the images are rebuilt, it is recommended to mount your local disk containing the repository to the container.

To mount your local disk to the container, you need to modify start-container.yaml under mas_industrial_robotics repository. The following example shows how you can mount your rviz configuration and mas_industrial_robotics repository which is mounted to /home/robocup/<ros_distro>/catkin_ws/src/external in the container.

# under volume add your local disk
volumes:
  - $HOME/.rviz:/home/robocup/.rviz
  - $HOME/catkin_ws/mas_industrial_robotics:/home/robocup/<ros_distro>/catkin_ws/src/external/mas_industrial_robotics

Since there are now two mas_industrial_robotics repositories, you have to do the followings to make the build successful:

  • Remove or CATKIN_IGNORE the repository that comes with the image under src/mas_industrial_robotics.

  • catkin clean to remove the prebuilt packages from the image

  • Rebuild the package e.g. catkin build mir_object_recognition

Now, you can make changes locally in your PC using your favourite IDE, and build the package inside the container.

Note

This was only tested with Linux.

Creating Your Own Image

You can create your own image by using b-it-bots image as base:

FROM ghcr.io/b-it-bots/mas_industrial_robotics/industrial-melodic:latest

USER robocup

# add your modification e.g. install tensorflow
RUN pip install tensorflow