Skip to content

Codes related to Aidin AFT series (CAN communication)

Notifications You must be signed in to change notification settings

rise-lab-skku/rise-aft-can

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AFT Python with Kvaser CAN

본 저장소는 Aidin Robotics 사의 FT 센서를 USB-to-CAN 장치를 통해 파이썬에서 사용하기 위한 패키지이다. 현재는 Kvaser 장치만 지원한다.

  1. Compatibility
  2. Installation
  3. Minimal Python Examples
  4. More Examples

Compatibility

현재 테스트된 센서는 다음과 같다.

  • AFT200-D80-C

Installation

  1. 크바저 USB-to-CAN 드라이버를 설치한다.

    1. 크바저 Support 페이지에서 "Kvaser Linux Drivers and SDK"를 받아 설치한다.

    2. 드라이버를 설치할 때에는 실제 Kvaser 장치가 연결되지 않은 상태에서 설치해야 한다. 장비가 연결되어 있으면 경고문구와 함께 제대로 설치되지 않는다.

    3. 설치 방법은 압축 파일 안에 있는 README에 설명되어 있다. 그 내용은 보통 다음과 같다.

      # 압축 폴더 안에서
      $ sudo apt install build-essential pkg-config dkms
      $ make dkms
      $ sudo make dkms_install
    4. 제대로 설치가 되었다면, /usr/doc/canlib/examples에 있는 예제가 다음과 같이 실행되는지 확인해보자. 실제 장치를 연결할 필요는 없다.

      $ cd /usr/doc/canlib/examples
      $ ./listChannels
      CANlib version 5.43
      Found 2 channel(s).
      ch  0: Kvaser Virtual CAN      0-00000-00000-0, s/n 1, v0.0.0  (kvvirtualcan v8.43.472)
      ch  1: Kvaser Virtual CAN      0-00000-00000-0, s/n 1, v0.0.0  (kvvirtualcan v8.43.472)
  2. 파이썬에 rise_aft_can 패키지를 설치한다. 본 저장소를 따로 clone할 필요는 없으며, 필요한 canlib 패키지는 자동으로 설치된다.

    Pip 로 설치할 경우:

    $ pip install git+https://github.com/rise-lab-skku/rise-aft-can.git

    Poetry 환경에 설치할 경우:

    $ poetry add git+https://github.com/rise-lab-skku/rise-aft-can.git
  3. 설치가 잘 되었는지 확인하기 위해, 새 터미널을 열고 다음과 같이 실행해보자.

    $ rise-aft-can --check

    아래와 같은 결과가 나오면 정상적으로 설치가 된 것이다. (아래에 Kvaser U100이 새로 생긴 것은 실제 Kvaser 장치를 연결했기 때문이므로 무시해도 된다.)

    canlib version: 8.43
    
    ######## Found 3 channels ########
    1. Kvaser U100 (channel 0) (**-*****-*****-* / *******)
    2. Kvaser Virtual CAN (channel 0) (00-00000-00000-0 / 1)
    3. Kvaser Virtual CAN (channel 1) (00-00000-00000-0 / 1)
    
    ######## Connected Devices ########
    CANlib Channel: 0
    Card Number   : 0
    Device        : Kvaser U100 (channel 0)
    Driver Name   : mhydra
    EAN           : **-*****-*****-*
    Firmware      : 3.24.0.744
    Serial Number : *******)
    
    CANlib Channel: 1
    Card Number   : 0
    Device        : Kvaser Virtual CAN (channel 0)
    Driver Name   : kvvirtualcan
    EAN           : 00-00000-00000-0
    Firmware      :

Minimal Python Examples

실제 센서를 연결할 때에는 반드시 적절한 전원을 인가하라. 잘못된 전원은 센서를 망가뜨릴 수 있다. AFT200-D80-C의 경우 5V DC이다.

With 문을 사용하는 경우 (권장):

from rise_aft_can.sensors import AFT200D80

channel = 0

with AFT200D80(channel) as aft:
    aft.set_continuous_transmitting()
    data: list = aft.read()
    print(f"Fxyz[N], Txyz[Nm]: {data}")

With 문을 사용하지 않는 경우:

from rise_aft_can.sensors import AFT200D80

channel = 0

aft = AFT200D80(channel)
aft.setup_channel()

aft.set_continuous_transmitting()
data: list = aft.read()
print(f"Fxyz[N], Txyz[Nm]: {data}")

aft.teardown_channel()

Output:

$ python3 example.py
Using channel: Kvaser U100 (channel 0), EAN: 73-30130-01173-1, Serial: 1007015
Fxyz[N], Txyz[Nm]: [-12.990000000000009, 3.579999999999984, -16.04000000000002, -0.07200000000000273, 0.4759999999999991, -0.6820000000000022]
Closing channel: Kvaser U100 (channel 0)
Channel closed.

More Examples

$ python ./example/3_aft200_d80_advanced.py
Using channel: Kvaser U100 (channel 0), EAN: 73-30130-01173-1, Serial: 1007015

Listening...
[1696842221.125] Fx[N]:     0.040  | Fy[N]:    -0.820  | Fz[N]:    -0.600  | Tx[Nm]:     0.036  | Ty[Nm]:     0.000  | Tz[Nm]:     0.006
[1696842221.135] Fx[N]:     0.670  | Fy[N]:    -0.580  | Fz[N]:    -0.400  | Tx[Nm]:     0.070  | Ty[Nm]:    -0.028  | Tz[Nm]:    -0.014
[1696842221.145] Fx[N]:     1.120  | Fy[N]:    -0.640  | Fz[N]:     0.200  | Tx[Nm]:     0.118  | Ty[Nm]:     0.018  | Tz[Nm]:    -0.022
[1696842221.155] Fx[N]:     1.080  | Fy[N]:    -0.750  | Fz[N]:     0.310  | Tx[Nm]:     0.120  | Ty[Nm]:     0.050  | Tz[Nm]:    -0.034
[1696842221.165] Fx[N]:     1.060  | Fy[N]:    -1.000  | Fz[N]:     0.020  | Tx[Nm]:     0.126  | Ty[Nm]:     0.006  | Tz[Nm]:    -0.010
[1696842221.175] Fx[N]:     0.400  | Fy[N]:    -1.060  | Fz[N]:    -0.110  | Tx[Nm]:     0.126  | Ty[Nm]:    -0.034  | Tz[Nm]:    -0.032