Skip to content

Online Programming Demo

1. Project introduction

This project demonstrates how to read online programming files from the demo folder, send the files to the robotic arm for execution, and monitor information such as the running state, number of lines, and loop count in real time. It is built with CMake and utilizes the C language development package for the robotic arm provided by RealMan.

2. Code structure

RMDemo_OnlineProgram
├── build              # Output directory generated by CMake build (Makefile, build file, etc.)
├── data
│   ├── trajectory.txt  # Trajectory file saved during drag teaching (generated during execution)
│   └── project.txt     # Online programming file generated from the trajectory file saved during drag teaching (generated during execution)
├── include              # Custom header file storage directory
├── Robotic_Arm          RealMan robotic arm secondary development package
│   ├── include
│   │   ├── rm_define.h  # Header file of the robotic arm secondary development package, containing defined data types and structures
│   │   └── rm_interface.h # Header file of the robotic arm secondary development package, declaring all operation interfaces of the robotic arm口
│   ├── lib
│   │   ├── api_c.dll    # API library for Windows 64bit
│   │   ├── api_c.lib    # API library for Windows 64bit
│   │   └── libapi_c.so  # API library for Linux x86
├── src
│   ├── main.c           # Main function
├── CMakeLists.txt       # Top-level CMake configuration file of the project
├── readme.md            # Project description document
├── run.bat              # Windows quick run script
└── run.sh               # linux quick run script

3. Project download

Download RM_API2 locally via the link: development package download. Then, navigate to the RM_API2\Demo\RMDemo_C directory, where you will find RMDemo_OnlineProgram.

4. Environment configuration

Required environment and dependencies for running in Windows and Linux environments:

ItemLinuxWindows
System architecturex86 architecture-
CompilerGCC 7.5 or higherMSVC2015 or higher 64bit
CMake version3.10 or higher3.10 or higher
Specific dependencyRMAPI Linux version library (located in the Robotic_Arm/lib directory)RMAPI Windows version library (located in the Robotic_Arm/libdirectory)

Linux configuration

1. Compiler (GCC) In most Linux distributions, GCC is installed by default, but the version may not be the latest. If a specific version of GCC (such as 7.5 or higher) is required, it can be installed via the package manager. For example, on Ubuntu, you can use the following commands to install or update GCC:

bash
# Check GCC version
gcc --version

sudo apt update
sudo apt install gcc-7 g++-7

Note: If the GCC version installed by default on the system meets or exceeds the required version, no additional installation is necessary.

2. CMake CMake can also be installed through the package manager in most Linux distributions. For example, on Ubuntu:

bash
sudo apt update
sudo apt install cmake

# Check CMake version
cmake --version

Windows configuration

  • Compiler (MSVC2015 or higher): The MSVC (Microsoft Visual C++) compiler is typically installed with Visual Studio. You can install it by following these steps:

    1. Visit the Visual Studio official website to download and install Visual Studio.
    2. During installation, select the "Desktop development with C++" workload, which will include the MSVC compiler.
    3. Select additional components as needed, such as CMake (if not already installed).
    4. After installation, open the Visual Studio command prompt (available in the start menu) and enter the cl command to check if the MSVC compiler is installed successfully.
  • CMake: If CMake was not included during the Visual Studio installation, you can download and install CMake separately.

    1. Visit the CMake official website to download the installer for Windows.
    2. Run the installer and follow the on-screen instructions to complete the installation.
    3. After installation, add the CMake bin directory to the system's PATH environment variable (this is typically asked during installation).
    4. Open the command prompt or PowerShell and enter cmake --version to check if CMake has been installed successfully.

5. User guide

5.1. Quick run

Follow these steps to quickly run the code:

  1. Configuration of the IP address of the robotic arm: Open the main.c file and modify the parameters of the robot_ip_address in the main function to the current IP address of the robotic arm. The default IP address is "192.168.1.18".

    C
    const char *robot_ip_address = "192.168.1.18";
    
    int robot_port = 8080;
    rm_robot_handle *robot_handle = rm_create_robot_arm(robot_ip_address, robot_port);
  2. Running via linux command line: Navigate to the RMDemo_OnlineProgram directory in the terminal, and enter the following command to run the C program:

    bash
    chmod +x run.sh
    ./run.sh

    The running result is as follows:

    bash
    API Version: 1.0.0.
    Robot handle created successfully: 1
    Drag teaching started
    Drag teaching has started, complete the drag operation and press Enter to continue...
    
    Please enter a Save ID for this teaching session: 50
    Save ID { 50 } for this teaching session saved to the controller
    Drag teaching stopped
    Trajectory saved successfully, total number of points: 3
    Project sent and run successfully
    Program running state: 0
    Program has ended
    Program running state: 0
    Program has ended
    Program running state: 0
    Program has ended
  3. Running on Windows: double-click the run.bat script to run The running result is as follows:

bash
Run...
API Version: 1.0.0.
Robot handle created successfully: 1
Drag teaching started
Drag teaching has started, complete the drag operation and press Enter to continue...

Please enter a Save ID for this teaching session: 1
Save ID { 1 } for this teaching session saved to the controller
Drag teaching stopped
Trajectory saved successfully, total number of points: 1805
Project sent and run successfully
Program running state: 1
Program running state: 1
Program running state: 1
Program running state: 1
Program running state: 1
Reached maximum query attempts, exiting
Program running state: 2
Program running state: 2
Program running state: 2
Program running state: 2
Program running state: 2
Reached maximum query attempts, exiting
Program running state: 1
Program running state: 1
Program running state: 1
Program running state: 1
Program running state: 1
Reached maximum query attempts, exiting
Press any key to continue...

5.2. Code description

The following are the main functions of the main.c:

  • Connect the robotic arm

    C
    rm_robot_handle *robot_handle = rm_create_robot_arm(robot_ip_address, robot_port);

    Connect the robotic arm to the specified IP address and port.

  • Get the API version

    C
    char *api_version = rm_api_version();
    printf("API Version: %s.\n", api_version);

    Get and display the API version.

  • Drag for teaching Initiate the drag teaching mode, with parameter 1 indicating that the trajectory starts to be recorded.

    C
    start_drag_teach(robot_handle, 1);
  • Save the trajectory Save the recorded trajectory to a specified file.

    C
    int lines;
    result = rm_save_trajectory(robot_handle, TRAJECTORY_FILE_PATH, &lines);
  • Concatenate online programming files Add specific lines to the trajectory file to form an online programming file.

    C
    add_lines_to_file(robot_handle, file_path_test, lines);
  • Send online programming files Send the online programming file to the robotic arm.

    C
    send_project(robot_handle, file_path_test, 20, 0, 16, 0, 0);
  • Query the online programming running state Query the running state of the online programming, with an interval of 1 second and a maximum of 5 query attempts.

    C
    get_program_run_state(robot_handle, 1, 5);
  • Pause the robotic arm Pause the robotic arm's running.

    C
    set_arm_pause(robot_handle);
  • Resume the robot arm's running Resume the robot arm's running.

    C
    set_arm_continue(robot_handle);
  • Disconnect from the robotic arm Disconnect from the robotic arm.

    C
    disconnect_robot_arm(robot_handle);

6. License information

  • This project is subject to the MIT license.