Table of Contents generated with DocToc
- Installation des ROS-Systems Version Indigo für Ubuntu 14.04 LTS
- Einrichten des Workspace
- Download und Installation des SICK LD-MRS Treibers
- Download und Installation des IMU Plugins für Rviz
- Download und Installation der Projekt-Pakete
- Installation von Octomap Server
- Pfade der Multicar Konfiguration anpassen
- Messung starten
- Laserscanner verbinden
- Tinkerforge Sensoren
- [Anschauen was abgeht] (https://github.com/gus484/ros#anschauen-was-abgeht)
- Aufzeichnung und Wiedergabe von Messungen
- Hydraulik-Steuerung
- Speichern und laden von Planungszuständen (Auslegerpositionen))
####Installation des ROS-Systems Version Indigo für Ubuntu 14.04 LTS
Anweisungen folgen und dabei die Variante Desktop-Full Install wählen
http://wiki.ros.org/jade/Installation/Ubuntu
Zusätzlich sind noch folgende ROS Packages notwendig:
sudo apt-get install ros-jade-geographic-msgs ros-jade-geodesy ros-jade-moveit-core ros-jade-robot-localization ros-jade-nmea-navsat-driver
####Einrichten des Workspace
Anweisungen folgen und den Workspace einrichten
http://wiki.ros.org/catkin/Tutorials/create_a_workspace
Hinweis: Falls anaconda Python Distribution installiert ist, gibt es Konflikte mit dem catkin_pkg
, was nicht gefunden wird. Einfachste Möglichkeit: In der ~/.bashrc
einfach die Zeile export PATH="/home/pbalzer/anaconda/bin:$PATH"
auskommentieren und Terminal neu starten. Dann wird das System Python genutzt und catkin_make
funktioniert.
Die nun erstellte setup.bash
in catkin_ws/devel/
sollte noch in die ~/.bashrc
aufgenommen werden.
source /home/pbalzer/catkin_ws/devel/setup.bash
####Download und Installation des SICK LD-MRS Treibers
Anlegen eines Download-Verzeichnisses
mkdir sick
cd sick
Download des Projektes
(sudo apt-get install bzr
)
bzr branch http://bazaar.launchpad.net/~csiro-asl/csiro-asl-ros-pkg/electric
Umbenennen und kopieren der Dateien in den Workspace
mv electric csiro-asl-ros-pkg
cp csiro-asl-ros-pkg -r ~/catkin_ws/src
Kompilieren des Programms im Workspace
catkin_make
Evtl. muss die Python-Node ausführbar gesetzt werden, damit ROS sie per rosrun findet
chmod +x ~/catkin_ws/src/csiro-asl-ros-pkg/sick_ldmrs/nodes/sickldmrs.py
Möchte man den Namen des Topics für die Pointcloud2 ändern, so kann dies in der Datei csiro-asl-ros-pkg/sick_ldmrs/nodes/sickldmrs.py erfolgen. Entweder passt man folgende Zeichenkette dauerhaft an:
topics['cloud'] = rospy.Publisher('/%s/cloud' % node_name, numpy_msg(PointCloud2),queue_size=1000)
oder man ändert nur den zweiten Teil des Topic-Namen „cloud“ in der Zeile:
topics = {}.fromkeys(( 'cloud', 'scan0', 'scan1', 'scan2', 'scan3'))
Im zweiten Fall lautet der Topic-Name dann „/sickldmrs/xxx“
####Download und Installation des IMU Plugins für Rviz
git clone https://github.com/ccny-ros-pkg/imu_tools.git
Verschieben in den Workspace und kompilieren
cp imu_tools -r ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
####Download und Installation der Projekt-Pakete
Klonen des Git-Archives und verschieben der vier Pakete multicar_hydraulic, tinkerforge_laser_transform, tinycan und Multicar_moveit_config in den Workspace
git clone https://github.com/gus484/ros.git
cd ros
cp multicar_hydraulic tinkerforge_laser_transform tinycan Multicar_moveit_config ~/catkin_ws/src -R
####Installation von Octomap Server
sudo apt-get install ros-jade-octomap-msgs ros-jade-octomap-ros
Für Jade ist Octomap Server noch nicht als Paket verfügbar. Da nehmen wir einfach das für Indigo von Github:
git clone https://github.com/OctoMap/octomap_mapping.git
cp octomap_mapping/ -r ~/catkin_ws/src/
Workspace kompilieren
cd ~/catkin_ws
catkin_make
Hinweis: Wenn Fehler auftreten, einfach nochmal catkin_make
ausführen. Durch die Parallelisierung kann es passieren, dass Dateien, die zum Kompilieren notwendig sind, vom anderen Core noch nicht berechnet wurden und dann stoppt es mit Fehler.
####Pfade der Multicar Konfiguration anpassen
URDF-Datei und .dae-Datein aus Git Repository holen, Arbeitsordner anlegen und Dateien verschieben:
mkdir ~/ROS_MoveIt
cp ROS_MoveIt/*.dae ROS_MoveIt/multicar.urdf ~/ROS_MoveIt
Pfade in URDF-Datei anpassen
nano ~/ROS_MoveIt/multicar.urdf
URDF Pfad im MoveIt Paket in folgenden Dateien anpassen:
nano ~/catkin_ws/src/Multicar_moveit_config/.setup_assistant
nano ~/catkin_ws/src/Multicar_moveit_config/launch/planning_context.launch
Pfade in Launchfiles anpassen:
nano ~/catkin_ws/src/tinkerforge_laser_transform/launch
####Messung starten
roscore starten
roscore
Je nach Anwendung entsprechendes launch file aus der tinkerforge_laser_transform Node im Verzeichnis launch starten. Beispiel:
cd ~/catkin_ws
roslaunch src/tinkerforge_laser_transform/launch/Messung.launch
####Laserscanner verbinden
Der Sick Laserscanner (bzw. ibeo Lux) hat eine feste IP, mit der er kommunizieren will. Dazu ist das Notebook mit einem Netzwerk zu verbinden mit fester IP. Der Laserscanner hat
192.168.0.1
, der Rechner sollte 192.168.0.55
oder sowas haben.
####Tinkerforge Sensoren
Den Tinkerforge Brick Deamon auch installieren.
####Anschauen was abgeht
rosrun rqt_topic rqt_topic
kann man aktive Topics sehen
rosrun rqt_graph rqt_graph
kann man das visualisiert ansehen
####Aufzeichnung und Wiedergabe von Messungen
Siehe Anleitung im Git-Repository:
https://github.com/gus484/ros/tree/master/recorded_maps
Für die Hydraulik-Steuerung werden die Pakete multicar_hydraulic und tinycan benötigt, welche bereits im Schritt Download und Installation der Projekt-Pakete installiert wurden. In dem Verzeichnis launch der multicar_hydraulic gibt es eine Launch-Datei, welche die beiden Nodes startet.
roscore starten
roscore
cd ~/catkin_ws
roslaunch src/multicar_hydraulic/launch/Move.launch
MoveIt + Rviz starten (neues Terminal)
cd ~/catkin_ws
roslaunch src/Multicar_moveit_config/launch/demo.launch
Hinweis: Damit die Hydraulik angesteuert werden, muss in dem Paket Multicar_moveit_config in der Datei launch/demo.launch die automatische Generierung von fake joint states deaktiviert werden.
nano ~/catkin_ws/src/Multicar_moveit_config/launch/demo.launch
Auskommentieren mit :
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
<param name="/use_gui" value="false"/>
<rosparam param="/source_list">[/move_group/fake_controller_joint_states]</rosparam>
</node>
Nachdem Rviz gestartet ist, sollte sich der Ausleger entsprechend der Sensorwerte automatisch positionieren. Die Steuerung erfolg im Unterfenster Motion Planning im Reiter Planning.
Mittels Query --> Select Goal State und der Auswahl random valid kann ein gültiger Zustand des Auslegers generiert werden. Man kann so oft auf den Button Update klicken, bis eine passable Position gefunden wurde. Ein Klick auf den Button Plan berechnet die Bewegung zwischen aktueller und neuer Position. Der Button Execute führt die Bewegung dann aus indem er die Nachrichten an die multicat_hydraulic_node sendet. Der Button Plan and Execute vereint beide Schritte mit einem Klick.
Es ist möglich im Rviz Zustände des Auslegers in einer DB zu speichern und diese wiederherzustellen. Beispielsweise kann eine Mähposition und eine Fahrposition hinterlegt werden. Dafür muss eine Warehouse DB erreichbar sein. Die Multicar_moveit_config Node bringt dafür alle benötigten Komponenten mit. Es muss lediglich ein Pfad zur Datenbank angegeben werden.
Launch-Datei zum Bearbeiten öffnen
nano /home/carpc/catkin_ws/src/Multicar_moveit_config/launch/warehouse.launch
Pfad anpassen (erste Zeile durch zweite ersetzen)
<arg name="moveit_warehouse_database_path" />
<arg name="moveit_warehouse_database_path" default="$(find Multicar_moveit_config)/" />
Starten des Datenbankservers
roslaunch Multicar_moveit_config warehouse.launch
Jetzt kann ganz normal die demo.launch der Multicar_moveit_config Node gestartet werden und im Reiter Context der Connect Button zum Verbindungsaufbau mit der DB gedrückt werden.
roslaunch Multicar_moveit_config demo.launch
Im Reiter Stored States können nun Zustände gespeichert (Save Goal) und Zustände geladen (Set as Goal) werden.