Welcome new user! You can search existing questions and answers without registering, but please register to post new questions and receive answers. Note that due to large amounts of spam attempts, your first three posts will be manually moderated, so please be patient.
We have moved to a new forum at http://jevois.usc.edu, please check it out. The forum at jevois.org/qa will not allow new user registrations but is maintained alive for its useful past questions and answers.
Welcome to JeVois Tech Zone, where you can ask questions and receive answers from other members of the community.

Confusing Serial Output from RoadNavigation Module

0 votes
Hi, I am trying to use the RoadNavigation module for an autonomous vehicle project and am confused about the serial output I'm getting. I have the camera serial output connected to my Windows PuTTY terminal.

When I am using mapping "OUT: YUYV 320x256 @ 30fps CAM: YUYV 320x240 @ 30fps MOD: JeVois:RoadNavigation", which outputs on serial only when the camera is streaming, the serial output makes perfect sense. The range is -1000 to 1000 and the output matches what I expect from reading the module description. (When the road is to the left, vp is negative, when the road is to the right, vp is positive).

I want to hook up to a microcontroller without using video output, so I tried mapping "OUT: NONE 0x0 @ 0fps CAM: YUYV 320x240 @ 60fps MOD: JeVois:RoadNavigation". This is pretty much the same thing except that no video is being output (fps is different, but I get similar results at 30fps as well). Now all of a sudden the serial output starts to make very little sense. The output jumps around all over the place and sometimes converges if it sits there for a little bit, though mostly not to the correct value. It doesn't seem usable for my application.

Any ideas as to what is causing this discrepancy? The first mapping has the desired serial output behavior for my application, but I can only stream the data if I'm also connecting the video output to something. The second mapping is how I'd like to operate, but the serial data seems to be unusable. I'm pretty new to all this, so maybe I'm missing something obvious, but I would appreciate any help.

Thank you!
asked May 3, 2018 in User questions by tangerhofer (150 points)

1 Answer

0 votes
 
Best answer
whoops, sorry I think this is a bug in the no-USB-out code. It is sending a different coordinate than the version with USB output. You can compare the calls to sendSerial() between the two versions of process() in

https://github.com/jevois/jevoisbase/blob/master/src/Modules/RoadNavigation/RoadNavigation.C

We should be sending what getCurrVanishingPoint() returns, in both versions of process(). We will post an update asap.
answered May 3, 2018 by JeVois (46,580 points)
selected May 4, 2018 by tangerhofer
Ah, that makes sense. It seems more people would have run into this bug before though. How do people normally use this module for road navigation? Or do they usually write their own modules?
yes, I think most people operate in constrained environments with road markings, and end up with some form of line following or somewhat more specialized road tracking, which may be more robust when the markings indeed are present. This algorithm has worked well in our research, however. I have posted a preview new SD image at http://jevois.org/data/jevois-image-1.8.1-8G.zip which should fix the problem with no USB output. Note that there seems to be a race condition in the module between several threads, so I have serialized that some more. The coordinates you will get in both USB and no-USB versions should now be the same, and they move by some fixed step size.
...