Motorisation (WEASEL) - vaul-ulaval/vaul-wiki GitHub Wiki

Introduction

Cette page présente les détails concernant le système de motorisation de la déneigeuse autonome WEASEL. La majeure partie des composantes ont été fournies par la compagnie Hydro-Gear. Voici les composantes utilisées:

  • 2x Moteurs sans balais ZT-2800e
  • 2x Contrôleur de traction TC-2200
  • 1x Module Bluetooth

Documentation

Toute la documentation disponible pour le système est accessible dans le Sharepoint dans le dossier suivant: Électrique/WEASEL/Moteurs Hydro-Gear.

Moteurs

Les moteurs utilisés sont des moteurs à courant continu sans balais qui requièrent un contrôleur spécialisé pour les opérer. Ils sont équipés de trois capteurs à effet hall qui permettent de mesurer la position du rotor et donc sa vitesse de rotation. Ils sont également équipés d'un frein électro-magnétique, qui doit être retiré afin de pouvoir tourner (ce qui est géré par le contrôleur). Finalement, des capteurs de température permettent de s'assurer que le moteur ne dépasse pas les températures recommandées.

Note: Le frein peut être déclenché manuellement pour pouvoir mettre le robot au neutre. Par contre, les contrôleurs de moteur font une vérification du fonctionnement du frein à l'initialisation. Il sera donc impossible de faire tourner les moteurs sans réenclencher le frein.

Câblage CAN

La communication entre l'ordinateur de bord et les 2 contrôleurs de moteur se fait par le protocole CANbus, populaire dans le domaine automobile. Ce protocole requiert 4 fils, avec le code de couleur suivant:

ID Couleur
12V Rouge
GND Noir
CAN_H Blanc
CAN_L Bleu/Jaune

Pour simplifier le câblage, nous avons décidé d'utiliser des connecteurs NMEA 2000, un protocole inventé pour les bateaux et qui ressemblent beaucoup au CAN.

Adapteur CAN-USB

L'ordinateur de bord communique avec le bus CAN via un adapteur PEAK-USB. La configuration du pilote Linux pour cet adapteur a été faite en suivant ce guide. En gros, les commandes suivantes permettent d'installer le pilote:

sudo apt install -y libpopt-dev dkms
cd ~/
wget https://www.peak-system.com/quick/PCAN-Linux-Driver
tar -xzf PCAN-Linux-Driver
cd peak-linux-driver-*
make clean
make netdev
sudo make install_with_dkms
sudo modprobe pcan
cd ~/
rm -rf PCAN-Linux-Driver peak-linux-driver-*

Nous avons modifié la fin du fichier /etc/modprobe.d/pcan.conf afin de ne pas interférer avec les autres bus CAN de l'ordinateur:

options pcan assign=peak    # <-- ADDED LINE
install pcan modprobe --ignore-install pcan

De cette manière, l'adaptateur USB reçoit le slot can32. Cela peut être vérifié à l'aide de la commande suivante :

cat /proc/pcan

Enfin, pour nous assurer que le port est ouvert au démarrage et avec le bon débit binaire (500000), nous avons créé un service systemd à l'emplacement /etc/systemd/system/socketcan.service. Le contenu est :

[Unit]
Description=Setup SocketCAN Interface
After=network.target

[Service]
Type=oneshot
ExecStart=/home/robot/scripts/setup_socketcan.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Ce service exécute simplement un script situé à /home/weasel/scripts/setup_socketcan.sh. Le contenu est :

#! /bin/bash

# Start can32 interface with the right bitrate
sudo ip link set can32 up type can bitrate 500000

Driver ROS2

Un driver ROS2 a été créé spécifiquement pour ces contrôleurs de moteur et est disponible dans le dépôt Git suivant : https://github.com/vaul-ulaval/smartec_motors_ros. Il utilise la librairie cantools pour lire et écrire sur le bus CAN.

Débogage

Il est possible de voir l'état du système Smartec grâce au module Bluetooth et l'application Smartec Dashboard (requiert des accès de Hydro-Gear).

Autrement, voici quelques commandes Linux utiles pour visualiser les messages sur le bus CAN:

sudo apt install can-utils
pip install python-can
candump -x can32 | grep RX
can_viewer -c "can32" -i "socketcan"