Software
RoboGraph (Robotics Graphical Planner)
Most of the mobile robot control frameworks are
based on a middleware layer with several independent modules
that implement primitive actions and report events about their
state. These modules are usually connected with different inter-process communication mechanisms. RoboGraph uses
hierarchical interpreted binary Petri nets to coordinate the
activity of these modules. Tasks are described using an
interpreted Petri net editor and saved in an xml file. A
dispatcher loads these files and executes the different Petri nets
under user requests. A monitor that shows the state of all the
running nets has proven to be very useful for debugging and tracing purposes.
We provided RoboGraph with three different middleware communication interfaces:
- JIPC
- ROS 1 using jros1Client. Tested for noetic distribution.
- ROS 2 using jros2Client. Tested in humble distribution.
RoboGraph for JIPC
This version of RoboGraph allows the control of modules connected using JIPC.
- Requirements
Java 9+
- Download
You can download the latest version here
- Install
To install RoboGraph for JIPC you should:- Create the workspace directory (example ~/rg_jipc_ws)
- Uncompress the downloaded file in the workspace directory
- Add the class directory (example ~/rg_jipc_ws/DGP/class) to the CLASSPATH evironmet variable
- Define the workspace directory. This directory can be set in two different ways:
- 1.- Passed by parameter when starting the applicacion (-w ~/rg_jipc_ws/DGP/)
- 2.- Setting the environment variable DGP_PATH (for example, in bash will be: "export DGP_PATH=$HOME/rg_jipc_ws/DGP/") By default if none of the above is set the DGP working directory is ~/DGP/
- Running
After installing the system as described in the previous section, you will be able to program JIPC modules using the libray JIPC-1.0.jar as described in the JIPC section. Besides, you should be able to use the scripts available in the bin directory (In our example~/jipc_ws/DGP/bin) to execute the JIPC central server and the RoboGraph dispatch and GUI:- jcentral that is the central node that controls all connections:
.../RG/bin$ ./jcentral
- RoboGraph dispatch to run tasks (petri nets):
.../RG/bin$ ./jipcRGDispatch -w ~/rg_jipc_ws/DGP/ -m ~/rg_jipc_ws/DGP/bin/modulesJIPC
- RobGraph GUI to edit tasks and monitor their execution.
.../RG/bin$ ./jipcRGGui -w ~/rg_jipc_ws/DGP/ -m ~/rg_jipc_ws/DGP/bin/modulesJIPC
The idea is to program first the modules that control our system and connect them to JIPC using the JIPC-1.0.jar library. Then, program the tasks that coordinate the work of the different modules using RoboGraph GUI. Finally, run all the system:- jcentral
.../RG/bin$ ./jcentral
- modules that need to be connected to JIPC
.../RG/bin$ [ that depends on the application modules]
- RoboGraph dispatch to run tasks (petri nets):
.../RG/bin$ ./jipcRGDispatch -w ~/rg_jipc_ws/DGP/ -m ~/rg_jipc_ws/DGP/bin/modulesJIPC
- RobGraph GUI to monitor the execution (optional).
.../RG/bin$ ./jipcRGGui -w ~/rg_jipc_ws/DGP/ -m ~/rg_jipc_ws/DGP/bin/modulesJIPC
- jcentral that is the central node that controls all connections:
- Example
A wide variety of messages are included but more messages can be added. The source code of the messages provided can be a reference to create new messages. The packages where those messages are provided must be included in the modules file (see DGP/bin/modulesJIPC).
The tasks (petri nets) can be edited and executed in a similar way as described in the videos for the DGP section.