TurtleBot3 Waffle Pi with RPLidar A1M8

Hello,
the laser on my TurtleBot3 Waffle Pi has died. Therefore I have mounted a RPLidar A1M8. Installed the software that goes with it. Node works without errors. Can also read it with my Python program.

But, I start the launch from the RPLidar I can only find the RPLidar as node. If I start the launch for the Waffle Pi or both I have no laser.

What adjustments are needed to use the RPLidar in the Waffle Pi without having to do without all the other sensors/motors.

greetings
citkid

Hi,
You actually have to add the LIDAR in your URDF so that it gets its transform published and than you can see the LIDAR data in RVIZ and than everything should work properly.

Hello Tahir,
I don’t know anything about Linux or ROS. Can you write me what exactly the file is called, where I can find it and what exactly I need to change in it.
Thanks
citkid

Hi Citkid,

Most probably you have to update the URDF file here. In case you are not able to solve please record rosbag and share.

An alle Leser im Forum!
Warum habe ich mich so lange nicht gemeldet? Nicht weil ich mit der Antwort etwas anfangen konnte. Nein, weil ich jemanden gesucht habe, der mit der Antwort etwas anfangen kann. Leider habe ich niemanden gefunden. Was das über die Qualität der Antwort aussagt? Das könnt ihr euch sicherlich selbst ganz gut vorstellen.
Leider habe ich von dem Vertreiber und wohl auch Erfinder des Turtlebot bis heute keine brauchbaren Hilfen bekommen können. Selbst als diese Leute mir ein ROS-System auf meinen Computer gespielt haben, konnte ich diesen nicht nutzen, weil beim Versuch mit eigener Software den Turtlebot anzusprechen, Meldungen für Nach-Installationen kamen, die von mir als Neuling in Linux und ROS nicht machbar sind. Also hat mir ein Student in viel kürzerer Zeit ein voll funktionsfähiges System aufgespielt.
Damit habe jetzt ein fast vollständiges Roboterprogramm erstellt. Der Roboter kann alles was er soll, wenn ihm keine beweglichen Objekte in die Quere kommen. Bewegliche Objekte kann ich nicht mehr integrieren, weil ich den neuen viel besseren Laser nicht in den Turtlebot integriert bekomme.
Der Hersteller kann mit seinem Turtlebot und der ROS-Software zwar spielen, aber leider keine brauchbare/verständliche Hilfe bei Umbauten am Turtlebot bieten. Somit bin ich leider gezwungen meinem Kunden zu sagen: „Ich kann dir zwar eine funktionierende Software liefern, aber keinen funktionierenden Roboter.“

Nachwort:
Warum soll ein anderer Laser in den Turtlebot? Weil der originale Laser kaputt gegangen ist und so wie so keine brauchbare Genauigkeit geliefert hat. FĂĽr den gleichen Preis wie das Original im Austausch kosten soll, habe ich ein besseren Laser gefunden. Nur kann ihn keiner in den Turtlebot integrieren. Nun kann ich entweder mit dem Laser arbeiten oder ĂĽber die Turtlebot-Integration alles andere ohne Laser ansprechen. Das ist nicht mal als Spielzeug zu gebrauchen.

Laserinformationen zur Genauigkeit:
Original = nach wenigen Metern liegt das Hindernis irgendwo bei ± 40 cm.
Ersatz = bei gleicher Entfernung liegt das Hindernis irgendwo bei ± 3 cm.

To all readers in the forum!
Why have I not contacted you for so long? Not because I could do something with the answer. No, because I was looking for someone who could do something with the answer. Unfortunately, I have not found anyone. What does that say about the quality of the answer? You can certainly imagine that for yourselves.
Unfortunately, I have not been able to get any useful help from the distributor and probably also inventor of the Turtlebot until today. Even when they installed a ROS system on my computer, I couldn’t use it, because when I tried to access the Turtlebot with my own software, I got messages for post-installations, which are not feasible for me as a newbie in Linux and ROS. So a student installed a fully functional system in much less time.
With this I have now created an almost complete robot program. The robot can do everything it is supposed to do, if no moving objects get in its way. I can’t integrate moving objects anymore because I can’t get the new much better laser integrated into the Turtlebot.
The manufacturer can play with his Turtlebot and the ROS software, but unfortunately can’t offer any useful/understandable help with modifications to the Turtlebot. Thus, I am unfortunately forced to tell my customer, “I can provide you with working software, but not a working robot.”

Epilogue:
Why do you want a different laser in the Turtlebot? Because the original laser broke and didn’t provide usable accuracy either way. I found a better laser for the same price as the original one cost in exchange. Only no one can integrate it into the Turtlebot. Now I can either work with the laser or use the Turtlebot integration to address everything else without a laser. It’s not even usable as a toy.

Laser information on accuracy:
Original = after a few meters, the obstacle is somewhere around ± 40 cm.
Replacement = at the same distance, the obstacle is somewhere around ± 3 cm.

Translated with www.DeepL.com/Translator (free version)

Hi,

das ist aber ganz schön viel schlechte Stimmung für so einen kleinen Roboter.

