git commit -m "first commit for v2"
This commit is contained in:
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/OLS_barcode_0101.bmp
Executable file
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/OLS_barcode_0101.bmp
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 9.9 KiB |
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/OLS_barcode_0102.bmp
Executable file
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/OLS_barcode_0102.bmp
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 9.9 KiB |
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/OLS_barcodes.jpg
Executable file
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/OLS_barcodes.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 112 KiB |
13
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/backlog.md
Executable file
13
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/backlog.md
Executable file
@@ -0,0 +1,13 @@
|
||||
# Backlog
|
||||
|
||||
* Makrolon bekleben nach Vorlage
|
||||
* Simulation umsetzen
|
||||
* Störungssimulation definieren (Bandbegrenztes normalverteiles Rauschen, systematischer Fehler und Aussetzer (Salt/Pepper))
|
||||
* Kidnapping-Problem mit Sick besprechen
|
||||
* Beschreibung für Setup der Simulation
|
||||
* Beschreibung der Durchführung der Simulation
|
||||
|
||||
|
||||
Merker: OLS10-Simulation
|
||||
Spg.-Versorgung 24V an OLS10 anklemmen und Linux booten (20.06.2019)
|
||||
|
||||
226
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/build_install.md
Executable file
226
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/build_install.md
Executable file
@@ -0,0 +1,226 @@
|
||||
# Build and install TurtleBot demonstration (sick_line_guidance_demo)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
To run the demonstrations, Gazebo must be installed in advance. Also the keys for the access to the ROS-Repos. must be updated.
|
||||
|
||||
```console
|
||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
|
||||
sudo apt-get update
|
||||
sudo apt-get install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control
|
||||
```
|
||||
|
||||
|
||||
## Build and install
|
||||
|
||||
To build and install the TurtleBot demonstration (sick_line_guidance_demo), run the following commands:
|
||||
|
||||
```console
|
||||
cd ~/catkin_ws/src
|
||||
git clone https://github.com/SICKAG/sick_line_guidance.git
|
||||
cd ./sick_line_guidance/turtlebotDemo/test/scripts
|
||||
./gitCloneInstall.bash
|
||||
```
|
||||
|
||||
This will install sick_line_guidance_demo and all required packages.
|
||||
Alternatively, checkout the following packages for a manual installation:
|
||||
```console
|
||||
# Get ros packages for turtlebot
|
||||
cd ~/catkin_ws/src
|
||||
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
|
||||
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
|
||||
git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
|
||||
git clone https://github.com/ros-drivers/rosserial.git
|
||||
# Get ros packages for turtlebot simulation
|
||||
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations
|
||||
git clone https://github.com/ROBOTIS-GIT/turtlebot3_gazebo_plugin.git
|
||||
# Get can_open packages
|
||||
git clone https://github.com/ros-industrial/ros_canopen.git
|
||||
git clone https://github.com/CANopenNode/CANopenSocket.git
|
||||
git clone https://github.com/linux-can/can-utils.git
|
||||
# Get sick_line_guidance package
|
||||
git clone https://github.com/ros-planning/random_numbers.git
|
||||
git clone https://github.com/SICKAG/sick_line_guidance.git
|
||||
# Get ros packages required for robot_fsm
|
||||
git clone https://github.com/uos/sick_tim.git
|
||||
# Install video support for sick_line_guidance_demo
|
||||
sudo apt-get install ffmpeg
|
||||
sudo apt-get install vlc
|
||||
# Install profiling and performance tools
|
||||
git clone https://github.com/catkin/catkin_simple.git
|
||||
sudo svn export https://github.com/ethz-asl/schweizer_messer/trunk/sm_common # common utilities from ethz-asl "schweizer messer" toolbox
|
||||
sudo svn export https://github.com/ethz-asl/schweizer_messer/trunk/sm_timing # timing utilities from ethz-asl "schweizer messer" toolbox
|
||||
sudo apt-get install google-perftools libgoogle-perftools-dev graphviz # libprofiler for profiling
|
||||
```
|
||||
|
||||
Modify file ~/.ignition/fuel/config.yaml: Replace "url: https://api.ignitionrobotics.org" by "url: https://api.ignitionfuel.org":
|
||||
```
|
||||
url: https://api.ignitionrobotics.org # https://api.ignitionfuel.org
|
||||
```
|
||||
|
||||
Build and install by running
|
||||
|
||||
```console
|
||||
cd ~/catkin_ws
|
||||
catkin_make install --cmake-args -DTURTLEBOT_DEMO="ON"
|
||||
source ./install/setup.bash
|
||||
```
|
||||
|
||||
## Run simulation
|
||||
|
||||
To test build and install, run a standalone simulation (no Turtlebot or additional hardware required):
|
||||
```console
|
||||
cd ~/catkin_ws/src/sick_line_guidance/turtlebotDemo/test/scripts
|
||||
./runsimu.bash
|
||||
```
|
||||
You should see robots positions (marked by a green dot), following the black lines:
|
||||

