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
URLandPORTbefore 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-sandboxargument 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 anechocommand on the.bashrcfile. Make sure allechocommands 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
Francisco Garcia
License
MIT © Fraunhofer FKIE