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"