章節目錄
TESOLLO Delto DG-3F-B 三指靈巧手使用入門 #
本文是簡易上手教學,詳細操作請參考原廠手冊。
產品內容 #
- DG-3F-B 靈巧手本體
- 連接框架 ( ISO 9409-1-50-4-M6 )
- USB ( 手冊、軟體、運動學文件 )
- 3M EtherNET communcation cable
- 電源線 ( 一端為正負裸線 )

如何連接 #
- EtherNet ( TCP/IP ) 或 USB to RS485 converter
- IP Address : 169.254.186.72
- Subnet mask : 255.255.255.0
- Default Gatewat : 0.0.0.0
- Port Number : 502
- 24V power supply ( 至少 5A 或以上 )
- 使用網路連接建議將裝置網路設定成靜態 IP,並且確認是否可以連線到 DELTO DG-3F-B
- 網路設定使用 IPv4 設定成靜態 IP
- Windows

- Ubuntu

- 確認 IP 與 連線狀況
- Windows
- 確認 IP 與 連線狀況
ipconfig
ping 169.254.186.72
- Ubuntu
ifconfig
ping 169.254.186.72
控制模式 #
Operator Mode 操作模式 #
使用內建控制器負責關節協調與動作規劃
- 特性:指令清晰、參數範圍受控、狀態讀取與保護處理完善
- 優點:易上手、可靠性高、適合一般應用
- 缺點:細節可調性有限、無法做出進階動作
Developer Mode 開發模式 #
不使用內建控制器,直接對每個關節進行控制,需自行開發程式邏輯或設計控制器
- 特性:可自訂軌跡、馬達控制模式
- 優點:最大自由度、擴充性佳、即時回饋、適合研究開發
- 風險:無保護邏輯程式(自行開發)、馬達控制超過範圍可能導致過載,或是硬體損壞
開發環境 #
DGManager #
提供圖形化介面,方面快速操作與即時監控靈巧手狀態,適合教育訓練或硬體測試
DGSDK 開發套件(C++) #
使用 DGSDK 控制靈巧手,可自訂動作或讀取回饋,適合自動化系統開發
ROS2 #
整合靈巧手與 ROS2,支援軌跡規劃與協作執行,適合進行機器人協作或系統整合開發
- Tesollo-Delto Github:https://github.com/Tesollo-Delto
- 版本 v2.3 以上 DG-3F-B 通訊協定不同,請改用 DELTO_M_ROS2/dg_sdk_ros2_bridge
DGSDK 開發套件 #
由 Tesollo 提供的 C++ 開發套件,用來程式化控制夾爪、讀取回饋,適合自動化開發者使用,更多細項請參閱手冊
連接 #
SetGripperSystem #
夾爪初始化函式,必須優先執行,若未執行,無法控制夾爪
// For Operator Mode Modbus TCP connection
GripperSystemSetting setting;
setting.communicationMode = COMMUNICATION_MODE_ETHERNET;
setting.controlMode = CONTROL_MODE_OPERATOR;
char ip[MAX_GRIPPER_IP_ADDRESS_SIZE] = "169.254.186.72";
memcpy(setting.ip, ip, MAX_GRIPPER_IP_ADDRESS_SIZE);
setting.port = 502;
setting.slaveID = 1;
DG_RESULT result = SetGripperSystem(setting);
SetGripperOption #
設定夾爪動作細項函式,必須執行,若未執行,無法控制夾爪
// Setting up the DG-3F-B
float offset[MAX_JOINT_COUNT] = {0};
float inpose[MAX_JOINT_COUNT] = {0};
GripperSetting gs;
offset[0] = 2;
inpose[2] = 3;
gs.model = DG_MODEL_DG_3F_B;
memcpy(gs.jointOffset, offset, sizeof(offset));
memcpy(gs.jointInpose, offset, sizeof(inpose));
gs.movingInpose = 0.3;
DG_RESULT result = SetGripperOption(gs);
ConnectToGripper #
連接夾爪
DG_RESULT result = ConnectToGripper();
SystemStart #
執行系統,執行後才可開始控制夾爪
DG_RESULT result = SystemStart();
動作設定 #
SetGraspData #
設定抓握參數
int graspMode = DG_GRASP_MODE_3F_3FINGER;
float graspForce = 3.0;
int graspOption = GRASP_OPTION_NONE;
int smoothGraspping = 1;
DG_RESULT result = SetGraspData(graspMode, graspForce, graspOption, smothGraspping);
SetMotionTimeAllEqual #
設定所有關節移動時間
int motionTime = 1500;
DG_RESULT result = SetMotionTimeAllEqual(motionTime);
LoadRecipePoseData #
讀取姿勢表中的 pose 控制夾爪
int recipeNumber = 1 // recipe number
DG_RESULT result = LoadRecipePoseData(recipeNumber);
StartGraspMotion #
執行抓握動作
int isGrasp = 1;
DG_RESULT result = StartGraspMotion(isGrasp);
MoveJoint #
控制單一關節
float targetJoint = 20.9; // degrees
int jointNumber = 1;
DG_RESULT result = MoveJoint(targetJoint, jointNumber);
MoveJointFinger #
控制單一手指
float targetJoint[MAX_FINGER_JOINT_COUNT] = {0};
targetJoint[0] = 0;
targetJoint[1] = 0;
targetJoint[2] = 60; // degrees
targetJoint[3] = 60; // degrees
int fingerNumber = 1;
DG_RESULT result = MoveJointFinger(targetJoint, fingerNumber);
MoveJointAll #
控制全部關節
float targetJoint[MAX_JOINT_COUNT] = {0};
targetJoint[0] = targetJoint[4] = targetJoint[8] = 0;
targetJoint[1] = targetJoint[5] = targetJoint[9] = 0;
targetJoint[2] = targetJoint[6] = targetJoint[10] = 60;
targetJoint[3] = targetJoint[7] = targetJoint[11] = 60;
DG_RESULT result = MoveJointAll(targetJoint);
