Sync problems on start up

Hello,

 when I launch all.launch in my Rosbot 2.0 with

 roslaunch rosbot_ekf all.launch

  ...the output stops after "Requesting topics" and then, after a few seconds, prints the following error:

ERROR] [1649616896.767046]: Unable to sync with device; possible link problem or link software version mismatch such as hydro rosserial_python with groovy Arduino

     Upgrading with sudo apt-get upgrade does not solve the problem. I have to flash the firmware with

     ./flash_firmware.sh

      After that, all.launch seems to work correctly - I can move the robot around and receive all topics. However, if the robot is powered off and then on again the same problem comes up, so I have to flash the firmware each time, as if the effect of that vanished on power-off.

         I installed the latest version for Ubuntu 20.04 and ROS noetic and then upgraded it. The firmware version printed on start-up is 0.14.3; it is the one included in the original image.

        How could I make the robot start-up normally?

        Regards

     .

Hi jfm.

Thank you for already checking if you do have correct firmware flashed and clean OS.
Could you try downloading our tool core2-flasher and checking if your flashed firmware is matching after restart?

The issue seems very odd, but it’s better to check if everything is all right.
Connect your ROSbot’s CORE board to your PC via USB port you can find in the back of the robot.
Then find corresponding core2-flasher binary for your system and run

./core2-flasher --dump

Run the command after powering up the robot when the rosserial is not working and after reflashing fresh firmware. This way, we will know if after restarting, everything is all right with your firmware. In theory, restarting the power should not affect flash memory of the microcontroller, but it’s better to check it.

Best regards,
Krzysztof Wojciechowski.

Hi, Krzysztof_Wok.

Ok, I will try that. However, I have found that the problem is not so systematic after all. If I retry to switch of and then on the robot several times (about two or three today…), the sync problem may disappear without reflashing the CORE board, so the firware may be correct after all. It is as if the CORE would not always reset on power-on, or something like that.

Best regards.

Ok. Just to be 100% sure, please check the firmware version if it matches.

There are also a few other things you could check:

  • After flashing, restart ROS nodes few times and check if rosserial is still able to connect.
  • Do the same thing as above, but this time reset CORE2 as well. Refer to image in documentation. reset button will only reset CORE2. With each restart of CORE2 restart nodes as well.

My current guess is that there might be a hardware problem related to UART and further, debugging it might be really difficult. Hopefully, it is just some silly issue neither of us can spot right now.

Best regards,
Krzysztof Wojciechowski.

Hello again,

       I have tried to use core2-flasher, but I wasn't able to dump the firmare. It just kept printing dots on the screen. I also tried

     core2-flasher --test

…with the same result. If I add --debug, it prints

trying to open uart...
opening ftdi
opening ftdi
(over and over...)

    I used the win version of core2-flasher on Windows-10. It didn't seem to matter whether the all.launch script worked or not, or whether I pressed the CORE2 reset button or not.

    Then I tried to repeat all.launch over and over (launch, cancel, launch, cancel again...), and the conclusion was (after about ten times in a row) that if it fails the first time after switch-on it will always fail, and if it works the first time, it will always work. 

       Finally I noticed something quite relevant: **all.launch seems to fail only if the L1 led (the red one on the rightmost group) is off after reboot, and works correctly if it is on**. Also I have noticed that this led, if it is on after reboot, will go off while pressing the CORE reset button, so it must have something to do with CORE2.  This LED goes on and off after switching on, and finally either remains on or off in my robot - seemingly at random. I think that this may be a good clue to find out what is the problem.

         Best regards.

More data about the problem: I have removed the SD card with 20.04 and Noetic and inserted another old card from a spare robot with 18.04 and Melodic. I also had to flash the older version of firmware: 0.13.1, Then I tried to launch all.launch exactly in the same way, and it did not fail after about ten tries, with exactly the same hardware.

So it looks like this is not a hardware problem after all, and may have something to do with Ubuntu 20.04-Noetic and/or 0.14.3 firmware. Any ideas? Should I update to the newer version 0.15.xx?

I would prefer to use Noetic, instead of the older ROS version…

Hi jfm

That is good news. Sorry, I did not replay for a long time to your last question, but we’ve had holidays in here. You could try the latest firmware from husarion / rosbot-stm32-firmware.

You can either install prebuild from releases or build yourself. I would suggest building a fresh one, since it will have most of the issues since last release fixed.

Best regards,
Krzysztof Wojciechowski.

HI, Krzysztof,

       ok, we also have holidays, but not for the Easter Monday.  

     I cannot easily rebuild the firmware, because it needs MS Visual Studio, and I don't have one installed. Please tell me where I can download the prebuilt version (0.15.0 ?), because I don't find it neither in the git workspace nor in the "downloads"  section of the Husarion webpage. 

     However the problems with firmware may be broader than the start-up bug.  I have also had a lot of problems and have lost a lot of time while trying to execute the tutorial's launch files with Ubuntu 20.04 - Ros Noetic - 0.14 firmware.  Building a map was not easy, because it tended to become unstable, and AMCL localization almost didn't work at all...  I thought that I was doing something wrong, but to my surprise all  these problems have all but dissapeared with  the original setup (Ubuntu 18.04 - ROS Melodic - 0.13.1 firmware) present in the card I borrowed from a spare robot. 

    May also these problems also come from the firmware version? I suspect that the root of the problem is that odometry is quite bad with the Noetic configuration, specially under rotation. Has not really anyone found this problems with Noetic?

      Best regards

Hi jfm

You can download it from releases. Problems with odometry were discussed few times, but the rotation varies on the surface the robot is driving on. You can tweak it, but it requires VS Code installed to build the firmware.

Could you check the 15.0 firmware and tell me if it fixes anything?

Best regards,
Krzysztof Wojciechowski.

Hi, Krzysztof,

      which one should I use, firmware_diff_noetic.bin or firmware_mec_noetic.bin? They are not exactly the same.

      I know that odometry may be affected by surface, but I am testing with the same robot on the same floor. It seems to work reasonably well with the old setup, but not with the new one.

       Bes regards

firmware_diff is for regular wheels, firmware_mec is for mecanum wheels. Choose the one that suits your robot’s configuration.

About odometry. If the newest firmware doesn’t fix your problem, please let me know, and we will do our best to patch that.

Best regards,
Krzysztof Wojciechowski.

Hi again,

      I have tested the robot with Noetic and the newest firmare (0.15.0). Now I can build maps much more easily, and AMCL localization seems to work correctly. I have also compared the odometry by turning the robot around its center, and the results seems much better than with 0.14.1, where I could see about 15-20º error for a 90º turn.

         However, unfortunately the start-up problem is still there; sometimes the L1 Led keeps off after start-up, and all.launch (for example) is not able to run correctly, as it happened for 0.14 firmware. At least the robot can navigate correctly, although it's a nuisance to retry  switch-off and on a few times.

         It's rather strange that no one has found those problems before. Perhaps no one is using Noetic with Rosbot?

        Best regards.