Welcome to Synthiam!

The easiest way to program the most powerful robots. Use technologies by leading industry experts. ARC is a free-to-use robot programming software that makes servo automation, computer vision, autonomous navigation, and artificial intelligence easy.

Get Started
Asked — Edited

Trying To Make A Plugin For Xv-11 Lidar Using Sureal Controller

I am making a plugin to use the XV-11 LIDAR with the GetSurreal 1.2 controller in EZ-Builder, but I am having an issue on step 6.5 of the plugin tutorial. I tried creating the stub plugin and going to my plugins, but I get a 404 error.

Just letting you know. Let me know if there is anything I can do to get the XML file that is required.



Upgrade to ARC Pro

Experience early access to the latest features and updates. You'll have everything that is needed to unleash your robot's potential.

We aren't closed so I get to sit at my desk just incase something bad happens. I let all of my employees have the day off, so I will have some time to dig into it. Thanks for the info.
Hey David, I like the new look, ver8 nice!??
I removed the plugin until I complete making it compliant with the new compliant section of the plugin Tutorial. I am working on this and will republish it once it is compliant with all of these.
Thanks for your work on this. i am looking forward to trying it out when I come back to Australia. I have had the surreal lidar for a while and have been trying to find the time to do something with it.
@Dave, what changes do you need for compliance? I can give the code a quick overview if you need an extra set of hands in there.
Hey DJ. I only got to work on this yesterday in about 5 minute bursts. I was converting the plugin to use the configuration manager so things are a bit messed up with the code right now. I will be working on that today to finish that piece up.

Once this part is done, I will send you the code. I would love for you to take a look at it and either make suggestions or changes as you see fit. This is my first attempt at a plugin and want to get it right. I want to make plugins for all of the subsystems in Rafiki and use ARC as the interface. I have code that works outside of ARC that I will be converting into plugins so getting the first one right will be of great benefit.

Thanks for the offer. I'll send you what I have when the configuration is working correctly.
Variables are working now but I don't "play well with others" yet.

Please take a look.

The parts that I think I am out of compliance on are
Avoid Length GUI Thread Processing - Initially create a variable array of 360 Items. This locks ARC until it completes.

I don't use any timers yet. It is basically a continuously running loop when data is being received from the LIDAR.

Exception Handling
The major errors are caught. There are some with data sometimes, which are ignored and the plugin moves onto the next piece of data. Also, any errors that need to be caught are showing up in the form of messageboxes. I need to convert these to use the log.
i wouldn't worry about loading the array as being cpu intensive. That function is very very very fast and executes in a millisecond..


EZ_Builder.Scripting.VariableManager.CreateVariableArray("$LIDAR", 0, 360);

How come there are so many Thread.Sleep() calls? That is causing the performance troubles.
I ordered a Lidar - next week when i'm back in calgary i'll take a look. Without knowing what data it returns, i'm unable to identify the logic to display/process the data.
Understand on not knowing the data that is coming back in. The sleeps were put in during debugging issues. I need to go back and remove them. Thanks for looking and catching that.
No prob - i'll have much more input when there's a unit to test with:)
Looking forward to it for sure.

I see the following areas things that need to be addressed or at least looked at.

The parsing of the LIDAR data isn't the best. There is probably a more eloquent way to do this.

The graphic could be done differently I am sure. I just have no idea of what to do on it.

It would probably be best to build an array from the data that is being returned from the LIDAR and pass that between the map generation piece and the piece that updates the $LIDAR variable array.

I do have to say that I ran the plugin outside of the debugger just now and it is pretty quick. It doesn't seem to be interfering with the other controls that I have in this project. This is a good thing. When running through the 2015 debugger, I didn't like the speed that things were happening. I am much happier now:)
Hi there

Instead of connecting the lidar to a pc how feasible might it be to use an arduino as an interface to the EZ-B .... such a plan might help those who want the lidar to be mounted on a computer.

Sorry if this is a dumb question but I am not even able to test this plugin with my lider as I am in Canada and my lidar is in Australia .... but I think that this would really make the plugin (and the surreal lidar) hugely useful.

