Copyright © 2025 Doosan Robotics Inc
This document outlines the procedure for building the DRFL on Windows and Linux platforms. For detailed instructions, please refer to the official manual linked below:
This code uses a preprocessor macro (DRCF_VERSION
) to ensure compatibility with different versions of the Doosan Robot Controller Framework (DRCF).
To specify your DRCF version:
- For DRCF v2: Set
DRCF_VERSION
to2
. - For DRCF v3: Set
DRCF_VERSION
to3
.
Example:
#ifndef DRCF_VERSION
#define DRCF_VERSION 3 // Set to 3 for DRCF v3
#endif
Note: DRFL is designed to operate on x86 architectures. Arm64 architecture is supported exclusively for Linux platforms.
Please ensure your environment meets the following conditions:
- Library Composition: Refer to the structure of the library via this link.
- Recommended Specifications: Review the recommended operational specifications here.
The library files (.a, .dll, etc.) included in this repository are sample versions intended for demonstration purposes. To ensure you are using the latest release of DRFL, please download the current version from the following link:
To build the Windows example, utilize the Visual Studio 2015 solution file provided at the link below:
Before building, install the required Poco development libraries:
sudo apt-get install libpoco-dev
For easier building and cleaning, you can use the provided automated scripts:
Build Script Usage:
./API_DRFL_BUILD.sh
- Automatically detects Ubuntu version and architecture
- Scans all .cpp files in
example/Linux_64
directory - Allows you to select which file to build (1, 2, 3...)
- Handles library linking automatically
- Creates executables in
out/
directory - Optionally runs the built executable
Clean Script Usage:
./API_DRFL_CLEAN.sh
- Removes all .o object files
- Removes the
out/
directory and all executables - Asks for confirmation before cleaning
Ubuntu supports versions : 18.04, 20.04 and 22.04.
-
Navigate to the example directory and compile using g++:
g++ -c main.cpp
-
Once main.o is created successfully, run the following command to generate the executable:
x86(18.04)
g++ -o drfl_test main.o ../../library/Linux/64bits/amd64/{your_ubuntu_version}/libDRFL.a /usr/lib/libPocoFoundation.so /usr/lib/libPocoNet.so
x86(20.04 or 22.04)
g++ -o drfl_test main.o ../../library/Linux/64bits/amd64/{your_ubuntu_version}/libDRFL.a /usr/lib/x86_64-linux-gnu/libPocoFoundation.so /usr/lib/x86_64-linux-gnu/libPocoNet.so
Arm64(18.04)
g++ -o drfl_test main.o ../../library/Linux/64bits/arn64/{your_ubuntu_version}/libDRFL.a /usr/lib/libPocoFoundation.so /usr/lib/libPocoNet.so
Arm64(20.04 or 22.04)
g++ -o drfl_test main.o ../../library/Linux/64bits/arn64/{your_ubuntu_version}/libDRFL.a /usr/lib/aarch64-linux-gnu/libPocoFoundation.so /usr/lib/aarch64-linux-gnu/libPocoNet.so
-
Verify the build and, upon completion, proceed with testing the connection to the actual controller.
The 6_realtime_control_sample.cpp
provides a streamlined interface for real-time robot control:
- 's': Start complete realtime control sequence (combines initialization, configuration, and execution)
- 'e': Stop and disconnect realtime control
- 'q': Quit program
- Compile and run the realtime example
- Wait for robot connection and control authority
- Press 's' to start realtime control - this will:
- Connect RT control
- Configure RT control output (v1.0, 1ms period)
- Set autonomous mode and start RT control
- Create high-priority realtime thread for trajectory execution
- Press 'e' to stop realtime control
- Press 'q' to exit
- Automated trajectory planning between two joint positions
- 1ms control loop with real-time thread priority
- Continuous alternating motion between start and end positions
- Real-time monitoring and logging capabilities