This project is a comprehensive robot control system for cable-driven parallel robots (CDPRs) with integrated gripper and rail control. It supports calibration, manual operation, automated brick placement, trajectory execution, and demo modes. The system is designed for use with a Windows environment and leverages Visual Studio Code for development.
Note: The
ver_2folder contains the main source code and resources for the CDPR (Cable-Driven Parallel Robot) control program.
Note: In addition,ver_2includes Python programs for calibration, such asdxfextract.py, which is used with a Leica laser measurement device to acquire the relative location of attachment points at the poles and the end effector. This tool extracts the end effector location relative to the pole attachment points using inverse kinematics (IK).
- Calibration Mode: Set cable torques, update robot position/configuration, control individual motors, and clear alerts.
- Operation Mode: Control robot position, run brick placement routines, execute point-to-point and trajectory files, save/load positions, and run demo sequences.
- Gripper & Rail Control: Full menu-driven control for gripper and rail motors.
- Logging: All operations are logged for traceability.
- File-based Configuration: Robot configuration and last position are loaded from JSON and TXT files.
- Network Integration: Can request position data from a Raspberry Pi via UDP.
- Windows OS
- Visual Studio 20xx Developer Command Prompt
- Visual Studio Code
- Teknic ClearPath Driver: https://teknic.com/downloads/
- Required hardware connected and powered
- Open the Visual Studio Developer Command Prompt.
- Change directory to the
ver_2folder:cd ver_2 - Build the project:
Terminal -> Run Build Task C/C++: cl.exe build active files.
- Execute the program:
./bin/Main.exe
On startup, the program loads configuration from RobotConfig.json and attempts to recover the last position from lastPos.txt. You will be presented with a menu to select Calibration or Operation mode.
For setup, diagnostics, and maintenance. Menu options:
- Set Cables Torque
Adjust the tension of all cables for safe operation. - Request current cable motor torque readings
Display the measured torque for each cable motor. - Control Cable Motor
Manually operate individual cable motors for diagnostics or setup. - Update Robot Pos
Load robot position from a file and update the system state. - Reset EE Rotation to Zero
Set the end effector’s rotation angles to zero. - Control Linear Rail Motor
Manually operate rail motors for calibration or troubleshooting. - Control Gripper
Open, close, rotate, release, or calibrate the gripper. - Update Robot Config
Load a new robot configuration from a JSON file. - Print Robot Status
Show current end effector position, rail offsets, and cable lengths. - Clear Exception
Reset any error or alert states in the cable motors. - Robot Control Mode
Enter the main robot control menu for position and gripper operations. - Request Current Position from RPi
Query the robot’s position from a Raspberry Pi over UDP. q. Finish Calibration
Exit calibration mode and return to the main menu.
For running robot tasks, brick placement, and demos. Menu options:
- Robot Control
Access robot position control, move to home/pre-pickup, gripper and rail control. - Read Brick Positions File
Load a CSV file with brick positions and run automated pick-and-place routines. - Read Point-to-Point Path File
Execute a sequence of robot movements from a CSV file of points. - Read Trajectory File
Run a pre-defined trajectory from a CSV file. - Request current cable motor torque readings
Display the measured torque for each cable motor. - Save Current EE Pos to File
Save the current end effector position to a file for later recall. - Print Robot Status
Show current end effector position, rail offsets, and cable lengths. - Demo Mode
Run a demonstration sequence using a sample brick position file. - Auto Aim Mode Read cameraOffset in RobotConfig.json, Move to the nearest brick, pick up the brick, and move to the other nearest brick. Place a brick at the right/left/top of the brick.
Follow on-screen prompts to interact with the robot.
ver_2/src/Main.cpp: Main program logic and menu system.ver_2/include/: Header files for robot, logger, trajectory generator, and utilities.ver_2/tools/json.hpp: JSON parsing library.ver_2/bricks.csv,ver_2/demoab1.csv,ver_2/traj.csv: Example data files for robot tasks.ver_2/log/robot.log: Operation log file.ver_2/lastPos.txt: Stores last known robot position.ver_2/RobotConfig.json: Robot configuration file.ver_2/dxfextract.py: Python calibration tool for Leica laser measurements.arduino/: Contains all code needed for the end effector, including ArUco marker calibration and gripper control.- Note:
RobotConfig.jsonand example CSV files for brick positions are located inside thever_2folder.
- Eigen: Linear algebra library.
- DynamixelSDK: Motor control SDK.
- sFoundation20: Additional hardware support.
- TcAdsDll: TwinCAT ADS communication.
- Ensure all hardware is connected before running.
- Log files and position files are automatically managed.
- Demo mode uses
demoab1.csvfor brick placement demonstration.
See individual dependency folders for license information.
For support, please contact the project maintainer.