Auf dieser Seite
Einrichtung des Lwa4p Roboterarms
Während meiner Experimente mit dem Powerball Lightweight lwa4p Roboterarm von Schunk hatte ich viele Schwierigkeiten, ihn mit moveit in Bewegung zu setzen. In diesem Beitrag teile ich diese Erfahrung.
Ich habe alle erforderlichen Schritte in einem Bash-Skript zusammengefasst und werde hier im Detail den Prozess beschreiben, dem ich gefolgt bin.
CAN-Karte/Treiber auswählen
Da der lwa4p Roboterarm das CAN-Bus-Kommunikationsprotokoll verwendet, wird eine CAN-Karte benötigt, um mit dem Arm zu kommunizieren. In einem anderen Projekt hat Bryant Pong eine Peak PCAN-Karte von Peak verwendet, die mir nicht zur Verfügung steht, und laut der socketcan-Schnittstelle Wiki-Seite konnte ich auch die esd CAN-Karten mit dem Kernel-Treiber verwenden, und das habe ich auch getan.
Software-Version auswählen
Zunächst musste ich das Betriebssystem auswählen, mit dem ich arbeiten wollte. Das andere Projekt verwendet ros-hydro, das nur Precise, Quantal und Raring für debian-Pakete unterstützt, wie in der Wiki-Seite angegeben. Die erste Idee war also, es ähnlich dem genannten Projekt zu machen. Natürlich bereitet die Arbeit mit alter Software viele Probleme, wie die Notwendigkeit, einige Pakete aus Quellen zu installieren, da sie in den Hauptsoftware-Repositories nicht unterstützt werden, und man muss sich mit Abhängigkeiten befassen.
Langer Rede kurzer Sinn, es hat nicht funktioniert. Also kontaktierte ich einen der Autoren von ipa320/ipa_canopen, Herrn Mathias Luedtke @ipa-mdl, der mir freundlicherweise einige nützliche Richtlinien gab.
Es wurde vorgeschlagen, ros-industrial/ros_canopen zu verwenden, da es ros-indigo auf Ubuntu-14.04 unterstützt. Also ergab sich folgende Konfiguration:
- Ubuntu-14.04-64bit
- ROS-Indigo (das neueste Update)
- Socketcan (ESD CAN-Karte (PLX90xx), sja1000 Kernel-Treiber)
- Bash-Shell.
ROS-Pakete installieren
Um ROS zu installieren, folgte ich den Installationsanweisungen auf der Wiki-Seite.
- Fügen Sie als Administrator oder sudo-Benutzer die ROS-Repositories zur Sourcelist hinzu und importieren Sie den entsprechenden Schlüssel:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net --recv-key 0xB01FA116
- Aktualisieren Sie den Paket-Cache im System:
sudo apt-get update
- Installieren Sie ROS Desktop:
sudo apt-get install -y ros-indigo-desktop
- Installieren Sie weitere ergänzende Pakete:
sudo apt-get install -y git ros-indigo-libntcan ros-indigo-libpcan \
ros-indigo-controller-manager ros-indigo-controller-manager-msgs \
ros-indigo-joint-limits-interface ros-indigo-cob-srvs \
ros-indigo-cob-control-mode-adapter ros-indigo-cob-dashboard \
ros-indigo-cob-command-gui libmuparser-dev python-rosinstall \
python-wstool
rosdep-Initialisierung
rosdep ermöglicht es Ihnen, Systemabhängigkeiten für Quellcode, den Sie kompilieren möchten, einfach zu installieren, und ist erforderlich, um einige Ker-Komponenten in ROS auszuführen.
Zur Initialisierung:
sudo rosdep init
rosdep update
Beachten Sie, dass der zweite Befehl als normaler Benutzer ausgeführt werden sollte.
Umgebung einrichten
Um ROS-Befehle ausführen zu können, müssen die ROS-Umgebungsvariablen verfügbar sein, was durch das Laden bestimmter Dateien erfolgt:
echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc
source ~/.bashrc
Achten Sie darauf, dass diese Setup-Datei in jedem Terminal geladen wird, das Sie für ROS verwenden, und wenn Sie screen oder tmux verwenden, stellen Sie sicher, dass in jedem geöffneten Pane jeweils die Setup-Datei geladen wird, andernfalls können unerwartete Fehler auftreten.
Catkin-Arbeitsbereich
- Erstellen Sie ein Verzeichnis für den Catkin-Arbeitsbereich. Normalerweise nenne ich es
catkin_wsund platziere es in meinem Home-Verzeichnis:
mkdir -p $HOME/catkin_ws/src
cd $HOME/catkin_ws/src
catkin_init_workspace
- Klonen Sie die benötigten Pakete von GitHub:
git clone https://github.com/ammarnajjar/ros_canopen.git -b no-lost-arbitration-handling
git clone https://github.com/ipa320/schunk_robots.git -b indigo_dev
cd ..
Beachten Sie, dass ich das ursprüngliche ros-industrial/ros_canopen geforkt und einen Patch darauf angewendet habe, da ich beim Initialisieren des Roboterarms ständig den Fehler internal_error: 2 (lost arbitration;) erhielt. Wenn Sie neugierig sind, schauen Sie sich die vollständigen Logs für den genannten Fehler an.
Der Patch wird hier angezeigt, um zu zeigen, wo ich die Behandlung dieses Fehlers auskommentiert habe. Tun Sie dies nur, wenn es notwendig ist und als letzten Ausweg.
- Installieren Sie die Abhängigkeiten für diese Pakete mit:
rosdep install --from-paths src --ignore-src --rosdistro indigo -y
- Bauen Sie den Catkin-Arbeitsbereich:
catkin_make
echo "source $HOME/catkin_ws/devel/setup.bash" >> $HOME/.bashrc
source $HOME/catkin_ws/devel/setup.bash
CAN-Schnittstelle
Die korrekte Einrichtung der CAN-Schnittstelle erfolgte nach einigen Recherchen zu ros/socket_interface und mit einigen Anweisungen aus dem geöffneten Bug #59 von ipa320/schunk_robots.
Ich verbinde den Roboterarm mit can0, sodass die Schritte wie folgt zusammengefasst werden können:
- Setzen Sie die Bitrate auf 500k. Dies muss geschehen, während die Schnittstelle deaktiviert ist. Schalten Sie sie also zuerst aus, setzen Sie den Bitrate-Wert und schalten Sie sie dann wieder ein:
sudo ip link set dev can0 down
sudo ip link set can0 type can bitrate 500000
sudo ip link set dev can0 up
- Setzen Sie die txqueue-Länge auf einen Wert zwischen 15 und 20:
sudo ifconfig can0 txqueuelen 20
Beachten Sie, dass das schunk_robots-Paket standardmäßig can0 verwendet. Wenn Sie also eine andere Schnittstelle wie can1 oder can2 verwenden, stellen Sie sicher, dass Sie die Konfigurationsdatei lwa4p.yml in Ihrem schunk_robots-Paket ändern, damit sie die passende CAN-Schnittstelle verwendet.
MoveIt
Um moveit zu verwenden, folgte ich den Schritten in der Dokumentation. Ich wählte den Catkin-Arbeitsbereich in meinem Home-Verzeichnis:
mkdir -p $HOME/moveit/src
cd $HOME/moveit/src
wstool init .
wstool merge https://raw.github.com/ros-planning/moveit_docs/indigo-devel/moveit.rosinstall
wstool update
cd ..
rosdep install --from-paths src --ignore-src --rosdistro indigo -y
catkin_make
echo "source $HOME/moveit/devel/setup.bash" >> $HOME/.bashrc
source $HOME/moveit/devel/setup.bash
Zu der Zeit, als ich moveit verwendete, hatte ich einige Kompilierungs-Fehler, aber ich fand das Problem und erstellte einen Pull Request mit einer vorgeschlagenen Lösung, der schnell in den indigo-devel-Branch von ros-planning/moveit-ros gemerged wurde, und das Problem wurde gelöst.
Nach Abschluss der Installation verwendete ich den MoveIt Setup Assistant, um die MoveIt-Konfigurationen zu erstellen. Das habe ich bereits selbst getan und auf GitHub hochgeladen, mit all seinen Anpassungen.
Wenn Sie es nicht selbst tun möchten, gehen Sie in Ihr src-Verzeichnis im catkin-Arbeitsbereich und klonen Sie es:
git clone https://github.com/ammarnajjar/lwa4p_moveit_config.git
Dann bauen Sie es erneut auf, um es verwenden zu können.
Initialisierung des Roboterarms
Um den Roboterarm zu initialisieren, starte ich zuerst den Controller
roslaunch schunk_lwa4p robot.launch
und rufe dann den init-Dienst auf:
rosservice call /arm/driver/init
Dies sollte folgende Ausgabe ergeben:
success: True
message: ''
Bewegen des Roboterarms
Starten Sie rviz und verwenden Sie es zur Steuerung des Roboterarms:
roslaunch lwa4p_movit_config moveit_planning_execution.launch
Die folgenden Bilder zeigen den Roboterarm in zwei verschiedenen Positionen:
Heimposition
zufällige gültige Position