Asked
Resolved Resolved by Synthiam Support!

RPLIDAR C1 Malfunction In ARC

I am experiencing a problem with a new RPLIDAR C1 unit.

Details: I own two RPLIDAR C1M1-R2 units:

  • The functioning unit has Firmware Version: 257.
  • The malfunctioning unit has Firmware Version: 258.

Both units use Slamtec UART-to-USB adapters.

Issue in ARC:

The RPLIDAR connects and starts scanning for approximately 4-5 seconds and then stops. Subsequently, ARC displays the following exception:

  • Timeout set for 2000ms
  • RPLidar SDK: 2.0.0
  • Slamtec SDK: 2.1.0
  • Connected to COM4 @ 460800
  • Publish to NMS: True
  • Model: 65
  • Hardware Version: 18
  • Firmware Version: 258
  • Serial No: 73BFE0F6C0E292CAB5E099F0F66F400D
  • Motor Ctrl Supported: False
  • Health: OK (0), Code 0
  • ID: 0, Name: Standard, Max Dist: 16, us/Sample: 200, Type: 129
  • ID: 1, Name: DenseBoost, Max Dist: 40, us/Sample: 200, Type: 133 default

System.Exception: Operation Timeout at RPI_Lidar.MainForm._scheduler_OnEventToRun (EZTaskScheduler sender, Int32 taskId, Object o) in C:\My Documents\SVN\Developer - Controls\In Production\RPI Lidar\RPI Lidar (A1)\MY_PROJECT_NAME\MainForm.cs:line 310

For comparison, here is the output from the functional RPLIDAR unit:

  • Timeout set for 2000ms
  • RPLidar SDK: 2.0.0
  • Slamtec SDK: 2.1.0
  • Connected to COM4 @ 460800
  • Publish to NMS: True
  • Model: 65
  • Hardware Version: 18
  • Firmware Version: 257
  • Serial No: 86B6E1F8C9E09CD3A7E79BF518634D1F
  • Motor Ctrl Supported: False
  • Health: OK (0), Code 0
  • ID: 0, Name: Standard, Max Dist: 16, us/Sample: 200, Type: 129
  • ID: 1, Name: DenseBoost, Max Dist: 40, us/Sample: 200, Type: 133 default

In the Device Manager, there are no issues; the COM port remains stable. I tested this on multiple PCs, using various adapters and USB ports.

Test Results in Slamtec RoboStudio:

The unit with firmware version 258 works perfectly in RoboStudio:

  • Manual connection is successful.
  • The motor spins properly.
  • 2D scan data appears correctly.

I have not tested the older unit with firmware 257 in RoboStudio since it already performs flawlessly in ARC. Here’s a picture from RoboStudio: RoboStudio Image

Could this be a compatibility issue between firmware version 258 and the ARC RPLIDAR skill?


Related Hardware AdventureBot
Related Control RPLidar

ARC Pro

Upgrade to ARC Pro

Stay on the cutting edge of robotics with ARC Pro, guaranteeing that your robot is always ahead of the game.

PRO
Germany
#9  

thanks for your response. the firmware version read by ARC is 257 /258. I am not sure Slamtec knows about these numbers . That's why I sent you the version from robostudio which is 1.1/1.2.  it seems to be the official version of slamtec

#10  

Have you tried the latest update to the RP Lidar robot skill?

It is very interesting that their libraries and applications return different values for the firmware. Because ARC doesn’t provide firmware version numbers for the RP Lidar. ARC functions like an operating system (similar to Microsoft Windows), and the RP Lidar robot skill is developed by the hardware manufacturer using their own SDK, library, or API. If you see firmware values such as 257 and 258, those are raw values returned directly by their library. Their RoboStudio software likely translates these values into something more user-friendly, while the robot skill returns them as-is. We could not guess their reasoning for having differing representations of the firmware.

Since Synthiam doesn't develop the RP Lidar’s SDK or robot skill, we can’t speak to the manufacturer’s reasoning for returning different firmware values.

That said, the latest update to the RP Lidar robot skill appears to include several improvements-one of which addresses timeout behavior, which relates to the issue you previously encountered. We recommend installing the latest version of the RP Lidar robot skill and reviewing the new configuration options to see if they help resolve the problem.

PRO
Germany
#11  

Indeed, the latest update solved the problem - the 'new' RPLIDAR with firmware version 258 now works. I retested with the older RPLIDAR (firmware version 257), and it works too. I don't know what you did, but everything works fine now. The RPLIDAR skill v26 has a new feature: 'force scan' or 'use typical scan.' In my case, 'typical scan' is being used. The Better Navigator also works with both versions.

#12  

That’s wonderful to hear. The resolution must have been related to their new Timeout option. Looking at their sdk, we guess their default was 2000 ms and the new default setting is 5000. That must provide more time for the motor to spin to speed without timing out.

PRO
Synthiam
#13  

Regarding the firmware, I know what you guys are seeing. I took a look at their library and they return the firmware version as an unsigned 16 bit int...

typedef struct _sl_lidar_response_device_info_t
{
    sl_u8   model;
    sl_u16  firmware_version;
    sl_u8   hardware_version;
    sl_u8   serialnum[16];
} __attribute__((packed)) sl_lidar_response_device_info_t;

So it looks like the 16 bit unsigned int is both parts of the decimal firmware. It can be wrapped such as...

uint16_t fw = devinfo.firmware_version;
int fw_major = (fw >> 8) & 0xFF;
int fw_minor = fw & 0xFF;

std::cout << "Firmware Version: " << fw_major << "." << fw_minor << std::endl;
#14  

Okay - we can display that version in the robot skill formatted as major/minor. That will be a bit of a hack because they aren't doing that in their robot skill for some reason. It's probably something they overlooked.