1.3.4 Linux (Ubuntu) Environment (64-bit)

Note

  • Supported Ubuntu Versions: 18.04, 20.04, 22.04, 24.04

  • Supported Architectures: x86_64, ARM64

  • Simulator: RViz (ROS2 visualization tool)

  • Ensure ROS2 (Humble or compatible) and RViz2 are properly installed.

A. Create a workspace

mkdir -p ~/api_ws/src
cd ~/api_ws/src

B. Clone the DRFL repository

Clone the official DRFL repository and move into the example directory.

git clone https://github.com/doosan-robotics/API-DRFL.git
cd API-DRFL/example/Linux_64

C. Install required dependencies

Before building, install the required Poco development libraries.

sudo apt update
sudo apt-get install libpoco-dev

D. Launch Simulator (Virtual Mode)

Before building and running the example, you must start the RViz simulator using Docker and ROS2.

Open a new terminal and launch the Doosan RViz simulator in virtual mode. Keep this terminal running, it will act as your robot simulator.

cd ~/ros2_ws
ros2 launch dsr_bringup2 dsr_bringup2_rviz.launch.py mode:=virtual host:=127.0.0.1 port:=12345 model:=m0609

Explanation:

  • mode:=virtual : Runs in virtual (simulation) mode

  • host:=127.0.0.1 : Localhost connection

  • port:=12345 : Default controller/emulator port

  • model:=m0609 : Selects robot model (e.g., M0609)

Note

  • If you are connecting to a real robot, replace the parameters accordingly:

    ros2 launch dsr_bringup2 dsr_bringup2_rviz.launch.py mode:=real host:=192.168.137.100 port:=12345 model:=m0609
    
    • Make sure your robot controller and PC are in the same network subnet.

    • The robot must be in Auto (Remote) mode to accept API commands.

Tip

Before running the build script, confirm that Docker and the virtual port (12345) are active:

sudo docker ps
nc -vz 127.0.0.1 12345
  • If the above commands show an active container and successful connection, the simulator is running correctly and ready for API communication.

  • The build script should be executed after launching the RViz simulator, as it depends on the active socket port (12345).

E. Build the project

Now return to your API workspace terminal and build the DRFL example.

./API_DRFL_BUILD.sh

This script automatically:

  • Detects your Ubuntu version and architecture

  • Scans all .cpp files in the directory

  • Allows you to select which file to build (1, 2, 3…)

  • Handles library linking automatically

  • Creates executables in the out/ directory

  • Optionally runs the built executable

Tip

If you encounter a connection failure after building, double-check:
1. Your IP address in the source file (must match the robot or emulator).
2. That the controller or DART emulator is running on port 12345/TCP.
3. Network access is not blocked by firewall or Docker isolation.

Clean Script

To remove build artifacts and executables:

./API_DRFL_CLEAN.sh

This script:

  • Removes all .o object files

  • Removes the out/ directory and all executables

  • Asks for confirmation before cleaning

Tip

The automated build scripts are the fastest and safest way to compile DRFL examples, especially if you are switching between Ubuntu versions or CPU architectures.


F. Manual build (alternative)

If you prefer to compile manually, use g++ according to your Ubuntu version and architecture.

Ubuntu supports versions: 18.04, 20.04, 22.04 and 24.04.

x86 (Ubuntu 18.04)

g++ -c main.cpp
g++ -o drfl_test main.o ../../library/Linux/64bits/amd64/18.04/libDRFL.a \
    /usr/lib/libPocoFoundation.so /usr/lib/libPocoNet.so

x86 (Ubuntu 20.04 / 22.04 / 24.04)

g++ -c main.cpp
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 (Ubuntu 18.04)

g++ -c main.cpp
g++ -o drfl_test main.o ../../library/Linux/64bits/arm64/18.04/libDRFL.a \
    /usr/lib/libPocoFoundation.so /usr/lib/libPocoNet.so

ARM64 (Ubuntu 20.04 / 22.04 / 24.04)

g++ -c main.cpp
g++ -o drfl_test main.o ../../library/Linux/64bits/arm64/{your_ubuntu_version}/libDRFL.a \
    /usr/lib/aarch64-linux-gnu/libPocoFoundation.so \
    /usr/lib/aarch64-linux-gnu/libPocoNet.so

Note

Although library versions traditionally differed across Ubuntu releases, Ubuntu 24.04 now uses the same .80 version as Ubuntu 22.04 for compatibility.