Coral is a (experimental) renderer for maritime robotics simulation in ROS 2. The goal is to replace the classical Gazebo or RViz GUI to render nice, realistic images when performing maritime robotics experiments or simulation. It is based on osgOcean and is inspired from the well-known UWSim in ROS 1.
The module can be explored and downloaded from GitHub
This module allows logging data from C++ code (typically a robot control loop where you want to store the control inputs, error, robot command, etc.) in order to plot them with Python (matplotlib). The data files are in YAML and can also be generated from elsewhere as long as they follow the same syntax. The plotting script can also create videos and has many options to change the display.
The module can be explored and downloaded from Github:
As we saw in class, I recommend the use of Qt Creator IDE to develop in C++. There are a few reasons for this:
Other IDE's may have the same properties (KDevelop, VS Code, Eclipse, CLion...) but Qt Creator is recommended for labs. If you feel (or are sure you are) confident enough to use another tool, do what you want - but we cannot install all IDE's on the lab computers.
I recall below how to load a CMake project in Qt Creator. There are small differences depending on the project being a ROS package or not. If anything goes wrong (like C++ files not appearing), just quit Qt Creator, delete the CMakeLists.txt.user file and follow the steps more carefully.
A standard way to share C++ source files is to regroup them under a CMake project. In this case, the project is composed of:
Configuring a CMake project is about creating a build directory and tell CMake where it is. This makes no difference whether you have created a project from scratch or downloaded one from Github or other place. The classical steps are, in a terminal:
Standalone C++ projects are usually compiled in a build folder. This folder has to be manually created, for ease of use I recommend creating it in the project folder. This has to be done before loading the project in Qt Creator, and indicate this folder as the compilation one:
ROS uses CMake but in its own fashion. The projects are called "packages" and the sources are located in the src folder of the ROS workspace. On the other hand, the build directory is not inside the same folder. It is in the build folder of the ROS workspace and has to be created by ROS itself.
Here are the steps to reproduce to load a new ROS package into Qt Creator (it should also work with other CMake-friendly IDE's). When I write "new ROS package", I mean a package that was just created or downloaded in your src folder. Modying an existing package does not require the following steps. Note that any IDE has to be run from a terminal that is set up for ROS or ROS 2, so it has access to the various workspaces. In the VM or in the lab computers, two shortcuts exist, to run Qt Creator explicitely for ROS 1 or ROS 2.
As seen in the previous section, and during some of the labs, Qt Creator can be tricky to configure when we want to load a CMake project, and even more when loading a ROS package.
This repository includes a script (for Linux / macOS) to automatically generate the QtCreator (and VS Code) configuration file CMakeLists.txt.user (non-ROS and ROS projects). Just run the following line from the folder where CMakeLists.txt is:
When loading a CMakeLists.txt, QtCreator will read the content and display all sources (.h and .cpp) that are listed as useful to create executables or libraries. Here are the main tools from the GUI:
ROS (1/2) nodes can be run from Qt Creator (as soon as a ROS master is available, for ROS 1). Launch files cannot be used, so topics / parameters have to be set from the C++ code. This is very useful for initial debugging, before remapping everything with launch files.
This repository includes the ros_management.bash script that helps dealing with both ROS 1 and 2 if sourced in your .bashrc:
You will also find a ROS cheat sheet that motivates how and when using ROS tools versus standard ones (CMake / IDE) when working on packages.
A few utility scripts used at ECN can be found on this repository. They are tailored for the installation and maintenance of the ECN compter and virtual machines, but feel free to use any part of the scripts.
Duels is a C++ framework to build AIs that play various 1 vs 1 games. It can be installed through Debian packages (available on Github) for Ubuntu Focal or Jammy. The source can also be used to create new games with embedded AIs and let other people play against it. All the mechanics (rules) and AI are in C++ while the UI uses Pygame. Communication is done through zero-MQ.
In the following link you can find a tar file containing the Clickshare tool for Linux computers. All libraries should be shipped in. The first run will ask for the admin password in order to update some USB rules, then it will run directly.
Just untar this file and run clickshare.sh