Navsim navigation app not getting state data 2019.3

Hi,

I’m trying to use the navsim navigation application by replacing Unity3D with my own simulation app. I am sending the same data; Firstly the scenario reply as JsonProto and then RangeScanProtos and StateProtos constantly. These seem to be enough for the navigation to work when using Unity3D. However by spectating WebSight, I notice that the navigation app receives all the data normally except for the StateProtos. The “navigate - Speed profile” only shows zero values for the “estimated_speed” and “observed_base_speed” values even when they are not. I have verified that the connection is okay and all the data sent is correct. Also, the range scan data seems to be received succesfully.
It seems that the StateProtos are received but somehow not processed as there are no errors displayed. Is there something I am missing? Do timestamps matter? Or something other than scenario reply has to be sent before the navi app accepts state data?
I have a custom C# .Net app running on windows 10 which does not use the C api provided in Isaac SDK.

Thanks in advance

Do you mind telling us what simulation platform are you using?

Hi, sure! I’m using Visual Components software, but I don’t think the problem is related to the software I’m using. I think I have missed sending some relevant data or something else. There might be some wrong information in my messages as I’m not using the C api to generate the messages. The channel is correct however.

I also made another Isaac application (made a new codelet) just to see if my state data can be received and is actually non-zero. Everything seemed ok.

I have also compared the header data of these state messages sent from Unity3D with the data sent from Visual Components. Everything seems the same except time stamps and UUID. (which assumably need to be different anyway)

Thanks for help.

Hi tohtoriteppo,

There might be two issues associated with this:

  1. Please check on WebSight that the appropriate channels are marked. You can see the channel list on the left-hand side of the window.
  2. When running navsim app, the default goal behavior is to go at the required “pose” given by the simulator. In the case of Unity3D, there is a ghostly looking green carter robot(manipulate it by WASD) that enables you to give the target pose of the goal. Make sure your simulator is providing this data as well.

Note: Once the robot reaches its target, all the velocities will be zero.

Hope this helps.

2 Likes

Hi,

Thanks for the reply. I checked your suggestions and found out, that similarly to the state data, the Goal data was also received by the navigation stack, but not utilized. Furthermore, I found out that the problem was with the UUID of the header messages. If they were not unique or were somehow incorrect, the navigation stack didn’t use them. Now that I fixed the UUID to be unique each time, the navigation works almost perfectly.

Most likely this is why the lidar data was received because it was sent as a separate buffer, not as part of the proto messages.

Only flaw now is that the navigation stack treats the goal position most of the time as zero even when it’s not. It’s likely that the error is still with the UUID as occasionally it works as intended. As I’m generating the UUID with C#'s Guid class, it might not match with Isaac’s implementation. However, the robot navigates to the zero position nicely.

I will continue on resolving this issue, but your reply really helped me to look into the other data as well. Thanks a lot!

2 Likes