View Categories

TESOLLO Delto DG-3F-B 三指靈巧手使用入門

TESOLLO Delto DG-3F-B 三指靈巧手使用入門 #

本文是簡易上手教學,詳細操作請參考原廠手冊。

產品內容 #

  • DG-3F-B 靈巧手本體
  • 連接框架 ( ISO 9409-1-50-4-M6 )
  • USB ( 手冊、軟體、運動學文件 )
  • 3M EtherNET communcation cable
  • 電源線 ( 一端為正負裸線 )
TESOLLO DG-3F 三指爪手

如何連接 #

  • 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
DG 3F B 01
    • Ubuntu
DG 3F B 02
    • 確認 IP 與 連線狀況
      • Windows
				
					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);