跳至主要內容

C#

JAKA大约 20 分钟

C#

本文档将介绍JAKA SDK(C#)中定义的数据类型和API,主要适用于使用C#创建与虚拟或真实控制器通信的机器人应用程序的软件开发人员。对于需要了解JAKA机器人控制器应用程序的用户也会有一定帮助。

接口列表

机器人基础操作

机械臂登录

int create_handler(char[] ip, ref int handle, bool use_grpc = false) ;
int create_handler([MarshalAs(UnmanagedType.LPStr)] string ip, ref int handle, bool use_grpc = false);

机械臂注销

int destory_handler(ref int handle)

机械臂登录

int power_on(ref int handle)

机械臂下电

int power_off(ref int handle)

机械臂关机

int shut_down(ref int handle)

机械臂上使能

int enable_robot(ref int handle)

机械臂下使能

int disable_robot(ref int handle)

获取当前连接机械臂的dh参数

int get_dh_param(ref int i,ref JKTYPE.DHParam offset)

设置机器人安装角度

int set_installation_angle(ref int i, double angleX, double angleZ)

获取机器人安装角度

int get_installation_angle(ref int i, ref JKTYPE.Quaternion quat, ref JKTYPE.Rpy appang)

获取机械臂状态

int get_robot_state(ref int handle, ref JKTYPE.RobotState state)

获取机械臂状态监测数据-唯一多线程安全接口

int get_robot_status(ref int i, ref JKTYPE.RobotStatus status)

[获取机械臂状态监测数据]

int get_robot_status_simple(ref int i, ref JKTYPE.get_robot_status_simple status)

SDK相关

注册机械臂出错时的回调函数

int set_error_handler(ref int i, CallBackFuncType func)

获取sdk版本号

int get_sdk_version(ref int i, StringBuilder version, int size)

设置网络异常时机械臂自动终止运动类型

int set_network_exception_handle(ref int i, float millisecond, JKTYPE.ProcessType mnt)

获取控制器ip

int get_controller_ip(char[] controller_name, StringBuilder ip)

设置机械臂错误码文件存放路径

int set_errorcode_file_path(ref int i, StringBuilder path)

设置机械臂错误码文件存放路径获取机械臂目前发生的最后一个错误码

int get_last_error(ref int i, ref JKTYPE.ErrorCode code)

设置sdk是否开启调试模式

int set_debug_mode(ref int i, bool mode)

设置sdk日志路径

int set_SDK_filepath(ref int i, ref char[] filepath);
int set_SDK_filepath(ref int i, [MarshalAs(UnmanagedType.LPStr)] string filepath)

获取sdk日志路径

int get_SDK_filepath(char[] path, int size);
int get_SDK_filepath(StringBuilder path, int size)

机器人运动相关

机械臂手动模式下运动

int jog(ref int handle, int aj_num, JKTYPE.MoveMode move_mode, JKTYPE.CoordType coord_type, double vel_cmd, double pos_cmd)

机械臂手动模式下运动停止

int jog_stop(ref int handle, int num)

机械臂关节运动

int joint_move(ref int handle, ref JKTYPE.JointValue joint_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed)

机械臂关节运动

int joint_move_extend(ref int i, ref JKTYPE.JointValue joint_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond)

机械臂末端直线运动

int linear_move(ref int handle, ref JKTYPE.CartesianPose end_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed)

机械臂末端直线运动

int linear_move_extend(ref int i, ref JKTYPE.CartesianPose cart_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond)

机械臂末端直线运动

int linear_move_extend_ori(ref int i, ref JKTYPE.CartesianPose cart_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond, double ori_vel, double ori_acc)

机械臂圆弧运动

int circular_move(ref int i, ref JKTYPE.CartesianPose end_pos, ref JKTYPE.CartesianPose mid_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond)

机械臂圆弧运动

int circular_move_extend(ref int i, ref JKTYPE.CartesianPose end_pos, ref JKTYPE.CartesianPose mid_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond, double circle_cnt)

机械臂圆弧运动

int circular_move_extend_mode(ref int i, ref JKTYPE.CartesianPose end_pos, ref JKTYPE.CartesianPose mid_pos, JKTYPE.MoveMode move_mode, bool is_block, double speed, double acc, double tol, ref JKTYPE.OptionalCond option_cond, double circle_cnt, int circle_mode)

设置机械臂的运行倍率

int set_rapidrate(ref int handle, double rapid_rate)

获取机械臂的运行倍率

int get_rapidrate(ref int handle, ref double rapid_rate)

设置工具信息

int set_tool_data(ref int handle, int id, ref JKTYPE.CartesianPose tcp, char[] name);
int set_tool_data(ref int handle, int id, ref JKTYPE.CartesianPose tcp, [MarshalAs(UnmanagedType.LPStr)] string name)

获取工具信息

int get_tool_data(ref int handle, int id, ref JKTYPE.CartesianPose tcp)

设置当前使用的工具id

int set_tool_id(ref int handle, int id)

查询当前使用的工具id

int get_tool_id(ref int handle, ref int id)

设定用户坐标系信息

int set_user_frame_data(ref int handle, int id, ref JKTYPE.CartesianPose user_frame, char[] name);
int set_user_frame_data(ref int handle, int id, ref JKTYPE.CartesianPose user_frame, [MarshalAs(UnmanagedType.LPStr)] string name)

获取用户坐标系信息

int get_user_frame_data(ref int handle, int id, ref JKTYPE.CartesianPose user_frame)

设置当前使用的用户坐标系id

int set_user_frame_id(ref int handle, int id)

查询当前使用的用户坐标系id

int get_user_frame_id(ref int handle, ref int id)

控制机械臂进入或退出拖拽模式

int drag_mode_enable(ref int handle, bool enable)

查询机械臂是否处于拖拽模式

int is_in_drag_mode(ref int handle, ref bool in_drag)

获取当前设置下工具末端的位姿

int get_tcp_position(ref int handle, ref JKTYPE.CartesianPose tcp_position)

获取当前机械臂关节角度

int get_joint_position(ref int handle, ref JKTYPE.JointValue joint_position)

查询机械臂是否超出限位

int is_on_limit(ref int handle, ref bool on_limit)

查询机械臂运动是否停止

int is_in_pos(ref int handle, ref bool in_pos)

[设置规划器类型]

int set_motion_planner(ref int i, int type)

机械臂运动终止

int motion_abort()

机械臂负载设置

int set_payload(ref int handle, ref JKTYPE.PayLoad payload)

获取机械臂负载数据

int get_payload(ref int handle, ref JKTYPE.PayLoad payload)

IO相关

设置数字输出变量

int set_digital_output(ref int handle, JKTYPE.IOType type, int index, bool value)

设置模拟输出变量

int set_analog_output(ref int handle, JKTYPE.IOType type, int index, float value)

查询数字输入状态

int get_digital_input(ref int handle, JKTYPE.IOType type, int index, ref bool result)

查询数字输出状态

int get_digital_output(ref int handle, JKTYPE.IOType type, int index, ref bool result)

获取模拟量输入变量的值

int get_analog_input(ref int handle, JKTYPE.IOType type, int index, ref float result)

获取模拟量输出变量的值

int get_analog_output(ref int handle, JKTYPE.IOType type, int index, ref float result)

查询扩展io是否运行

int is_extio_running(ref int handle, ref bool is_running)

TIO相关

设置tiov3电压参数

int set_tio_vout_param(ref int i, int vout_enable,int vout_vol)

获取tiov3电压参数

int get_tio_vout_param(ref int i,ref int vout_enable,ref int vout_vol)

TIO添加或修改信号量

int add_tio_rs_signal(ref int i, JKTYPE.SignInfo sign_info)

TIO删除信号量

int del_tio_rs_signal(ref int i, char[] sig_name);
int del_tio_rs_signal(ref int i, [MarshalAs(UnmanagedType.LPStr)] string sig_name)

TIO RS485发送指令

int send_tio_rs_command(ref int i, int chn_id, byte[] data, int buffsize)

TIO 获取信号量信息

int get_rs485_signal_info(ref int i, [In, Out] JKTYPE.SignInfo[] sign_info, ref int size)

设置TIO模式

int set_tio_pin_mode(ref int i, int pin_type, int pin_mode)

获取TIO模式

int get_tio_pin_mode(ref int i, int pin_type, ref int pin_mode)

TIO RS485通讯参数配置

int set_rs485_chn_comm(ref int i, JKTYPE.ModRtuComm mod_rtu_com)

TIO RS485通讯参数查询

int get_rs485_chn_comm(ref int i, ref JKTYPE.ModRtuComm mod_rtu_com)

TIO RS485通讯模式配置

int set_rs485_chn_mode(ref int i, int chn_id, int chn_mode)

TIO RS485通讯模式查询

int get_rs485_chn_mode(ref int handle, int chn_id, ref int chn_mode)

伺服相关

机械臂伺服位置控制模式使能

int servo_move_enable(ref int handle, bool enable)

机械臂关节空间伺服模式运动

int servo_j(ref int handle, ref JKTYPE.JointValue joint_pos, JKTYPE.MoveMode move_mode, int step_num)

机械臂笛卡尔空间伺服模式运动扩展

int servo_p(ref int handle, ref JKTYPE.CartesianPose cartesian_pose, JKTYPE.MoveMode move_mode, int step_num)

机械臂servo模式下禁用滤波器

int servo_move_use_none_filter(ref int i)

机械臂servo模式下关节空间一阶低通滤波

int servo_move_use_joint_LPF(ref int i, double cutoffFreq)

机械臂servo模式下关节空间非线性滤波

int servo_move_use_joint_NLF(ref int i, double max_vr, double max_ar, double max_jr)

机械臂servo模式下笛卡尔空间非线性滤波

int servo_move_use_carte_NLF(ref int i, double max_vp, double max_ap, double max_jp, double max_vr, double max_ar, double max_jr)

机械臂servo模式下关节空间多阶均值滤波

int servo_move_use_joint_MMF(ref int i, int max_buf, double kp, double kv, double ka)

机械臂servo模式下速度前瞻参数设置

int servo_speed_foresight(ref int i, int max_buf, double kp)

轨迹相关

设置轨迹复现配置参数

int set_traj_config(ref int i, ref JKTYPE.TrajTrackPara para)

获取轨迹复现配置参数

int get_traj_config(ref int i, ref JKTYPE.TrajTrackPara para)

采集轨迹复现数据控制开关

int set_traj_sample_mode(ref int i, bool mode, char[] filename);
int set_traj_sample_mode(ref int i, bool mode, [MarshalAs(UnmanagedType.LPStr)] string filename)

采集轨迹复现数据状态查询

int get_traj_sample_status(ref int i, ref bool sample_statuse)

查询控制器中已经存在的轨迹复现数据的文件名

int get_exist_traj_file_name(ref int i, ref JKTYPE.MultStrStorType filename)

重命名轨迹复现数据的文件名

int rename_traj_file_name(ref int i, ref char[] src, ref char[] dest);
int rename_traj_file_name(ref int i, [MarshalAs(UnmanagedType.LPStr)] string src, [MarshalAs(UnmanagedType.LPStr)] string dest)

删除控制器中轨迹复现数据文件

int remove_traj_file(ref int i, ref char[] filename);
int remove_traj_file(ref int i, [MarshalAs(UnmanagedType.LPStr)] string filename)

控制器中轨迹复现数据文件生成控制器执行脚本

int generate_traj_exe_file(ref int i, char[] filename);
int generate_traj_exe_file(ref int i, [MarshalAs(UnmanagedType.LPStr)] string filename)

程序相关

运行当前加载的作业程序

int program_run(ref int handle)

暂停当前运行的作业程序

int program_pause(ref int handle)

继续运行当前暂停的作业程序

int program_resume(ref int handle)

终止当前执行的作业程序

int program_abort(ref int handle)

加载指定的作业程序

int program_load(ref int handle, char[] file);
int program_load(ref int handle, [MarshalAs(UnmanagedType.LPStr)] string file)

获取已加载的作业程序的名字

int get_loaded_program(ref int handle, StringBuilder file, 100)

获取当前机械臂作业程序的执行行号

int get_current_line(ref int handle, ref int curr_line)

获取机械臂作业程序的执行状态

int get_program_state(ref int handle, ref JKTYPE.ProgramState status)

[获取机械臂作业程序的执行信息]

int get_program_info(ref int handle, ref JKTYPE.ProgramInfo info)

获取系统变量

int get_user_var(ref int handle, ref JKTYPE.UserVariableList vlist)

设置系统变量

int set_user_var(ref int handle, ref JKTYPE.UserVariable v)

FTP

初始化ftp客户端

int init_ftp_client(ref int i)

关闭ftp客户端

int close_ftp_client(ref int i)

ftp下载

int download_file(ref int i, char[] local, char[] remote, int opt);
int download_file(ref int i, [MarshalAs(UnmanagedType.LPStr)] string local, [MarshalAs(UnmanagedType.LPStr)] string remote, int opt)

ftp上传

int upload_file(ref int i, char[] local, char[] remote, int opt);
int upload_file(ref int i, [MarshalAs(UnmanagedType.LPStr)] string local, [MarshalAs(UnmanagedType.LPStr)] string remote, int opt)

ftp删除

int del_ftp_file(ref int i, char[] remote, int opt);
int del_ftp_file(ref int i, [MarshalAs(UnmanagedType.LPStr)] string remote, int opt)

ftp重命名

int rename_ftp_file(ref int i, char[] remote, char[] des, int opt);
int rename_ftp_file(ref int i, [MarshalAs(UnmanagedType.LPStr)] string remote, [MarshalAs(UnmanagedType.LPStr)] string des, int opt)

ftp目录查询

int get_ftp_dir(ref int i, char[] remote, int type, StringBuilder ret );
int get_ftp_dir(ref int i, [MarshalAs(UnmanagedType.LPStr)] string remote, int type, StringBuilder ret )

力控相关

设置传感器品牌

int set_torsenosr_brand(ref int handle, int sensor_brand)

获取传感器品牌(./Cpp.html#获取传感器品牌)

int get_torsenosr_brand(ref int handle, ref int sensor_brand)

开启或关闭力矩传感器

int set_torque_sensor_mode(ref int handle, int sensor_mode)

[获取力矩传感器状态]

int get_torque_sensor_mode(ref int handle, ref int sensor_mode)

设置力控传感器通信参数

int set_torque_sensor_comm(ref int handle, int type, ref char[] ip_addr, int port);
int set_torque_sensor_comm(ref int handle, int type, [MarshalAs(UnmanagedType.LPStr)] string ip_addr, int port)

获取力控传感器通信参数

int get_torque_sensor_comm(ref int handle, ref int type, [MarshalAs(UnmanagedType.LPStr)] StringBuilder ip_addr, ref int port)

设置力控的低通滤波器参数

int set_torque_sensor_filter(ref int handle, float torque_sensor_filter)

获取力控的低通滤波器参数

int get_torque_sensor_filter(ref int handle, ref float torque_sensor_filter)

设置力传感器的传感器限位参数配置

int set_torque_sensor_soft_limit(ref int handle, JKTYPE.FTxyz torque_sensor_soft_limit)

获取力传感器的传感器限位参数配置

int get_torque_sensor_soft_limit(ref int handle, ref JKTYPE.FTxyz torque_sensor_soft_limit)

[获取力传感器的反馈值]

int get_torque_sensor_data(ref int handle, int type, ref JKTYPE.TorqSensorData)

传感器校零

int zero_end_sensor(ref int handle)

设置力控限速

int set_compliant_speed_limit(ref int handle, double vel, double angular_vel)

获取力控限速

int get_compliant_speed_limit(ref int handle, ref double vel, ref double angular_vel)

设置力矩参考中心

int set_torque_ref_point(ref int handle, int refPoint)

获取力矩参考中心

int get_torque_ref_point(ref int handle, ref int refPoint)

设置传感器灵敏度

int set_end_sensor_sensitivity_threshold(ref int handle, JKTYPE.FTxyz)

获取传感器灵敏度

int get_end_sensor_sensitivity_threshold(ref int handle, ref JKTYPE.FTxyz)

设置力控终止条件

int set_force_stop_condition(ref int handle, ref JKTYPE.ForceStopConditionList)

负载辨识

开始辨识工具末端负载

int start_torq_sensor_payload_identify(ref int i, ref JKTYPE.JointValue joint_pos)

获取末端负载辨识状态

int get_torq_sensor_identify_status(ref int i, ref int identify_status)

获取末端负载辨识结果

int get_torq_sensor_payload_identify_result(ref int i, ref JKTYPE.PayLoad payload)

设置传感器末端负载

int set_torq_sensor_tool_payload(ref int i, ref JKTYPE.PayLoad payload)

获取传感器末端负载

int get_torq_sensor_tool_payload(ref int i, ref JKTYPE.PayLoad payload)

工具拖拽

获取力控柔顺控制参数

int get_admit_ctrl_config(ref int handle, ref JKTYPE.RobotAdmitCtrl admit_ctrl_cfg)

[设置力控柔顺控制参数]

int set_admit_ctrl_config(ref int handle, int axis, int opt, double ftUser, double ftConstant, int ftNnormalTrack, double ftReboundFK)

力控导纳使能

int enable_admittance_ctrl(ref int handle, int enable_flag)

力控工具拖拽使能

int enable_tool_drive(ref int handle, int enable_flag)

获取力控工具拖拽开启状态

int get_tool_drive_state(ref int handle, ref int enable_flag, ref int state)

获取工具拖拽参数

int get_tool_drive_config(ref int handle, ref JKTYPE.RobotToolDriveCtrl)

设置力控拖拽手感参数

int set_tool_drive_config(ref int handle, JKTYPE.ToolDriveConfig)

获取工具拖拽坐标系

int get_tool_drive_frame(ref int handle, ref JKTYPE.FTFrameType)

设置工具拖拽坐标系

int set_tool_drive_frame(ref int handle, JKTYPE.FTFrameType)

获取融合拖拽灵敏度

int get_fusion_drive_sensitivity_level(ref int handle, ref int level)

设置融合拖拽灵敏度

int set_fusion_drive_sensitivity_level(ref int handle, int level)

获取运动限制-奇异点和关节限位-预警范围

int get_motion_limit_warning_range(ref int handle, ref int warning_range)

设置运动限制-奇异点和关节限位-预警范围

int set_motion_limit_warning_range(ref int handle, int warning_range)

力控

设置导纳控制运动坐标系

int set_ft_ctrl_frame(ref int i, int ftFrame)

获取导纳控制运动坐标系

int get_ft_ctrl_frame(ref int i,ref int ftFrame)

设置力控类型和传感器初始化状态

int set_compliant_type(ref int i, int sensor_compensation, int compliance_type)

获取力控类型和传感器初始化状态

int get_compliant_type(ref int i, ref int sensor_compensation, ref int compliance_type)

设置柔顺控制力矩条件

int set_compliance_condition(ref int i, ref JKTYPE.FTxyz ft)

设置进近限速

int set_approach_speed_limit(ref int i, double vel, double angularVel)

获取进近限速

int get_approach_speed_limit(ref int i, ref double vel, ref double angularVel)

[设置恒力控制容差]

int set_ft_tolerance(ref int i, double force, double torque)

[获取恒力控制容差]

int get_ft_tolerance(ref int i, ref double force, ref double torque)

[设置恒力柔顺是否开启]

int set_ft_ctrl_mode(ref int i, int mode)

[获取恒力柔顺控制状态]

int get_ft_ctrl_mode(ref int i,ref int mode)

[设置导纳控制运动配置参数]

int set_ft_ctrl_config(ref int i, AdmitCtrlType cfg)

[获取导纳控制运动配置参数]

int get_ft_ctrl_config(ref int i,ref RobotAdmitCtrl cfg)

碰撞

查询机械臂是否处于碰撞保护模式

int is_in_collision(ref int handle, ref bool in_collision)

碰撞之后从碰撞保护模式恢复

int collision_recover(ref int handle)

设置机械臂碰撞等级

int set_collision_level(ref int handle, int level)

获取机器设置的碰撞等级

int get_collision_level(ref int handle, ref int level)

运动学

机械臂求解逆解

int kine_inverse(ref int handle, ref JKTYPE.JointValue ref_pos, ref JKTYPE.CartesianPose cartesian_pose, ref JKTYPE.JointValue joint_pos)

机械臂求解正解

int kine_forward(ref int handle, ref JKTYPE.JointValue joint_pos, ref JKTYPE.CartesianPose cartesian_pose)

欧拉角到旋转矩阵的转换

int rpy_to_rot_matrix(ref int handle, ref JKTYPE.Rpy rpy, ref JKTYPE.RotMatrix rot_matrix)

旋转矩阵到欧拉角的转换

int rot_matrix_to_rpy(ref int handle, ref JKTYPE.RotMatrix rot_matrix, ref JKTYPE.Rpy rpy)

四元数到旋转矩阵的转换

int quaternion_to_rot_matrix(ref int handle, ref JKTYPE.Quaternion quaternion, ref JKTYPE.RotMatrix rot_matrix)

旋转矩阵到四元数的转换

int rot_matrix_to_quaternion(ref int handle, ref JKTYPE.RotMatrix rot_matrix, ref JKTYPE.Quaternion quaternion)

接口调用返回值列表及问题排查

错误代码描述处理建议
0successnull
2interface error or controller not support核对控制器和SDK版本信息,进行升级或换用其他接口
-1invalid handler请检查调用接口前是否login
-2invalid parameter请检查参数是否正确
-3fail to connect请检查网络连接状态,或机器人IP是否正确
-4kine_inverse error逆解失败,请检查当前的坐标系,或参考关节角是否合理
-5e-stop急停状态,保留状态
-6not power on未上电
-7not enable未使能
-8not in servo mode不处于伺服模式,在执行servoJP 的时候,必须先进入伺服模式,请检查是否调用对应接口
-9must turn off enable before power off下电前必须下使能
-10cannot operate, program is running无法操作,程序正在执行中,请先关闭程序
-11cannot open file, or file doesn't exist无法打开文件,或者文件不存在
-12motion abnormal运动异常,可能处于奇异点附近,或者超出机器人运动限制
-14ftp errorftp异常
-15socket msg or value oversize超出限制异常
-16kine_forward error正解失败
-17not support empty folder不支持空文件夹
-20protective stop保护性停止
-21emergency stop急停
-22on soft limit处于软限位,此时无法手动拖动机器人,需要用APP上的示教功能接触软限位
-30fail to encode cmd string命令编码失败,一般是解析控制器返回的消息时出错
-31fail to decode cmd string命令解码失败,一般是解析控制器返回的消息时出错
-32fail to uncompress port 10004 string解压缩10004端口数据失败,可能受网络波动影响,或数据量太大的原因
-40move linear error直线运动失败,请检查是否路径中是否有奇异区域
-41move joint error关节运动失败,请检查设置的关节角度
-42move circular error圆弧运动失败,请检查设置的参数
-50block_wait timeout阻塞等待超时
-51power on timeout上电超时
-52power off timeout下电超时
-53enable timeoff使能超时
-54disable timeout下使能超时
-55set userframe timeout设置用户坐标系超时
-56set tool timeout设置工具坐标系超时
-60set io timeout设置IO超时

问题反馈

文档中若出现不准确的描述或者错误,恳请读者见谅指正。如果您在阅读过程中发现任何问题或者有想提出的意见,可以发送邮件到 support@jaka.com ,我们将尽快给您回复。

上次编辑于: