Tools and Libraries for Java Developers using "Canonical Robot Command Language" (CRCL)
The language called "Canonical Robot Command Language" (CRCL) provides generic command and status definitions that implement the functionality of typical industrial robots without being specific either to the language of a plan that is being executed or to the language used by a robot controller that executes CRCL commands. It can be used with offline planners that create output to be stored in CRCL files or online where CRCL is communicated in both directions via TCP. CRCL commands and status could also be exchanged over TCP between an operator interface and a robot controller or proxy for a robot controller.
The programming language independent documentation and XML Schema files for validation are stored in the main crcl repository: https://github.com/ros-industrial/crcl
This repository contains Java libraries and tools related to CRCL.
To build one needs:
- JDK 1.8+ (https://adoptopenjdk.net/) and
- maven 3.5.0+ (https://maven.apache.org/download.cgi) (3.0.5 is sufficient for jdk-8 but 3.5.0 is needed for jdk-9+).
Use the command:
mvn package
OR
- An IDE bundled with both maven and a JDK such as Netbeans, IntelliJ, or Eclipse.
- Netbeans will open a maven project with File -> Open Project just like Netbeans generated Ant projects.
- IntelliJ and Eclipse both have options to import maven projects.
The subdirectories include:
- crcl4java-base -- xjc autogenerated JAXB annotated classes corresponding to the CRCL schemas.
- crcl4java-utils -- class for sending and receiving CRCL classes over a TCP Socket, Pose math conversions, etc
- crcl4java-ui -- SWING based desktop graphical user interfaces, robot simulation server and operator interface client
- crcl4java-exi -- EXI (Efficient XML Interface) wrappers for CRCL.
- crcl4java-commons-math -- Utility class for converting CRCL types to appropriate Apache commons-math types.
- crcl4java-vaadin-webapp -- a client user interface accessed through a web-browser
- crcl4java-fanuc -- version of the CRCL Server which connects to a Funuc using Fanuc's PC Developers Kit.
The graphical user interface can be launched with the command:
For linux:
./run.sh
For Windows:
run.bat
To Run the web-server for the browser interface:
NOTE: If you have another server using port 8080, it will need to be stopped first.
For linux:
./runWebApp.sh
This will start a web-server that can be accessed at
http://localhost:8080/crcl4java-vaadin-webapp/
A native installer can optionally be built for the desktop user interface. Before building on Windows install, Inno Setup from http://www.jrsoftware.org/isdl.php and Wix Toolset from http://wixtoolset.org/.
To build the installer, build with the profile native_installer selected in the project configuration drop down menu in Netbeans or use the following command:
cd crcl4java-ui
mvn install -P native_installer
Building the installer requires Inno Setup from http://www.jrsoftware.org/isdl.php and Wix Toolset from http://wixtoolset.org/.
On window the installer file produced is:
crcl4java-ui/target/bundles/crcl4java-ui-1.0.exe
Running the installer will put the program in the Windows start menu in the "Uknown" folder.
It can be uninstalled from the control panel. The name is crcl4java-ui and publisher is "Unknown".
On Ubuntu, this installer file produced is:
crcl4java-ui/target/bundles/crcl4java-ui-1.0.deb
which can be installed with:
sudo dpkg -i crcl4java-ui/target/bundles/crcl4java-ui-1.0.deb
This can then be found in Ubuntu menus or run with the command.
/opt/crcl4java-ui/crcl4java-ui
uninstall with
sudo apt-get remove crcl4java-ui
Links to javadoc generated documentation: http://wshackle.github.io/crcl4java/
Binaries can be downloaded and installed via their maven coordinates:
<dependencies>
<dependency>
<groupId>com.github.wshackle</groupId>
<artifactId>crcl4java-base</artifactId>
<version>1.5-1</version>
</dependency>
<dependency>
<groupId>com.github.wshackle</groupId>
<artifactId>crcl4java-utils</artifactId>
<version>1.5-1</version>
</dependency>
<dependency>
<groupId>com.github.wshackle</groupId>
<artifactId>crcl4java-ui</artifactId>
<version>1.5-1</version>
</dependency>
</dependencies>
or with these direct links:
http://central.maven.org/maven2/com/github/wshackle/crcl4java-ui/1.5-1/crcl4java-ui-1.5-1.jar
http://central.maven.org/maven2/com/github/wshackle/crcl4java-base/1.5-1/crcl4java-base-1.5-1.jar
http://central.maven.org/maven2/com/github/wshackle/crcl4java-utils/1.5-1/crcl4java-utils-1.5-1.jar