Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

cybergearをpythonで弄る その2:一軸だけ角度で動かす

実際のところ

CANの立ち上げ

### CAN状態の確認
$ ip link show type can

### 既存プロセスの停止
$ sudo ip link set can0 down

### 通信レートの設定
$ sudo ip link set can0 type can bitrate 1000000

### プロセスのたちあげ
$ sudo ip link set can0 up

動作スクリプト

先日cloneしたリポジトリのうち、サブディレクトリのnotebookに移動し以下の内容を追記

サンプルではpcanを使用していますが、ドライバーの関係でsocket_nativeでないと動かないので注意

import os
import sys
import time

# 添加pcan_cybergear库的路径
# パスの追加
sys.path.append(os.path.join("..", "cybergear"))

from pcan_cybergear import CANMotorController
import can
import time

# Connect to the CAN bus with 1 Mbit/s bitrate
bus = can.interface.Bus(bustype="socketcan_native", channel="can0", bitrate=1000000)

motor1 = CANMotorController(bus, motor_id=101, main_can_id=254)


# モーターの無効化、脱力するので注意
motor1.disable()

# ゼロポジションの設定。脱力した状態では精度が若干不安。
motor1.set_0_pos()

# モーターの有効化
motor1.set_run_mode(motor1.RunModes.POSITION_MODE) # 位置模式
motor1.enable()

# ゼロ点に移動
motor1.write_single_param("loc_ref", value=0.0)

# 動作メイン
while True:
    motor1.write_single_param("loc_ref", value=0.0)
    time.sleep(2.0)
    motor1.write_single_param("loc_ref", value=0.2)
    time.sleep(2.0)