ATI F/T Gamma sensor( 力和力矩传感器 ) 开箱测评 + 使用说明

型号和序列号等参数如下:

Description: Six-Axis Force/Torque Sensor
Manufacturer: ATI Industrial Automation
Serial Number: FT29352
Model: Gamma
Calibration: SI-130-10
Electronics: Net F/T
Gain Multiplier: 100%

F/T Tramsducer 将力和力矩转换成电信号并发送到teansducer cable中,这个信号是数字量的信号。其余的一些型号例如Nana和Mini发送的信号是模拟量信号。传感器和盒子接线方式如下,可以通过CAN总线或者网线的方式通信。

 我们采用的方式是通过网线连接,所以Can的端口是被占用的,实际接的是24V直流电源。

上一张实际的接线图,24V电源通过220V转24V的开关电源提供,注意开关电源的电流不要过大。

接下来按照使用手册的说明,应该将网口接到电脑上,电脑的操作系统要求是win7,并且设置电脑的IP地址为192.168.1.100,子网掩码为255.255.255.0,然后在电脑上通过浏览器访问192.168.1.1即可进入传感器的使用和配置界面。我们实际使用的场景是在ROS中的机械臂上,所以操作系统是Linux,由于手册并没有提到linux,所以实测了一下,发现是可以使用的,和windows一模一样。将网线连接到工控机(内置系统为ubuntu14.04+ROS),设置IP地址为静态IP,192.168.1.xxx即可。设置方法参考:https://blog.csdn.net/qq_34935373/article/details/96474491

网页访问如下,注意system status为healthy,当初测试的时候由于线缆接口的地方有点接触不良,导致system status一直报错,而且盒子的指示灯也没有按照指定的方式闪烁。

大致简单的对传感器进行如下设置,不具有参考性,需要按照实际工作环境和要求设置。

 Setting界面,是否使能低通滤波器,是否对峰值进行监控(每个轴的最高和最低力和力矩值会被保存为最大峰值和最小峰值),设置软件偏移矢量,初始值为0。在Snapshot界面点击bias按钮,即可设置将传感器数据当前值作为零点,此时bias vector数值就是相差的偏移量,可以在setting界面再将bias vector数据都还原成0并apply,实际应用中,每次启动软件会自动将静止状态的传感器数值设置成bias vector,用来消除运动时候的偏差。

Thresholding界面,设置各个轴的阈值,单位可以是N,也可以是counts,其中Counts = Desired Loading Level × Counts per Force  =  N × 1000000 counts/N。

本产品提供了16组配置,方便用户应用于不同场景,设置一组参数然后保存,注意此处需要产品序列号。

注意此处设置的单位,后面要统一。 Tool trasnform全都是0表示的是力矩传感器的原点在底面的中心处。

通信方式,网络通信,由于用CAN接口供电,所以注意Protocol要设成CAN Bus(图示设置会报错DeviceNet Protocol erroIF)。 其中RDT表示通信的方式为UDP的方式,频率为7000HZ.同理也可以使用下面的TCP方式,UDP相比较TCP,速度更快,但是可能会丢包。

设置完成之后,从官网下载java的demo可视化程序,进行简单测试。windows环境下需要事先安装JAVA的运行环境,linux环境下同理。

 


F/T传感器的配置是通过发送URL来对硬件进行设置,其实我也可以通过软件编程的方式来对传感器进行设置,而不需要访问网页,而且通过网络编程的方法,可以直接通过TCP或者UDP获取到数据并进行处理,而不需要想上面那样需要demo来显示。

/* 通过UDP读取一次传感器的数据 */

#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

#define PORT 49152 /* 传感器使用的端口 */
#define COMMAND 2    
#define NUM_SAMPLES 1 /* 采集一次数据 */

/* 定义数据格式和UDP数据类型 */
typedef unsigned int uint32;
typedef int int32;
typedef unsigned short uint16;
typedef short int16;
typedef unsigned char byte;
typedef struct response_struct {
	uint32 rdt_sequence;
	uint32 ft_sequence;
	uint32 status;
	int32 FTData[6];
} RESPONSE;

int main ( int argc, char ** argv ) {
	int socketHandle;			/* Handle to UDP socket used to communicate with Net F/T. */
	struct sockaddr_in addr;	/* Address of Net F/T. */
	struct hostent *he;			/* Host entry for Net F/T. */
	byte request[8];			/* The request data sent to the Net F/T. */
	RESPONSE resp;				/* The structured response received from the Net F/T. */
	byte response[36];			/* The raw response data received from the Net F/T. */
	int i;						/* Generic loop/array index. */
	int err;					/* Error status of operations. */
	char * AXES[] = { "Fx", "Fy", "Fz", "Tx", "Ty", "Tz" };	

    /* 运行程序需要加上目的地址192.168.1.1 */
	if ( 2 > argc )
	{
		fprintf( stderr, "Usage: %s IPADDRESS\n", argv[0] );
		return -1;
	}
	
	/* 开始UDP通信 */
	socketHandle = socket(AF_INET, SOCK_DGRAM, 0);
	if (socketHandle == -1) {
		exit(1);
	}
	
    /* 具体参考 9.1 in Net F/T user manual. */
	*(uint16*)&request[0] = htons(0x1234); 
	*(uint16*)&request[2] = htons(COMMAND); 
	*(uint32*)&request[4] = htonl(NUM_SAMPLES); 
	
	/* 发送请求 */
	he = gethostbyname(argv[1]);
	memcpy(&addr.sin_addr, he->h_addr_list[0], he->h_length);
	addr.sin_family = AF_INET;
	addr.sin_port = htons(PORT);
	
	err = connect( socketHandle, (struct sockaddr *)&addr, sizeof(addr) );
	if (err == -1) {
		exit(2);
	}
	send( socketHandle, request, 8, 0 );

	/* 接收响应 */
	recv( socketHandle, response, 36, 0 );
	resp.rdt_sequence = ntohl(*(uint32*)&response[0]);
	resp.ft_sequence = ntohl(*(uint32*)&response[4]);
	resp.status = ntohl(*(uint32*)&response[8]);
	for( i = 0; i < 6; i++ ) {
		resp.FTData[i] = ntohl(*(int32*)&response[12 + i * 4]);
	}

	/* 打印显示数据 */
	printf( "Status: 0x%08x\n", resp.status );
	for (i =0;i < 6;i++) {
		printf("%s: %d\n", AXES[i], resp.FTData[i]);
	}

	return 0;
}

 通过gcc netft.c -o netft  生成文件运行./netft 192.168.1.1即可。





接下来通过ROS对传感器进行设置并读取数据,首先要对传感器的标定矩阵有所了解,知道传感器是如何通过计算得到最终的六轴数据。

 

 

/* 头文件 ft_sensor.h */

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值