Ich bin zwar völlig unbeteiligt, aber wenn ich das hier so lese möchte ich doch mal meinen Senf dazu geben.

Sofern ich das richtig verstanden habe ist der Turtlebot eine Plattform, um einen Einstieg in die Welt der Robotik mit ROS zu schaffen.
Das bedeutet sie ist fĂĽr Leute, die SpaĂź daran haben sich in Dinge einzuarbeiten und zu tĂĽfteln.

Das beinhaltet auch sich in Linux ein zu arbeiten und ROS als ganzes zu verstehen. Es reicht nun mal nicht sich immer nur das Nötigste raus zu suchen und zu hoffen, dass das schon klappt.

Diese Plattform ist scheinbar also generell nichts, mit dem du dich beschäftigen solltest, wenn du an der beschriebenen Arbeit keinen Spaß hast.

Sich so ausgiebig zu beschweren, es hätte keinen Support gegeben finde ich frech.
Schließlich bringt dich der Link zu den Dateien, in denen du entsprechende änderungen vornehmen könntest.
Auf genau eine Datei zu verweisen ist vermutlich deshalb nicht möglich gewesen, weil diese von deiner Konfiguration des Roboters abhängt.

Und selbst wenn das nicht geholfen hätte, kennst du ja offensichtlich den richtigen Knopf um eine weitere Nachfrage zu stellen.
Nach meiner Erfahrung bekommt man hier nämlich gute Unterstützung, sobald das Problem eingegrenzt ist.

Nachwort:

Sei froh, dass es dieses Forum, das täglich beantwortet wird, überhaupt gibt. Das ist definitv keine Selbstversändlichkeit und kostet auch sicher nicht wenig im Unterhalt.

@citkid and @jgrube thanks for your feedback. @citkid we try our best to help, for that we need to narrow down to the problem and than can point to the relevant solution.

I will suggest you share your launch file for lidar and for Turtlebot which you are running. Than hopefully we will be able to point you to the problem and solution.

Hallo Tahir,
danke fĂĽr einen neuen Versuch. Wenn ich dich richtig verstehe meinst du die beiden launch-Dateien zum Einbinden von Turtlebot und neuem Laser. Da in der Datei von Turtlebot relativ wenig drin steht, habe ich die direkt eingebundenen Dateien mit aufgefĂĽhrt.

Hello Tahir,
thanks for another try. If I understand you correctly you mean the two launch files to include Turtlebot and new laser. Since there is relatively little in the Turtlebot file, I have included the directly included files.

Hier die Dateien fĂĽr Turtlebot:

Dateipfad: /home/pi/catkin_ws/src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_robot.launch

<launch>
  <arg name="multi_robot_name" default=""/>
  <arg name="set_lidar_frame_id" default="base_scan"/>

  <include file="$(find turtlebot3_bringup)/launch/turtlebot3_core.launch">
    <arg name="multi_robot_name" value="$(arg multi_robot_name)"/>
  </include>
  <include file="$(find turtlebot3_bringup)/launch/turtlebot3_lidar.launch">
    <arg name="set_frame_id" value="$(arg set_lidar_frame_id)"/>
  </include>

  <node pkg="turtlebot3_bringup" type="turtlebot3_diagnostics" name="turtlebot3_diagnostics" output="screen"/>
</launch>

Dateipfad: /home/pi/catkin_ws/src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_core.launch

<launch>
  <arg name="multi_robot_name" default=""/>

  <node pkg="rosserial_python" type="serial_node.py" name="turtlebot3_core" output="screen">
    <param name="port" value="/dev/ttyACM0"/>
    <param name="baud" value="115200"/>
    <param name="tf_prefix" value="$(arg multi_robot_name)"/>
  </node>
</launch>

Dateipfad: /home/pi/catkin_ws/src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_lidar.launch

<launch>
  <arg name="set_frame_id" default="base_scan"/>

  <node pkg="hls_lfcd_lds_driver" type="hlds_laser_publisher" name="turtlebot3_lds" output="screen">
    <param name="port" value="/dev/ttyUSB0"/>
    <param name="frame_id" value="$(arg set_frame_id)"/>
  </node>
</launch>

Dateipfad: /home/pi/catkin_ws/src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_model.launch

<launch>
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>

  <include file="$(find turtlebot3_bringup)/launch/includes/description.launch.xml">
    <arg name="model" value="$(arg model)" />
  </include>

  <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher">
    <param name="use_gui" value="true"/>
    <param name="rate" value="50"/>
  </node>

  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
    <param name="publish_frequency" type="double" value="50.0" />
  </node>

  <node name="rviz" pkg="rviz" type="rviz" args="-d $(find turtlebot3_description)/rviz/model.rviz"/>
</launch>

Dateipfad: /home/pi/catkin_ws/src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_realsense.launch

<launch>
  <include file="$(find realsense_camera)/launch/r200_nodelet_default.launch"/>
</launch>

Dateipfad: /home/pi/catkin_ws/src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_remote.launch