A big thanks for all the work gone into this and I can't wait to get back to try out all the work that has been done so far.




Instead of connecting the lidar to a pc how feasible might it be to use an arduino as an interface to the EZ-B ...
Same problem .... not enough processing power. I believe the Sureal control is arduino based...There is lots of data coming out of the xv-11. Maybe the ezb4 1/2 might be able to handle it through I2c, however the arduino hasn't go a chance... ... You really need a PC to effectively use the lidar XV-11...
Hey Zebra, I think the current version of the V4 will have its communication path flooded with the amount of data that is coming back. As Richard said, the V4 1/2 may be able to handle it.

DJ is getting one of these to mess with. He may have some way to make this happen. I would think that if you setup the LIDAR to refresh no more than every few seconds, maybe it would be okay with the current version.

The GetSurreal controller is a Teensy (arduino based) controller. You might be able to intercept the output from the Teensy to the comport and patch it into the EZ-B, but I haven't tried.

I always use onboard computers because I have multiple cameras and other devices that I want to have very fast communication paths without affecting other things that are using the communication path for the V4. It is just the way that I do things, and the code has been published if anyone wants to modify it.

The neopixel control I just put out also is designed to be connected to directly from a PC and not through the V4. This is going to be a part of my Rafiki project in ARC and I want to keep this communication path as open so that the user can modify the robot however they see fit with as little interference from me as possible. Because of this, I have even moved my neopixel (very small bandwidth usage) to the usb ports on the onboard computer.

This code is also shared, so if someone wants to modify it to be used with the EZ-B, they can. Right now, it is more designed for someone to manually set the Neopixel to specific modes. I haven't created the Script interface for it yet. It is going to be a pain to do because of the numerous options that have to be set. The GUI has been made to allow someone to manually run a NeoPixel through a COM port. These two were released with the code because I either used something that someone posted on this forum or there was nothing like it available yet. My hope is that someone will take the LIDAR code and go crazy with it. I really don't have the time to do this right now. It works but could be improved upon.
Thanks for making this great plugin !

I'm having the same issue as @RobotDoc in that the program can create the variables and start/start the lidar but the variables receive no data

I tried the quick test using the Arduino IDE on the Surreal site and the lidar work fine and retuned distance values on the same PC

I'm wondering if the issue might be that I'm using Windows 10 and the instructions for your plugin say to use the Teensy Serial Driver but Windows 10 wont let me load it... see below

User-inserted image

Is it possible that your plugin won't work with the Windows 10 driver?

His plugin isn't the problem. The problem is unrelated to his plugin. The problem is that windows doesn't have a driver for the hardware. The hardware requires a driver. The error from windows is that there is no driver.

If you google your hardware and windows 10, maybe you'll find a driver?

I don't know anything about the hardware - so I can't say much else:) just that it isn't a plugin problem:D
@faengelm >>I'm wondering if the issue might be that I'm using Windows 10 and the instructions for your plugin say to use the Teensy Serial Driver but Windows 10 wont let me load it...

That is correct. Like DJ said, the issue not inside the plugin but the driver to communicate with the GetSurreal device. Windows10 there has opted to us it's own driver and is telling you basically "Ptttt, I'm using my own drive thank you and good bye."

Getting your driver to load is what we need to help you resolve, if we can.
@DJ & @JustinRatliff,

Thanks for the feedback. I checked with Surreal, the maker of the Teensyduino interface board and they are saying the Windows 10 USB driver should work as it worked with their test program

User-inserted image

I tried Device Manager to remove the built in Windows 10 USB driver, but it wont let me do that... only drivers added by the user

Has anyone else been able to get this plugin working with Windows 10?


I can confirm you don't need the Teensy driver it should work with the original windows 10.

I've used two different setups:

1) Lidar connected to Teensy and Teensy connected to the EZ-B camera Port.

2) Lidar connected to serial/usb and a ROS node.

I never used the David's plugin.

Currently i have setup #2 and i still need to finish some adjustment for the ROS navigation stack, after that i can flash the getsurreal firmware, and try to replicate your setup and test David's plugin.

I don't want to extrapolate more without proper debugging, let's wait for David's feedback and/or other Plugin's users.