fkie_mas_gui

Graphical interface to manage the running and

configured ROS nodes on different hosts.

README

MAS GUI

Node Manager for ROS (1/2).

The MAS GUI is composed by two main parts: A Back-End component (daemon with WebSocket), and a Front-End Component (powered by Electron and ReactJS). Data exchange between the daemon and the Front-End takes place via the WebSocket. The description of the message formats can be found here.

Install

We need to first install dependencies and run both Front and Back-End components:

Install dependencies

You need a running TTYD to show screen or log output of the nodes.

sudo snap install ttyd --classic
Update nodejs to v22

The code have been tested with NodeJS v22.21.0:

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs

Server Side (Back-End)

cd ros_workspace/src
git clone https://github.com/fkie/fkie-multi-agent-suite.git fkie-multi-agent-suite
rosdep update
rosdep install -i --as-root pip:false --reinstall --from-paths fkie-multi-agent-suite

Then build all packages:

catkin build fkie_mas_meta

or

colcon build --packages-up-to fkie_mas_meta

Client Side (Front-End)

Only for developer mode: Download and install JavaScript module dependencies:

cd fkie_mas_gui
npm install
npm run build

Usage

Run the app in developer mode:

npm run dev:ns

The app will start automatically the local daemon and master discovery nodes.

Start only as node (without GUI)

Starts a server on default port 6274. You can change the port in electron.vite.config.ts.

npm run server:ns

Then open in browser http://localhost:6274

Additional Tools

  • To package the client component into an AppImage, run:

cd fkie_mas_gui
npm run build:linux
  • update licenses of dependencies

npm install -g license-report
license-report --config=./license-report-config.json > src/renderer/deps-licenses.json

Known Issues

  • If you work behind a proxy, you might need to explicitly specify the URL and PORT before downloading the electron packages. The problem occurs when installing the package (npm install).

export ELECTRON_GET_USE_PROXY=true
export GLOBAL_AGENT_HTTPS_PROXY=http://XXX.XXX.XXX.XXX:XXXX
  • The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now.: You can check https://github.com/electron/electron/issues/42510 for more details. Use --no-sandbox argument as workaround, e.g.:

npm run dev -- --no-sandbox

or

mas-gui.appimage --no-sandbox
  • If you get the SFPT error: getSftpChannel: Packet length XXXXXX exceeds max length of XXXXX, it might be caused by an echo command on the .bashrc file. Make sure all echo commands are defined only for interactive shells. For instance in .bashrc:

...
# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

echo "your echo commands here!"

See related reports on Stack Exchange, SSH2 GitHub or StackOverflow.

  • You don’t see the correct output in external terminal. Try to change your default terminal:

sudo update-alternatives --config x-terminal-emulator

Maintainers

License

MIT © Fraunhofer FKIE