4.4 程序信息读写
4.4.1 获取指定程序中指定位姿点值
| 方法名 | ProgramPoses.Read(string programName , int index , FileType ft = FileType.UserProgram) |
|---|---|
| 描述 | 读取指定程序中指定序号的位姿点数据 |
| 请求参数 | programName : string 指定程序名称 index : int 指定位姿点的序号 ft : FileType 文件类型 |
| 返回值 | ProgramPose 程序中的机器人位姿数据 StatusCode: 读取操作执行结果 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.ProgramPoses;
using Agilebot.IR.Types;
public class ReadProgramPose
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");
if (code != StatusCode.OK)
{
return code;
}
try
{
// [ZH] 设置程序名称和位姿点索引
// [EN] Set program name and pose index
string progName = "test_prog";
int index = 1;
// [ZH] 读取指定程序中指定位姿点值
// [EN] Read specified pose value in specified program
ProgramPose pose;
(pose, code) = controller.ProgramPoses.Read(progName, index);
if (code == StatusCode.OK)
{
Console.WriteLine("读取程序位姿点成功/Read Program Pose Success");
Console.WriteLine($"位姿信息/Pose Info: {pose}");
}
else
{
Console.WriteLine($"读取程序位姿点失败/Read Program Pose Failed: {code.GetDescription()}");
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.4.2 修改指定程序中指定位姿点值
| 方法名 | ProgramPoses.Write(string programName , int index , ProgramPose value , FileType ft = FileType.UserProgram) |
|---|---|
| 描述 | 修改指定程序中指定序号的位姿点数据 |
| 请求参数 | programName : string 指定程序名称 index : int 指定位姿点的序号 value : ProgramPose 程序中的机器人位姿数据 ft : FileType 文件类型 |
| 返回值 | StatusCode: 写入操作执行结果 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.ProgramPoses;
using Agilebot.IR.Types;
public class WriteProgramPose
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");
if (code != StatusCode.OK)
{
return code;
}
try
{
// [ZH] 设置程序名称和位姿点索引
// [EN] Set program name and pose index
string progName = "test_prog";
int index = 2;
// [ZH] 生成随机位姿点
// [EN] Generate random pose
ProgramPose rndPose = ProgramPose.GenerateRandomPose(index);
// [ZH] 修改指定程序中指定位姿点值
// [EN] Write specified pose value in specified program
code = controller.ProgramPoses.Write(progName, index, rndPose);
if (code == StatusCode.OK)
{
Console.WriteLine("写入程序位姿点成功/Write Program Pose Success");
}
else
{
Console.WriteLine($"写入程序位姿点失败/Write Program Pose Failed: {code.GetDescription()}");
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.4.3 添加指定程序位姿点
| 方法名 | ProgramPoses.Add(string programName , int index , ProgramPose value , FileType ft = FileType.UserProgram) |
|---|---|
| 描述 | 在指定程序中指定序号位置添加位姿点数据 |
| 请求参数 | programName : string 指定程序名称 index : int 指定位姿点的序号 value : ProgramPose 程序中的机器人位姿数据 ft : FileType 文件类型 |
| 返回值 | StatusCode: 添加操作执行结果 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.ProgramPoses;
using Agilebot.IR.Types;
public class AddProgramPose
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");
if (code != StatusCode.OK)
{
return code;
}
try
{
// [ZH] 设置程序名称和位姿点索引
// [EN] Set program name and pose index
string progName = "test_prog";
int index = 3;
// [ZH] 生成随机位姿点
// [EN] Generate random pose
ProgramPose rndPose = ProgramPose.GenerateRandomPose(index);
// [ZH] 添加指定程序中指定位姿点
// [EN] Add specified pose in specified program
code = controller.ProgramPoses.Add(progName, index, rndPose);
if (code == StatusCode.OK)
{
Console.WriteLine("添加程序位姿点成功/Add Program Pose Success");
}
else
{
Console.WriteLine($"添加程序位姿点失败/Add Program Pose Failed: {code.GetDescription()}");
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.4.4 删除指定程序中指定序号的位姿点
| 方法名 | ProgramPoses.Delete(string programName , int index , FileType ft = FileType.UserProgram) |
|---|---|
| 描述 | 删除指定程序中指定序号的位姿点 |
| 请求参数 | programName : string 指定程序名称 index : int 指定位姿点的序号 ft : FileType 文件类型 |
| 返回值 | StatusCode: 删除操作执行结果 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.ProgramPoses;
using Agilebot.IR.Types;
public class DeleteProgramPose
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");
if (code != StatusCode.OK)
{
return code;
}
try
{
// [ZH] 设置程序名称和位姿点索引
// [EN] Set program name and pose index
string progName = "test_prog";
int index = 3;
// [ZH] 删除指定程序中指定位姿点
// [EN] Delete specified pose in specified program
code = controller.ProgramPoses.Delete(progName, index);
if (code == StatusCode.OK)
{
Console.WriteLine("删除程序位姿点成功/Delete Program Pose Success");
}
else
{
Console.WriteLine($"删除程序位姿点失败/Delete Program Pose Failed: {code.GetDescription()}");
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.4.5 获取指定程序中所有的位姿点
| 方法名 | ProgramPoses.ReadAllPoses(string programName , FileType ft = FileType.UserProgram) |
|---|---|
| 描述 | 获取指定程序中所有的位姿点信息 |
| 请求参数 | programName : string 指定程序名称 ft : FileType 文件类型 |
| 返回值 | List<ProgramPose>: 位姿点数据列表 StatusCode: 获取操作执行结果 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.ProgramPoses;
using Agilebot.IR.Types;
public class ReadAllProgramPoses
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");
if (code != StatusCode.OK)
{
return code;
}
try
{
// [ZH] 设置程序名称
// [EN] Set program name
string progName = "test_prog";
// [ZH] 读取指定程序中所有位姿点
// [EN] Read all poses in specified program
List<ProgramPose> poses;
(poses, code) = controller.ProgramPoses.ReadAllPoses(progName);
if (code == StatusCode.OK)
{
Console.WriteLine("读取所有程序位姿点成功/Read All Program Poses Success");
Console.WriteLine($"位姿点数量/Number of poses: {poses.Count}");
for (int i = 0; i < poses.Count; i++)
{
Console.WriteLine($"位姿点 {i + 1}/Pose {i + 1}: {poses[i]}");
}
}
else
{
Console.WriteLine($"读取所有程序位姿点失败/Read All Program Poses Failed: {code.GetDescription()}");
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}4.4.6 机器人程序位姿点类型转换
| 方法名 | ProgramPoses.ConvertPose(ProgramPose pose , PoseType toType ) |
|---|---|
| 描述 | 将程序中机器人位姿点在关节坐标和笛卡尔空间坐标之间转换 |
| 请求参数 | pose : ProgramPose 程序中的机器人位姿数据 toType : PoseType 希望转换后的坐标类型 |
| 返回值 | ProgramPose: 转换后的位姿数据 StatusCode: 转换操作执行结果 |
| 兼容的机器人软件版本 | 协作 (Copper): v7.5.0.0+ 工业 (Bronze): v7.5.0.0+ |
示例代码
cs
using Agilebot.IR;
using Agilebot.IR.ProgramPoses;
using Agilebot.IR.Types;
public class ConvertProgramPose
{
public static StatusCode Run(string controllerIP, bool useLocalProxy = true)
{
// [ZH] 初始化捷勃特机器人
// [EN] Initialize the Agilebot robot
Arm controller = new Arm(controllerIP, useLocalProxy);
// [ZH] 连接捷勃特机器人
// [EN] Connect to the Agilebot robot
StatusCode code = controller.ConnectSync();
Console.WriteLine(code != StatusCode.OK ? code.GetDescription() : "连接成功/Successfully connected.");
if (code != StatusCode.OK)
{
return code;
}
try
{
// [ZH] 设置程序名称和位姿点索引
// [EN] Set program name and pose index
string progName = "test_prog";
int cartIndex = 1;
// [ZH] 先读取一个位姿点
// [EN] First read a pose
ProgramPose cartPose;
(cartPose, code) = controller.ProgramPoses.Read(progName, cartIndex);
if (code != StatusCode.OK)
{
Console.WriteLine($"读取位姿点失败/Read Pose Failed: {code.GetDescription()}");
return code;
}
// [ZH] 转换位姿点类型(从笛卡尔坐标转换为关节坐标)
// [EN] Convert pose type (from Cartesian to Joint coordinates)
ProgramPose pose;
(pose, code) = controller.ProgramPoses.ConvertPose(cartPose, PoseType.Joint);
if (code == StatusCode.OK)
{
Console.WriteLine("转换程序位姿点成功/Convert Program Pose Success");
Console.WriteLine($"原始位姿/Original Pose: {cartPose}");
Console.WriteLine($"转换后位姿/Converted Pose: {pose}");
}
else
{
Console.WriteLine($"转换程序位姿点失败/Convert Program Pose Failed: {code.GetDescription()}");
}
}
catch (Exception ex)
{
Console.WriteLine($"执行过程中发生异常/Exception occurred during execution: {ex.Message}");
code = StatusCode.OtherReason;
}
finally
{
// [ZH] 关闭连接
// [EN] Close the connection
StatusCode disconnectCode = controller.Disconnect();
if (disconnectCode != StatusCode.OK)
{
Console.WriteLine(disconnectCode.GetDescription());
if (code == StatusCode.OK)
code = disconnectCode;
}
}
return code;
}
}