Ich würde gerne den IOTBot mit RViz und Nav2 benutzen aber bei der Einrichtung von Rviz auf dem Host PC (Ubuntu VM) bekomme ich diesen fehler:
tim@TP-Ubuntu:~$ ros2 launch edu_robot_control eduard_monitor.launch.py
[INFO] [launch]: All log files can be found below /home/tim/.ros/log/2024-01-03-14-34-55-284871-TP-Ubuntu-23602
[INFO] [launch]: Default logging verbosity is set to INFO
use robot name = eduard
use wheel type = mecanum
use robot name = eduard
use wheel type = mecanum
[ERROR] [launch]: Caught exception in launch (see debug for traceback): substitution args not supported: No module named 'roslaunch'
da ich diesen Fehler noch nicht gesehen habe und nicht sehr tief im Code stecke wird sich mein Kollege gleich morgen Früh um dein Problem kümmern. Zu Nav2 gebe ich dir schonmal den Tipp, dass du für den Anfang ggf. Nav2 auf deinem PC laufen lässt, da das IOT2050 in der Performance begrenzt ist. Es ist möglich mit etwas Arbeit die Auswertung der Daten so schlank zu gestalten, dass es auch auf dem IOT2050 laufen müsste
für mich sieht das nach einen Python Error aus, der aus einem der Launch Files kommt. Das sollte nicht passieren. Ist die setup.bash von der ROS2 Installation ge-sourced? In der Regel “source /opt/ros/humble/setup.bash” in der .bashrc.
Eine Frage zu dem IoT Bot. Ist der von EduArt direkt oder von Deiner Firma? Weil es auch eine ROS2 Software Installation gibt die nicht von EduArt kommt, die nicht mit dem “edu_robot_control” kompatibel ist. Dies kannst Du einfach erkennen, wenn beim Laden des Roboters die LEDs grün blinken, dann ist die Software von EduArt und kompatibel zu dem “edu_robot_control”.
Wenn die Software von EduArt ist, dann bitte noch den Namespace berücksichtigen. Den bekommt man über die Topics raus. Hierzu bitte einfach mit dem Befehl “ros2 topic list” die Topics anzeigen. Es sollte “eduard/<farbe>/” am Anfang der Topics stehen. Das ist dann der Namespace, der mitgegeben werden muss beim ros2 launch Befehl:
ich wollte heute das nochmal sauber von vorne probieren dabei habe ich diesen Fehler bekommen:
tim@TP-Ubuntu:~$ mkdir -p ~/ros2_iotbot/src
cd ~/ros2_iotbot/src
tim@TP-Ubuntu:~/ros2_iotbot/src$ ls
tim@TP-Ubuntu:~/ros2_iotbot/src$ git clone https://github.com/EduArt-Robotik/edu_robot_control.git
Cloning into 'edu_robot_control'...
remote: Enumerating objects: 441, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 441 (delta 4), reused 4 (delta 4), pack-reused 434
Receiving objects: 100% (441/441), 3.90 MiB | 1.89 MiB/s, done.
Resolving deltas: 100% (220/220), done.
tim@TP-Ubuntu:~/ros2_iotbot/src$ ls
edu_robot_control
tim@TP-Ubuntu:~/ros2_iotbot/src$ ls^C
tim@TP-Ubuntu:~/ros2_iotbot/src$ colcon build --packages-select edu_robot_control
Starting >>> edu_robot_control
--- stderr: edu_robot_control
CMake Error at CMakeLists.txt:13 (find_package):
By not providing "Findedu_robot.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"edu_robot", but CMake did not find one.
Could not find a package configuration file provided by "edu_robot" with
any of the following names:
edu_robotConfig.cmake
edu_robot-config.cmake
Add the installation prefix of "edu_robot" to CMAKE_PREFIX_PATH or set
"edu_robot_DIR" to a directory containing one of the above files. If
"edu_robot" provides a separate development package or SDK, be sure it has
been installed.
---
Failed <<< edu_robot_control [4.39s, exited with code 1]
Summary: 0 packages finished [6.59s]
1 package failed: edu_robot_control
1 package had stderr output: edu_robot_control
tim@TP-Ubuntu:~/ros2_iotbot/src$
ich folge der Anleitung aus Github: Link und möchte eine RViz Connection zwischen dem Roboter und der VM aufbauen
vielleicht kannst du mit dabei weiter helfen!
P.S. ich habe die Edu_Robot Software instaliert keine von meiner Firma ;D
Hey Tim,
Es sieht aus als wäre dein Workspace mit edu_robot nicht gesourcet worden
Probiers mal mit edu_robot und edu_robot_control im selben Workspace, dann musst du dir keine Gedanken um richtig sourcen machen
Zu den Ursprünglichen Problem:
Ich hänge mich an, dass das aussieht als wäre ROS nicht richtig gesourcet worden, vor allem weil ‘roslaunch’ zu ROS1 gehört.
Hast du ROS1 und ROS2 gleichzeitig installiert?
Wenn ja, wird ROS1 automatisch gesourcet?
auf github hatte jemand einen ähnlichen Error, und die Antwort war “ros2 launch” - nicht mehr
ich habe auf der VM nur ROS2 installiert. Könntest du mir vielleicht ein Tipp geben wo ich das ros lunchin Ros2 luch änderen kann aktuell nach der Neueinrichtung bekomme ich beim launch diese meldung:
tim@TP-Ubuntu:~/ros2_iotbot/src$ EDU_ROBOT_NAMESPACE=eduard/red ros2 launch edu_robot_control eduard_monitor.launch.py
[INFO] [launch]: All log files can be found below /home/tim/.ros/log/2024-01-09-09-09-46-569668-TP-Ubuntu-5980
[INFO] [launch]: Default logging verbosity is set to INFO
use robot name = eduard/red
use wheel type = mecanum
use robot name = eduard/red
use wheel type = mecanum
[ERROR] [launch]: Caught exception in launch (see debug for traceback): substitution args not supported: No module named 'roslaunch'
also kein neuen fehler zu oben
habe wie in der Anleitung die Packete mit colcon build --packages-select edu_robot_control --symlink-install
wenn ich dann aber die Topic List ausgebe bekomme ich nur diese:
tim@TP-Ubuntu:~/ros2_iotbot/src$ ros2 topic list
/parameter_events
/rosout
Bitte verwende dann die Doku von diesem Repo. Dort ist auch die Verwendung von edu_robot_control beschrieben. Die Doku von edu_robot_control ist gerade in Überarbeitung.
Das ist wirklich sehr komisch mit dem “roslaunch” Fehler. Ich könnte Dir anbieten gerne zusammen auf den Fehler zu schauen. Schreibe mir gerne zwei Terminvorschläge an christian.wendt@eduart-robotik.com, dann können wir via Teams den Fehler analysieren.
Ein weiterer Punkt, denn wir klären könnten, ist das Problem das Du keine topics des Roboters siehst. Hier liegt das Problem höchst Wahrscheinlich an den Netzwerkeinstellungen. ROS2 muss UDP multicast empfangen können. Dafür muss der Netzwerkadapter in bridged konfiguriert sein.
Dann bin ich auch ratlos was dieser Fehler sein könnte, der ist wirklich seltsam und bei mir auch noch nie erschienen.
Ich denke mal es wird an der ROS installation liegen.
Aber ROS in Docker (oder Podman) zu benutzen kann ich nur empfehlen!
Hier ist eine Anleitung zur Podman/Docker Installation von edu_robot und edu_robot_control, inklusive x11 hack, damit du GUIs aus dem Container nutzen kannst. Einfach den ganzen Container-teil auf einmal copy-pasten
# use clean install (container with X11 hack)
(podman/docker) run -it --net=host --env=DISPLAY --privileged -v=$HOME/.Xauthority:/root/.Xauthority -v=/tmp/.X11-unix:/tmp/.X11-unix --name=ros2-eduart ros:humble
# you may need to `docker pull docker.io/ros:humble` to get the container image first!
##### IN CONTAINER #####
# Install dependencies & rviz
apt update
apt install ros-humble-diagnostic-updater ros-humble-rviz2 ros-humble-xacro -y
# Create Workspace directory
mkdir -p ~/eduart-ws/src
cd ~/eduart-ws/src
# Get source code
git clone https://github.com/EduArt-Robotik/edu_robot
git clone https://github.com/EduArt-Robotik/edu_robot_control
# Build project
cd ..
colcon build --symlink-install # no package-select because we need to build `edu_robot` too!
# Set up automatic source-ing on login and trigger it
echo "source ~/eduart-ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
Es ist möglich, dass dein .Xauthority wo anders ist.
Du kannst mit `xauth info` (nicht im container) herausfinden wo sie ist,
und dann einfach den podman/docker Command anpassen
# z.B. mit einem neuen, temporären container (recommended)
podman run -it --net=host --rm ros:humble ros2 topic list
# oder im container wo bereits rviz läuft
podman exec -it ros2-eduart bash
> ros2 topic list # = im container
# oder wie gewohnt auf jeder ROS-Installation im selben Netzwerk