<launch>
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="multi_robot_name" default=""/>

  <include file="$(find turtlebot3_bringup)/launch/includes/description.launch.xml">
    <arg name="model" value="$(arg model)" />
  </include>

  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
    <param name="publish_frequency" type="double" value="50.0" />
    <param name="tf_prefix" value="$(arg multi_robot_name)"/>
  </node>
</launch>

Dateipfad: /home/pi/catkin_ws/src/turtlebot3/turtlebot3_bringup/launch/turtlebot3_rpicamera.launch

<launch>
  <node pkg="raspicam_node" type="raspicam_node" name="raspicam_node" output="screen">
    <param name="camera_info_url" value="package://turtlebot3_bringup/camera_info/turtlebot3_rpicamera.yaml"/>
    <param name="width" value="640"/>
    <param name="height" value="480"/>
    <param name="framerate" value="15"/>
    <param name="camera_frame_id" value="camera"/>
  </node>
</launch>


Und hier die Datei fĂĽr den neuen Laser rplidar:
And here is the file for the new laser rplidar:

Dateipfad: /home/pi/catkin_ws/src/rplidar_ros/launch/rplidar.launch

<launch>
  <node name="rplidarNode"          pkg="rplidar_ros"  type="rplidarNode" output="screen">
    <param name="serial_port"         type="string" value="/dev/ttyUSB0"/>
    <param name="serial_baudrate"     type="int"    value="115200"/><!--A1/A2 -->
    <!--param name="serial_baudrate"     type="int"    value="256000"--><!--A3 -->
    <param name="frame_id"            type="string" value="laser"/>
    <param name="inverted"            type="bool"   value="false"/>
    <param name="angle_compensate"    type="bool"   value="true"/>
  </node>
</launch>

Inzwischen habe ich ja durchaus so einiges hinzugelernt. ROS soll nur eine Master-Kommunikationsschnittstelle sein. Und diese Aufgabe von ROS finde ich auch wirklich gut. Damit ist es aber auch ganz einfach möglich einen neuen Sensor zu integrieren. Z.B. kann man einfach den Inhalt von „rplidar.launch“ in „turtlebot3_robot.launch“ hineinkopieren und der neue Sensor wird bei jedem Start integriert.
Ein Problem bleibt natürlich, man kann keinen neuen Sensor integrieren, wenn ein alter Sensor die Schnittstellen (wie hier USB0) belegt. Also muss der alte Laser vollständig aus den Startdateien entfernt werden, damit der neue Laser seinen Platz einnehmen kann.
Das habe ich mir natürlich angesehen und habe noch viel mehr Dateien gefunden die vom alten Laser benötigt wurden. Meine Versuche den alten Laser zu entfernen führten jedoch entweder zu Fehlermeldungen oder führten nicht zum vollständigen Abarbeiten der Startdateien von Turtlebot.
Deshalb benötige ich jemanden, der mir den alten Laser komplett aus Turtlebot entfernt.
Tahir, sehe ich das so richtig?

In the meantime I have learned quite a few things. ROS should only be a master communication interface. And this task of ROS I also find really good. But it is also very easy to integrate a new sensor. E.g. you can simply copy the content of "rplidar.launch" into "turtlebot3_robot.launch" and the new sensor will be integrated at every start.
One problem remains of course, you can't integrate a new sensor if an old sensor occupies the interfaces (like USB0 here). So the old laser has to be completely removed from the startup files so that the new laser can take its place.
Of course I looked into this and found many more files that were needed by the old laser. However, my attempts to remove the old laser either resulted in error messages or did not fully process Turtlebot's startup files.
Therefore, I need someone to completely remove the old laser from Turtlebot for me.
Tahir, am I seeing this correctly?

1 Like

Erfolgsmeldung:
Ein Mitarbeiter (nennt sich hier Sohail) der gleichen Firma, mit der ich vorher sehr unzufrieden war, hat mir jetzt schnell und kompetent geholfen. Dafür möchte ich mich hier noch einmal ganz herzlich bedanken.
Ich habe seine Arbeit die ganze Zeit verfolgt und musste feststellen, für eine schriftliche Hilfe wäre das eh’ nichts gewesen. Dafür war der Aufwand viel zu groß.
Es gab beim Funktionstest mit meinem Programm das Problem, dass die Tastatur nicht mehr ordentlich behandelt wurde. Da die Arbeiten sich aber ausschließlich auf den Turtlebot bezogen und nicht auf meinen PC, musste der Fehler anders entstanden sein. Ich vermute Tastaturtreiberprobleme bei anydesk, Virtual-Box und/oder Linux. Nach einem Neustart des PC’s war auch dieses Problem behoben.

Success message:
An employee (called Sohail here) of the same company, with which I was very dissatisfied before, has now helped me quickly and competently. For this I would like to thank here once again very much.
I followed his work all the time and had to realize, for a written help it would have been nothing anyway. The effort was much too big for that.
There was the problem during the function test with my program that the keyboard was not treated properly. However, since the work was exclusively related to the Turtlebot and not to my PC, the error must have originated differently. I suspect keyboard driver problems with anydesk, Virtual-Box and/or Linux. After a reboot of the PC, this problem was also solved.

1 Like