Files
Handcontrol_LYT_Version_Win…/README.md
jinggaoyang-68 cb39e602a3 修改readme
2024-12-11 13:32:08 +08:00

3.0 KiB
Raw Blame History

他山触觉传感器python(64bit)demo

此demo为他山触觉传感器python64bitdemo可以读取传感器的通道原始值和三维力值

Getting started

安装ch341驱动

windows

直接运行CH341PAR.exe按照提示安装

linux

按照“CH341PAR_LINUX”文件夹下的“README.md"安装驱动

linux下环境搭建

对于linux用户需要将ch341添加到udev规则普通用户也可以访问ch341设备或者使用sudo权限来运行程序不推荐

将用户添加到dialout组

查看 dialout 组的成员,如果不包含当前用户则需要将用户添加到 dialout 组“john”替换为你想要添加到组的用户名

# 查看 dialout 组的成员
getent group dialout
 
# 将用户 'john' 添加到 dialout 组
sudo usermod -a -G dialout john

创建rules文件

在 /etc/udev/rules.d/ 目录下创建一个新的规则文件,例如 ch341.rules添加如下内容

SUBSYSTEM=="usbmisc", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="5512", MODE="0666", GROUP="dialout"

idVendor和idProduct是CH341设备的供应商和产品ID可以通过lsusb命令查找这些ID

更新规则文件

sudo udevadm control --reload-rules
sudo udevadm trigger

运行示例

上电

传感器不同版本的固件上电时间存在差异建议在传感器上电3s后再运行读取程序

demo根目录下运行如下命令执行程序

python cap_read.py

程序运行结果:

capChannelDat=[3020838, 3006548, 2986382, 2929380, 2995152, 2992100, 2988970, 2996232, 2904946, 2947736, 2895000, 2842188, 2999608, 2922258, 2776718, 7950022]
nf[0] = 0.0
tf[0] = 0.0
tfDir[0] = 0
nf[1] = 0.0
tf[1] = 0.0
tfDir[1] = 0
sProxCapData[0] = 0
sProxCapData[1] = 0
mProxCapData[0] = 0
  • capChannelDat为电容通道原始值
  • nf、tf、tfDir分别为一组三维力的法向力、切向力和切向力方向
  • sProxCapData为自电容接近值
  • mProxCapData为互电容接近值

连接手指数量设定

手指连接板最大支持5个传感器连接不足5个传感器连接会影响读取频率可以修改如下宏定义配置连接数量

DEF_MAX_FINGER_NUM = 2 # 需要连接的手指数量最大5个

iic接口顺序和iic地址定义

此demo中的iic地址和插入转接板的接口位置是固定对应关系iic地址和iic接口顺序对照关系如下

图片说明
如果插入的传感器和对应接口的iic地址不同在初始化阶段会强制将传感器的iic地址设置为图中对应的地址

def checkSensor(self):
    # 广播的方式读取当前传感器地址并默认将iic地址配置为和pca相同的地址
    addrRead = self.snsCmd.getAddr(0) 
    if addrRead != self.pcaIdx:
        if self.pcaIdx != self.snsCmd.setAddr(addrRead, self.pcaIdx):
            print(f"set addr false, setaddr={self.pcaIdx}")
            return False
        else:
            addrRead = self.pcaIdx
            print(f"update iic addr, new addr ={addrRead}")