The typical robotic stack is based on the Robotic Operating System (ROS) whose version is linked to a specific Ubuntu LTS distribution, e.g. Indigo-14.04 and Kinetic-16.04 to mention the most recent ones. When working with recent laptops it is possibly that even with a kernel update (like Linux 4.4) it is not possible to have a good working machine.
This post aims at providing some basic indications for using the Docker container system for creating a ROS setup with a different Linux distribution together with GPU support, e.g. running ROS Indigo inside Ubuntu 16.04. Docker is used in the industry for isolation and easy deployment, and in this case it solves the compatibility problem with minimal performance penalty.
We are using this approach internally at PERCRO laboratory of SSSA for working with research robots developed in RAMCIP and ReMeDi, and also with the Baxter robot from Rethink Robotics. The post provides a basic recap also on Docker for the minimal elements useful for pu…
CMake has greatly simplified the process of building libraries and applications across different platforms, and it is adopted by several large projects. Libraries can be easily found through find_package but the result of the lookup has to be manually added to the target through different commands. This post discusses how include the external libraries in an easier way:
Robotics and Computer Vision applications are taking advance of a range USB3 cameras that are characterised by large resolution, high-frame rate and low-latency. Examples of such cameras we worked with are the StereoLabs ZED that provides a side-by-side low-latency stereo image, or monocular PointGrey cameras.
These cameras belong to the USB Video Class that has, since long time, reduced the need of specific drivers. A typical challenge in the use of this camera is the management of USB bandwidth in particular when multiple cameras have to be integrated over a same computer.
The theoretical bandwidth of USB3 is 5 Gbps but then it is known that the effective bulk transfer bandwidth is 440MB/s. In addition to this there are issues of protocol overhead that affect the use of a given resolution and rate selection.
When using multiple cameras there are also limitations in the chipset used in the motherboard. Some chipset have one single USB3 bus shared among multiple ports, instead, if an…