|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Versioncheck
|
||||
|
||||
Depending on OS, ROS and gcc versions, errors during build or run may occur. You can determine your versions by the following commands:
|
||||
```console
|
||||
cat /etc/os-release # displays the Linux distribution version
|
||||
lsb_release -a # displays the Linux/OS version (linux standard base)
|
||||
uname -a # displays the Linux kernel version
|
||||
gcc --version # displays the compiler version
|
||||
rosversion -d # displays the ros distro version
|
||||
rosversion roscpp # displays the version of ros package roscpp
|
||||
catkin --version # displays the version of catkin tools
|
||||
```
|
||||
|
||||
### Compiler and build errors
|
||||
|
||||
#### "cout is not a member of std"
|
||||
|
||||
:question: SynchCout.h: "error: cout is not a member of std" in package decision_making:
|
||||
|
||||
:white_check_mark: Include \<iostream\> in file ~/catkin_ws/src/decision_making/decision_making/include/decision_making/SynchCout.h
|
||||
|
||||
#### "cmake: project 'XXX' tried to find library -lpthread"
|
||||
|
||||
:question: cmake fails with error: "Project 'XXX' tried to find library '-lpthread'":
|
||||
|
||||
:white_check_mark: delete component 'thread' from find_package(Boost ... COMPONENTS ...) in CMakeLists.txt of project 'XXX'
|
||||
|
||||
#### "include does not exist""
|
||||
|
||||
:question: "CMake Error at /opt/ros/melodic/share/catkin/cmake/catkin_package.cmake:302 (message): catkin_package() include dir include does not exist"
|
||||
|
||||
:white_check_mark: Uncommment ~/catkin_ws/src/robot_fsm/gpio_handling/CMakeLists.txt line 30 (#INCLUDE_DIRS include)
|
||||
|
||||
#### "No launch file Robot_FSM.launch"
|
||||
|
||||
:question: "RLException: \[Robot_FSM.launch\] is neither a launch file in package \[iam\] nor is \[iam\] a launch file name"
|
||||
|
||||
:white_check_mark: Append the following lines in ~/catkin_ws/src/robot_fsm/iam/CMakeLists.txt
|
||||
```
|
||||
install(FILES
|
||||
launch/Robot_FSM.launch
|
||||
yaml/AGC.yaml
|
||||
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
|
||||
)
|
||||
```
|
||||
|
||||
#### "Could NOT find urdf"
|
||||
|
||||
:question: cmake error "Could NOT find urdf":
|
||||
```
|
||||
-- ==> add_subdirectory(turtlebot3/turtlebot3_description)
|
||||
-- Could NOT find urdf (missing: urdf_DIR)
|
||||
-- Could not find the required component 'urdf'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
|
||||
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
|
||||
Could not find a package configuration file provided by "urdf" with any of the following names:
|
||||
urdfConfig.cmake
|
||||
urdf-config.cmake
|
||||
Add the installation prefix of "urdf" to CMAKE_PREFIX_PATH or set
|
||||
"urdf_DIR" to a directory containing one of the above files. If "urdf"
|
||||
provides a separate development package or SDK, be sure it has been
|
||||
installed.
|
||||
Call Stack (most recent call first):
|
||||
turtlebot3/turtlebot3_description/CMakeLists.txt:10 (find_package)
|
||||
```
|
||||
|
||||
:white_check_mark: Update ros dependencies by
|
||||
```
|
||||
cd ~/catkin_ws
|
||||
rosdep update
|
||||
rosdep install --from-paths ~/catkin_ws/src/turtlebot3 --ignore-src
|
||||
rosdep install --from-paths ~/catkin_ws/src/ros_canopen --ignore-src
|
||||
catkin_make install
|
||||
```
|
||||
|
||||
### Runtime errors
|
||||
|
||||
#### "Resource not found: IAM"
|
||||
|
||||
:question: "roslaunch iam Robot_FSM.launch" causes "Resource not found: IAM"
|
||||
|
||||
:white_check_mark: Modify paths in ~/catkin_ws/src/robot_fsm/iam/launch/Robot_FSM.launch :
|
||||
replace \<rosparam command="load" file="$(find IAM)/yaml/AGC.yaml"/\> by \<rosparam command="load" file="$(find iam)/AGC.yaml"/\> and
|
||||
replace \<include file="$(find sick_line_guidance)/launch/sick_line_guidance.launch"\> by \<include file="$(find sick_line_guidance)/sick_line_guidance.launch"\>
|
||||
|
||||
#### "libdecision_making_ros.so: No such file or directory"
|
||||
|
||||
:question: "catkin_ws/install/lib/iam/robot_fsm: error while loading shared libraries: libdecision_making_ros.so: cannot open shared object file: No such file or directory"
|
||||
|
||||
:white_check_mark: Uncomment line 181-185 in file ~/catkin_ws/src/decision_making/decision_making/CMakeLists.txt:
|
||||
```
|
||||
install(TARGETS decision_making_ros # decision_making decision_making_node
|
||||
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
||||
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
||||
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
|
||||
)
|
||||
```
|
||||
|
||||
#### "invalid topic type: OLS_Measurement"
|
||||
|
||||
:question: "ERROR: invalid topic type: OLS_Measurement" when sending an OLS_Measurement message to robot_fsm
|
||||
|
||||
:white_check_mark: Package iam (part of the robot_fsm) redefines message type OLS_Measurement. Message type iam/OLS_Measurement may differ from OLS_Measurement
|
||||
definition in package sick_line_guidance. To avoid OLS_Measurement type conflicts, only OLS_Measurement messages defined in sick_line_guidance should be used.
|
||||
Replace iam::OLS_Measurement by sick_line_guidance::OLS_Measurement in the following files:
|
||||
|
||||
```
|
||||
// replace iam::OLS_Measurement by sick_line_guidance::OLS_Measurement in file catkin_ws/src/robot_fsm/iam/include/iam/robot_fsm.h:
|
||||
#include "sick_line_guidance/OLS_Measurement.h" // line 14: "iam/OLS_Measurement.h"
|
||||
void olsCallback(const sick_line_guidance::OLS_Measurement::ConstPtr& msg); // line 84: void olsCallback(const iam::OLS_Measurement::ConstPtr& msg);
|
||||
sick_line_guidance::OLS_Measurement::Type ols_msg; // line 99: iam::OLS_Measurement::Type ols_msg;
|
||||
|
||||
// replace iam::OLS_Measurement by sick_line_guidance::OLS_Measurement in file catkin_ws/src/robot_fsm/iam/src/robot_fsm.cpp:
|
||||
void olsCallback(const sick_line_guidance::OLS_Measurement::ConstPtr& msg){ // line 498: void olsCallback(const iam::OLS_Measurement::ConstPtr& msg){
|
||||
|
||||
// deactivate iam::OLS_Measurement in add_message_files(...) in file catkin_ws/src/robot_fsm/iam/CMakeLists.txt:
|
||||
# OLS_Measurement.msg
|
||||
```
|
||||
|
||||
#### "turtlebot3_gazebo: Error in REST request"
|
||||
|
||||
:question: "roslaunch turtlebot3_gazebo turtlebot3_world.launch" results in error message
|
||||
"\[Err\] \[REST.cc:205\] Error in REST request libcurl: (51) SSL: no alternative certificate subject name matches target host name 'api.ignitionfuel.org'"
|
||||
|
||||
:white_check_mark: Replace url: https://api.ignitionrobotics.org by https://api.ignitionfuel.org in file ~/.ignition/fuel/config.yaml:
|
||||
```
|
||||
url: https://api.ignitionrobotics.org # https://api.ignitionfuel.org
|
||||
```
|
||||
|
||||
#### "turtlebot3_gazebo: VMware: vmw_ioctl_command error Invalid argument. Aborted (core dumped)"
|
||||
|
||||
:question: "roslaunch turtlebot3_gazebo turtlebot3_world.launch" results in a core dump with an error message
|
||||
"VMware: vmw_ioctl_command error Invalid argument. Aborted (core dumped)"
|
||||
|
||||
:white_check_mark: Uncheck "Accelerate 3D Graphics" in VMware settings and set
|
||||
```console
|
||||
export SVGA_VGPU10=0
|
||||
export LIBGL_ALWAYS_SOFTWARE=1
|
||||
```
|
||||
before launching turtlebot3_gazebo.
|
||||
|
||||
|
||||
#### Connect to bot:
|
||||
```console
|
||||
ssh turtlebot@192.168.178.45
|
||||
```
|
||||
ps turtlebot3
|
||||
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/demo_map.pptx
Executable file
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/demo_map.pptx
Executable file
Binary file not shown.
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/demo_map_01.png
Executable file
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/demo_map_01.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 58 KiB |
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/demo_map_02.png
Executable file
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/demo_map_02.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
77
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/faq.md
Executable file
77
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/faq.md
Executable file
@@ -0,0 +1,77 @@
|
||||
# Interne Sammlung von FAQ
|
||||
|
||||
## Zugriff auf Turtlebot über WLAN-Lehning
|
||||
|
||||
Der Zugriff erfolgt über SSH per WLAN. Der Turtlebot holt sich via DHCP (eigentlich) immer dieselbe IP-Adresse.
|
||||
Deswegen wurde vorerst auf Static-IP verzichtet.
|
||||
Die IP-Adresse lautet: 192.168.178.45
|
||||
|
||||
Mit dem Zugriff über
|
||||
|
||||
```bash
|
||||
ssh -X turtlebot@192.168.178.45
|
||||
```
|
||||
|
||||
kann die Remote-Verbindung zum Roboter aufgebaut werden.
|
||||
|
||||
|
||||
## PC:
|
||||
|
||||
PC-Typ: Ist es der Typ „EC700-BT4051-454-64WT“, den Sie in Ihrer Master-Arbeit erwähnen? -> Ja
|
||||
Ist ein Account/Ubuntu eingerichtet? -> Ja
|
||||
Annahme: Ubuntu: 18.04 Betriebssystem mit der ROS-Distribution ROS-Melodic -> Richtig
|
||||
Wenn „Ja“: Username und Passwort? -> Username: turtlebot, Passwort: turtlebot3
|
||||
Kann man den PC mit einem der beigefügten Netzteile betreiben? -> Könnte man theoretisch. Ich würde Ihnen empfehlen den Stecker (roter Pfeil) einzustecken. (Aufgrund der Länge passt er nur in die auf dem Bild rechte Buchse). Dazu können Sie das Netzteil für die Powerbank in die linke Buchse einstecken. Dann haben Sie einen "quasi Netzbetrieb".
|
||||
|
||||
## TiM:
|
||||
|
||||
Eingestellte IP-Adresse? -> Am TiM habe ich nichts konfiguriert. Daher müsste noch die Standard-IP-Adresse konfiguriert sein.
|
||||
|
||||
## Spg.-Versorgung:
|
||||
|
||||
Batterie wird mit dem Standardnetzteil aufgeladen? Blauer Pfeil? -> Richtig
|
||||
Spg.-Versorgung zum PC erfolgt einfach durch Einstecken des Hohlsteckers in die Batterie? (roter Pfeil) -> Korrekt
|
||||
|
||||
|
||||
## Miniatur-Lichtschranken:
|
||||
|
||||
Ich nehme an, dass die Miniatur-Lichtschranken von Typ "GL2S- E1311" sind (vgl. Masterarbeit) -> korrekt
|
||||
Sind die Lichtschranken an das OpenCR-Board wie in der Masterarbeit angeschlossen? -> Auf dem "Version 0" Dokument, das Sie haben finden Sie auf Seite 16 die Abbildung 5.1. Die Sensoren sind wie dort abgebildet am OpenCR-Board angeschlossen. Die Einweglichtschranken (GRSE18S) sind auf Ihrem Turtlebot jedoch nicht vorhanden. Zwischen dem Schaltausgang der Miniatur-Lichtschranken GL2S-E1311 und dem GPIO-Pin befindet sich noch ein Serienwiderstand von 57k, um die Spannung an den GPIO-Pins auf 3,3V anzupassen (Thesis S. 20 Abb. 5.6).
|
||||
|
||||
|
||||
## Allgemein:
|
||||
|
||||
Sollte ich beim Laden, Betreiben etc. auf irgendetwas besonders achten? -> Ich habe in dem Git-Repo, in dem ich Sie als Collaborator hinzugefügt habe eine Readme.md erstellt. Mit dieser Datei könnte es Ihnen evtl. etwas leichter fallen, das System -- so wie ich es immer in Betrieb genommen habe -- in Betrieb zu nehmen.
|
||||
|
||||
## Herunterfahren
|
||||
|
||||
```bash
|
||||
sudo shutdown -h now
|
||||
# Alternativ:
|
||||
sudo init 0
|
||||
```
|
||||
|
||||
## Turtlebot: USB stick mounten
|
||||
|
||||
```bash
|
||||
# list all devices:
|
||||
sudo fdisk -l
|
||||
# usbstick-device finden , z.B. /dev/sdb1
|
||||
sudo mkdir /media/usbstick
|
||||
# usb stick mounten, /dev/sdb1 ggfs ersetzen
|
||||
sudo mount -t vfat /dev/sdb1 /media/usbstick -o uid=1000,gid=1000,utf8,dmask=027,fmask=137
|
||||
# usb stick gemounted unter /media/usbstick:
|
||||
ls /media/usbstick
|
||||
```
|
||||
|
||||
## Turtlebot: Filetransfer mit scp
|
||||
|
||||
```bash
|
||||
# ros logfiles mit scp vom Turtlebot in ein lokales Verzeichnis auf dem Linux-Rechner kopieren:
|
||||
rostest@ROS-NB:
|
||||
mkdir -p ~/tmp
|
||||
cd ~/tmp
|
||||
scp -r turtlebot@192.168.178.45:/home/turtlebot/.ros/log scp -r turtlebot@192.168.178.45:/home/turtlebot/catkin_ws/src/sick_line_guidance/turtlebotDemo/test/scripts/log .
|
||||
# scp -r turtlebot@192.168.178.45:/home/turtlebot/.ros/log .
|
||||
# scp -r turtlebot@192.168.178.45:/home/turtlebot/catkin_ws/src/sick_line_guidance_demo/test/scripts/log .
|
||||
```
|
||||
69
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/inbetriebnahme.md
Executable file
69
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/inbetriebnahme.md
Executable file
@@ -0,0 +1,69 @@
|
||||
# Inbetriebnahme
|
||||
|
||||
Die vorliegende Anleitung zeigt die Inbetriebnahme der Hardware für den Turtlebot.
|
||||
|
||||
Ausführliche Details findet man unter:
|
||||
https://github.com/tsprifl/catkin_src
|
||||
|
||||
# Lager
|
||||
Der Turtlebot und die Unterlagen (neben Ladegerät etc.) lagen im Labor in den Kisten <todo>
|
||||
# Schritte
|
||||
|
||||
1. Powerverbindung mit XTPower-Akku herstellen.
|
||||
2. Ggf. Ladegerät "XTPower TurtleBot Sick" anschließen.
|
||||
3. Gerät startet
|
||||
4. Gerät mit Monitor (HDMI an der Frontseite) und USB über HUB mit Tastatur und Maus verbinden.
|
||||
5. Bei Sick wurde das Gerät hinter einem Proxy betrieben. Der ROS-Master lief auf einem Remote-PC.
|
||||
Möchte man bei SICK eine Demo starten, muss man den Proxy gemäß Proxy Config einstellen.
|
||||
6. ROS-Master: Bei einer lokalen Entwicklung auf dem System ROS_MASTER und ROS_HOSTNAME gem. u.a. config eingestellt werden.
|
||||
Für eine Remote-Verbindung muss die IP-Adresse etc. für Remote-Rechner mit laufendem Ros-Core bekannt sein.
|
||||
(siehe u.a. Punkte)
|
||||
7. Nun der o.a. Anleitung folgen (ACHTUNG: In der Anleitungen befinden sich Fehler. Siehe "Start des Bots". Statt
|
||||
"rosrun iam" muss man "roslaunch iam Robot_FSM.launch" angeben (s.u.).
|
||||
In Kurzform:
|
||||
* Terminator: 4 Terminalfenstser starten
|
||||
* Terminal 1: roslaunch turtlebot3_bringup turtlebot3_robot.launch
|
||||
* Terminal 2: ols
|
||||
* Terminal 3: rosrun gpio_handling gpio_handler
|
||||
* Terminal 4: rosparam load ~/catkin_ws/src/iam/yaml/AGC.yam
|
||||
* Terminal 4 (erneut): roslaunch iam Robot_FSM.launch
|
||||
|
||||
8. Spurführungsband verlegen bzw. Robot auf Demo-System setzen.
|
||||
9. terminator starten
|
||||
|
||||
## Proxy Config
|
||||
* Bei Lehning : keine
|
||||
* Bei Sick :
|
||||
* Host/Port: cloudproxy-sickag.sickcn.net:10415
|
||||
* Details siehe:
|
||||
* Webproxy: https://wiki.ubuntuusers.de/Proxyserver/#Unity-und-GNOME-3
|
||||
* apt proxy: https://askubuntu.com/questions/257290/configure-proxy-for-apt
|
||||
|
||||
## ros config remote/local master
|
||||
IP Config Bash RC
|
||||
In der Datei ~/.bashrc muss die IP-Adresse des Ros-Master (Remote-PC), sowie die IP-Adresse des Turtlebots eingetragen werden. (Ändern der letzten beiden Zeilen).
|
||||
für lokalen master 127.0.0.1
|
||||
export ROS_MASTER_URI=http://127.0.0.1:11311
|
||||
export ROS_HOSTNAME=127.0.0.1
|
||||
|
||||
## Start des Bots
|
||||
|
||||
Für jedes Terminal wie gewohnt:
|
||||
```console
|
||||
cd catkin_ws
|
||||
source devel/setup.bash
|
||||
```
|
||||
|
||||
Bei Punkt 6:
|
||||
statt
|
||||
```console
|
||||
rosrun iam
|
||||
```
|
||||
```console
|
||||
roslaunch iam Robot_FSM.launch
|
||||
```
|
||||
|
||||
siehe Anleitung unter
|
||||
https://github.com/tsprifl/catkin_src
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# Properties of OLS line guidance sensor for sick_line_guidance_demo
|
||||
|
||||
The OLS sensor on the demo system is mounted 65 mm over ground. Both line distances (lcp, line center points) and line width measured by the sensor
|
||||
depend on its height over ground. LineSensorConfig configures a scaling between sensor measurement and physical world:
|
||||
|
||||
| parameter | default value | details |
|
||||
| --- | --- | --- |
|
||||
| line_sensor_scaling_dist | 180.0 / 133.0 | Scaling between physical distance to the line center and measured line center point, depending on mounted sensor height (measurement: lcp = 180 mm, physical: lcp = 133 mm) |
|
||||
| line_sensor_scaling_width | 29.0 / 20.0 | Scaling between physical line width (20 mm) and measured line width (29 mm), depending on mounted sensor height (sensor mounted 100 mm over ground: scaling = 1, sensor mounted 65 mm over ground: scaling = 100/65 = 1.5) |
|
||||
|
||||
|
||||
## Line distance scaling
|
||||
|
||||
Line center points measured with the demo system (OLS mounted 65 mm over ground):
|
||||
|
||||
| lcp measured | physical line distance | scaling |
|
||||
| --- | --- | --- |
|
||||
| 180 mm | 133 mm | 180/133 = 1.35 |
|
||||
|
||||
Line offset: The sensor is not completely centered. If the sensor is centered over the right side of the line,
|
||||
a line center point with value 0 is detected.
|
||||
|
||||
## Line width scaling
|
||||
|
||||
Line width measured with the demo system (OLS mounted 65 mm over ground):
|
||||
|
||||
| angle | measured width | physical width | scaling |
|
||||
| --- | --- | --- | --- |
|
||||
| 0 degree | 29 mm | 20 mm | 29/29 = 1.45 |
|
||||
| 45 degree | 43 mm | 28 mm | 43/28 = 1.52 |
|
||||
| max. | 75 mm | | |
|
||||
|
||||
## Line switching at junctions
|
||||
|
||||
Lines detected by the sensor can switch at junctions depending on robots movement. When taking the left turnout, the left line will become the center line
|
||||
and the previous main line will become the right line.
|
||||
|
||||
The following line switches were observed under a test of the demo system:
|
||||
|
||||
Sensor moves from left to right at a junction (2 lines, lcp\[0\], lcp\[1\], lcp\[2\] measured in mm):
|
||||
|
||||
| lcp\[0\] | lcp\[1\] | lcp\[2\] | description |
|
||||
| --- | --- | --- | --- |
|
||||
| - | 88 | - | start, one line visible |
|
||||
| - | 0 | 46 | switched to 2 lines, when sensor in the center of left line |
|
||||
| -32 | 12 | - | next line switch |
|
||||
|
||||
Sensor moves from right to left at a junction (2 lines, lcp\[0\], lcp\[1\], lcp\[2\] measured in mm):
|
||||
|
||||
|
||||
## Line detection at barcodes
|
||||
|
||||
If a barcode is placed over the line, lines are detected in different ways:
|
||||
1. There are no lines detected within the lower textzone (the area with human readable numbers).
|
||||
2. Within the label zone (machine readable barcode label), a line with a width of round about the barcode is detected (line width >= 80 mm).
|
||||
3. If the yaw angle between barcode and sensor is above 30 degrees, two or three lines are detected with small width (i.e. the markers are detected as lines).
|
||||
4. No lines are detected within the small upper gap between the label area and the upper barcode border.
|
||||
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/planung_demo.pptx
Executable file
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/planung_demo.pptx
Executable file
Binary file not shown.
46
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/setup_turtlebot.md
Executable file
46
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/setup_turtlebot.md
Executable file
@@ -0,0 +1,46 @@
|
||||
Hostname des Turtlebots: turtlebot
|
||||
Password: turtlebot3
|
||||
|
||||
|
||||
Setup:
|
||||
|
||||
Zunächst muss sich der Turtlebot im gleichen Netz wie der Remote-PC befinden. Im Auslieferungszustand wird sich der EC700-BT Rechner in ein WLAN mit der SSID "Ubuntu-Hotspot" mit dynamischer IP einloggen, da dies meine Konfiguration war.
|
||||
Die Empfehlung ist, bei der ersten Inbetriebnahme Maus und Tastatur am hinteren Ende des AGC, sowie HDMI-Kabel vorne neben dem OLS20 in den Rechner einzustecken. Dann kann manuell ein WLAN-Netzwerk gespeichert werden, in welches sich der Rechner nach dem booten einloggt (vorzugsweise mit fester IP-Adresse).
|
||||
|
||||
In der Datei ~/.bashrc muss die IP-Adresse des Ros-Master (Remote-PC), sowie die IP-Adresse des Turtlebots eingetragen werden. (Ändern der letzten beiden Zeilen).
|
||||
|
||||
Nachdem sichergestellt ist, dass sich der Turtlebot-PC beim Neustart in das gewünschte Netz einloggt, kann Maus, Tastatur und HDMI-Kabel abgezogen werden und der Turtlebot-PC neu gestartet werden.
|
||||
|
||||
|
||||
Damit im folgenden Abschnitt nicht bei jeder ssh-Verbindung das Password eingegeben werden muss, empfielt es sich, am Remote-PC ein rsa-key zu generieren und diesen auf dem Turtlebot-PC zu speichern. Dazu auf dem Remote-PC folgende Befehle ausführen:
|
||||
$ ssh-keygen -t rsa #Den Key ohne Password durch zweimaliges drücken von Enter speichern.
|
||||
$ ssh-copy-id -i ~/.ssh/id_rsa.pub turtlebot@Turtlebot-IP-Adresse
|
||||
|
||||
|
||||
Starten der Robot-Fsm:
|
||||
|
||||
1. Turtlebot an Powerbank einstecken und ca. 1 min warten, bis sich der Turtlebot-PC in das konfigurierte Netzwerk eingeloggt hat.
|
||||
|
||||
2. roscore vom Remote-PC aus starten.
|
||||
|
||||
3. Konsolenfenster öffnen und eine ssh-Verbindung zum Turtlebot-PC erstellen. Anschließend zum OpenCR-Board verbinden. Dies geschieht Normalerweise durch den Befehl "roslaunch turtlebot3_bringup turtlebot3_robot.launch". Der Befehl ist jedoch durch den Kurzbefehl "rl" hinterlegt. Somit folgende Befehle ausführen:
|
||||
$ ssh turtlebot@IP-Adresse #Danach besteht das Konsolenfenster auf dem Turtlebot-PC
|
||||
$ rl # Am Anfang wird ein Fehler auftauchen, da der Standard-Laserscanner nicht verbunden ist. Der Fehler kann ignoriert werden.
|
||||
|
||||
4. Konsolenfenster öffnen und eine ssh-Verbindung zum Turtlebot-PC erstellen. Anschließend den ols-Treiber starten. Dies geschieht Normalerweise durch den Kurzbefehl "ols". Dieser konfiguriert die can0-Schnittstelle und führt das sick_line_guidance launch-file mit dem ols-yaml-file aus. Somit folgende Befehle ausführen:
|
||||
$ ssh turtlebot@IP-Adresse #Danach besteht das Konsolenfenster auf dem Turtlebot-PC
|
||||
$ ols
|
||||
|
||||
5. Die gpio-handler Node vom Remote-PC aus starten:
|
||||
$ rosrun gpio_handling gpio_handler
|
||||
|
||||
### ACHTUNG: Beim ausführen der nächsten Befehle wird sich der Turtlebot geradeaus bewegen. ###
|
||||
6. Das yaml-Parameter-File für die robot-fsm-Node laden und anschließend die Node starten:
|
||||
$ rosparam load ~/catkin_ws/src/iam/yaml/AGC.yaml
|
||||
$ rosrun iam
|
||||
|
||||
7. Durch starten der Teleop-Node kann der Turtlebot gestoppt werden.
|
||||
(Achtung hier publishen nun zwei Nodes auf dem gleichen Topic (cmd_vel). Deshalb muss die robot_fsm Node kurz nach dem starten der teleop-Node mit strg+c beendet werden):
|
||||
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch # Durch drücken der Taste s auf der Tastatur, kann der Turtlebot sofort gestoppt werden.
|
||||
|
||||
Der Turtlebot fährt nun geradeaus. Wird eine Linie erkannt erfolgt ein Wechsel in den State follow_line. Der Turtlebot folgt der Linie. Geht die Linie verloren, wird der Turtlebot nach 1 Sekunde stoppen.
|
||||
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/simu01.jpg
Executable file
BIN
Devices/Packages/sick_line_guidance/turtlebotDemo/doc/simu01.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
Reference in New Issue
Block a user