code-iai / ROSIntegration

Unreal Engine Plugin to enable ROS Support
MIT License
411 stars 133 forks source link

Exception in deserialization of BSON #141

Open ashepele opened 3 years ago

ashepele commented 3 years ago

Hi ROSIntegration Team!

I'm running ROS Melodic ('rosversion roscpp' command shows version 1.14.10) on Ubuntu 18.04. My rosbridge version is 0.11.13 (obtained with the command roscat rosbridge_server package.xml | grep '<version>'):)

I've been using the ROSIntegration plugin successfully for a while now. Lately, though, I'm seeing a recurring error:

[ERROR] [1609882439.165964]: [Client 1] Exception in deserialization of BSON

usually followed by a crash. This happens when using the latest commit of ROSIntegration (c71c6addb99374c2315053d1e0e08095478f7843) but doesn't seem to be an issue that was introduced in ROSIntegration recently. Rather, it seems like something external (perhaps ROS or the rosbridge) changed leaving ROSIntegration no longer compatible.

Another thing I noticed is that the version of BSON packaged with this plugin is 1.0, whereas the latest available version is 1.17.3 here http://mongoc.org/libbson/

Are you aware of such an issue and are you able to reproduce it? Could you please advise?

Best Regards, -Aleksey

JingQF commented 3 years ago

Hi, @ashepele I meet a problem, as explained in #140, and I have solved it by changing rosbridge version. Maybe the problem with your project is caused by the latest version of rosbridge. I am not a member of this project, and I could kindly give two hints for the issue:

  1. change rosbridge to 0.9.0
  2. pip uninstall bson & pip install pymongo (which is discussed in rosbridge_suite-#198)
ashepele commented 3 years ago

Thank you @JingQF ? It looks like you cloned rosbridge 0.9.0 from https://github.com/RobotWebTools/rosbridge_suite. How did you install it once it was cloned? The installation instructions here will most likely not work http://wiki.ros.org/rosbridge_suite

JingQF commented 3 years ago

Hi, @ashepele. I guess you are using a Ubuntu system, and there are always two ways to install a ROS package:

ashepele commented 3 years ago

@JingQF , Thank you very much! It is working.

The exact steps I followed were:

$ sudo apt-get remove ros-melodic-rosbridge*
$ cd ~/my_ros_workspace/src
$ git clone -b 0.11.10 git@github.com:RobotWebTools/rosbridge_suite.git
$ cd .. && catkin_make
$ source ./devel/setup.sh
TaylorDale commented 3 years ago

This should be noted on the homepage of the repo, was scratching my head for a while - thanks for finding the fix :)

Sanic commented 3 years ago

This should be noted on the homepage of the repo, was scratching my head for a while - thanks for finding the fix :)

Good point. I just added a pointer to the relevant issues.

ashepele commented 3 years ago

This fix was working previously. Now I'm getting the following error when running roslaunch rosbridge_server rosbridge_tcp.launch bson_only_mode:=True

File "/home/ashepele/Documents/ros_sim_workspace/src/rosbridge_suite/rosbridge_server/src/rosbridge_server/websocket_handler.py", line 36, in <module>
    from rosauth.srv import Authentication
ImportError: No module named rosauth.srv
[rosbridge_tcp-2] process has died [pid 18178, exit code 1, cmd /home/ashepele/Documents/ros_sim_workspace/src/rosbridge_suite/rosbridge_server/scripts/rosbridge_tcp __name:=rosbridge_tcp __log:=/home/ashepele/.ros/log/24aa9208-8cd6-11eb-9a5f-14abc5d2e083/rosbridge_tcp-2.log].
log file: /home/ashepele/.ros/log/24aa9208-8cd6-11eb-9a5f-14abc5d2e083/rosbridge_tcp-2*.log

Has anyone come across this as well?

tsender commented 3 years ago

@ashepele I have had that issue myself. The rosbridge server requires a number of packages for it to work properly. If you type something like sudo apt-get install ros-melodic-rosbridge-server in a ubuntu terminal, you will see a list of packages that this command installs, one of which is rosauth. You will need to install that entire list of packages (minus the rosbridge ones, since that needs to be done manually, as you explained in one of the above posts). This should resolve your issue.