Giter Club home page Giter Club logo

rosintegration's Introduction

ROSIntegration Plugin for Unreal Engine 4

This plugin adds ROS support to your Unreal Engine Project. It is designed to be used on different common platforms. Currently, Windows and Linux are directly supported.

The connection to the ROS world will be accomplished through http://wiki.ros.org/rosbridge_suite and https://github.com/sanic/rosbridge2cpp

This plugin is currently mainly maintained for Unreal Engine 4. Even though functionality might work under UE5, we see UE4 as a first class citizen on our master branch.

Description

This Plugin contains the basic data structures to enable the user to communicate with a running roscore. Currently, ROS Topics and ROS Services are supported.

To boost the performance for big messages (Image Streams for example), this plugin utilizes http://bsonspec.org/ to transfer binary data in a compact manner.

The core communication library behind this plugin is https://github.com/sanic/rosbridge2cpp, which allows the core communication capabilities to be developed, tested and improved by people who are not necessarily using it with Unreal Engine.

ROS Functionality can be added to UObjects or AActors by using functions like Advertise/Subscribe/Publish on the ROS Wrapper classes or in the form specific Unreal ActorComponents. This currently includes an ActorComponent that can be added to AActors to easily publish their coordinates to TF. If you need Vision Support in your Unreal Project, you can also add the ROSIntegrationVision Plugin (https://github.com/code-iai/ROSIntegrationVision/) which is compatible with this Plugin.

Communication with ROS is achieved by communicating with rosbridge_suite (Unreal Engine <--> rosbridge <--> ROS Nodes). This plugin supports using both TCP and websocket protocols to communicate with rosbridge. The plugin also supports both ROS1 and ROS2 connections.

Citations

If you are using this Plugin in an academic context and you want to cite us, we would be happy if you could use the following reference:

@inproceedings{mania19scenarios,
  title = {A Framework for Self-Training Perceptual Agents in Simulated Photorealistic Environments},
  author  = {Patrick Mania and Michael Beetz},
  year = {2019},
  booktitle = {International Conference on Robotics and Automation (ICRA)},
  address = {Montreal, Canada}
}

Dependencies of this Plugin

This Plugin utilizes BSON to achieve higher transferrates for binary data. It uses http://mongoc.org/libbson/ to encode and decode the whole ROS communication protocol. Since BSON is not included in Unreal Engine (yet), its code has to be added to this plugin. Currently, this plugin comes with a pre-compiled libbson for Windows x64 and Linux x64 which doesn't need any additional configuration.

To enable the communcation between Unreal and ROS, you will need a running ROSBridge (https://github.com/RobotWebTools/rosbridge_suite) with bson_mode. Note: Please use rosbridge with version=>0.8.0 to get full BSON support.

The recommended way to install rosbridge is from source (requires the rosauth package):

sudo apt-get install ros-ROS1_DISTRO-rosauth # Replace ROS1_DISTRO with the distro you are using
cd ~/ros_workspace/
source devel/setup.bash
cd src/
git clone -b ros1 https://github.com/RobotWebTools/rosbridge_suite.git
cd ..
catkin_make
source devel/setup.bash

Even though you could install rosbridge using apt via:

sudo apt-get install ros-ROS1_DISTRO-rosbridge-suite # Replace ROS1_DISTRO with the distro you are using

there have been numersous issues where these apt packages do not reflect the code in the ros1 branch. Hence, it is best to install from source. After installing rosbridge, you can enable the bson_mode like this:

roslaunch rosbridge_server rosbridge_tcp.launch bson_only_mode:=True

How to verify the rosbridge-UE4 connection: Make sure UE4 is configured to use the ROSIntegrationGameInstance (see below) and set the connection parameters. If UE4 and rosbridge are both running, then you should see the rosbridge node subscribe to two topics with the prefix /unreal_ros/. If you do NOT see this, then you likely have a problem with your rosbridge installation.

In our testing, we usually installed rosbridge on a Ubuntu Linux with ROS while the UE4 with ROSIntegration can be run on a Windows or Linux hosts. ROSBridge and UE4 with ROSIntegration don't need to be run on the same machine. So in order to run UE4 with ROSIntegration on Windows, you can either install a Linux Virtual Machine on your Windows Hosts or have a seperate, physical machine with Linux running in your network.

This plugin has previously been tested with Unreal Engine versions;

  • 4.17.3
  • 4.18.2
  • 4.18.3
  • 4.19.1, 4.19.2
  • 4.20.3
  • 4.23 (by Luigi Freda, fixed bugs with smart pointer management)
  • 4.24
  • 4.25
  • 4.26

Please note that this list is a tracker of which UE4 versions have been previously tested. It is not guaranteed that the most recent version of ROSIntegration is working with all previous UE4 versions.

Usage

Setting up the plugin

  • Create a new C++ Unreal Project, or open your existing project. Please note that the Plugin might not get compiled automatically in BP-only Projects (see this Issue).

  • Add this repository to your Plugins/ Folder in your Unreal project (copy the folder in so your structure looks like MyUnrealProject/Plugins/ROSIntegration/ROSIntegration.uplugin

  • Activate the Plugin in your UE4 project by opening your project and go to Edit -> Plugins. Search for ROSIntegration in the "other" section and activate it.

  • Restart the editor and check that the code for the new plugin is built.

  • To specify your ROSBridge server, you have to create a custom GameInstance that inherits from ROSIntegrationGameInstance

  • Find ROSIntegrationGameInstance in the Content browser (you might need to enable 'View Options' > 'Show Plugin Content' in the bottom right of the content browser).

  • Right click and create a new C++ or Blueprint class based on ROSIntegrationGameInstance

    Create a new GameInstance

  • Open your new C++ class / Blueprint object and configure the rosbridge connection properties:

    • ROSBridgeServerProtocol: The communication protocol to use with rosbridge. Options are "tcp" or "ws".
    • ROSBridgeServerHosts: A list of rosbridge server IP addresses. Each element pairs with the corresponding element in ROSBridgeServerPorts.
      • Note 1: In an older version, this was just a single value ROSBridgeServerHost. Now, you can connect to any number of rosbridge servers.
      • Note 2: If the number of elements in this array differs from the length of ROSBridgeServerPorts, then the unpaired elements will be skipped. And if you remove all entries in this array, then the plugin will use a default value of "127.0.0.1".
    • ROSBridgeServerPorts A list of rosbridge server ports. Each element pairs with the corresponding element in ROSBridgeServerHosts.
      • Note 1: In an older version, this was just a single value ROSBridgeServerPort. Now, you can connect to any number of rosbridge servers.
      • Note 2: If the number of elements in this array differs from the length of ROSBridgeServerHosts, then the unpaired elements will be skipped. And if you remove all entries in this array, then the plugin will use a default value of 9090.
    • ROSVersion: Indicate the ROS version that you are using. Only options are 1 or 2.
  • Open Project Settings > Maps and Modes, and set the GameInstance to match your new GameInstance object, not ROSIntegrationGameInstance

    Change host and port to match your server

  • Don't forget to save everything (Ctrl + Shift + S)

  • In some cases (for example on Linux), it might be necessary to call the Generate Project Files action on UE4 in order to fetch the new header files for the plugin. Reference: https://wiki.unrealengine.com/Generate_Visual_Studio_Project or https://wiki.unrealengine.com/Building_On_Linux#Generating_project_files_for_your_project

Build

  • Run the following:
[Run UAT script] BuildPlugin -Plugin="[FULL PATH]/ROSIntegration.uplugin" -TargetPlatform=[Platform] -Package="[Desired Location]" -Rocket

UE may create a HostProject for the plugin, in which case, you'll find the plugin built inside HostProject/Plugins

  • Link to Plugins directory of your project
  • Add plugin to build.cs
[Public/Private]DependencyModuleNames.AddRange(new string[] { "ROSIntegration" });
  • Add plugin to uproject (may be performed via Editor GUI as well)
"Plugins": [
    {
      "Name": "ROSIntegration",
      "Enabled": true
    }
]

C++ Topic Publish Example

To get started, you can create a new C++ Actor and let it publish a message once at the BeginPlay Event. Add the following code into the BeginPlay() method of any actor that is put into to your world to see if the connection to ROS works:

#include "ROSIntegration/Classes/RI/Topic.h"
#include "ROSIntegration/Classes/ROSIntegrationGameInstance.h"
#include "ROSIntegration/Public/std_msgs/String.h"

// Initialize a topic
UTopic *ExampleTopic = NewObject<UTopic>(UTopic::StaticClass());
UROSIntegrationGameInstance* rosinst = Cast<UROSIntegrationGameInstance>(GetGameInstance());
ExampleTopic->Init(rosinst->ROSIntegrationCore, TEXT("/example_topic"), TEXT("std_msgs/String"));

// (Optional) Advertise the topic
ExampleTopic->Advertise();

// Publish a string to the topic
TSharedPtr<ROSMessages::std_msgs::String> StringMessage(new ROSMessages::std_msgs::String("This is an example"));
ExampleTopic->Publish(StringMessage);

C++ Topic Subscribe Example

#include "ROSIntegration/Classes/RI/Topic.h"
#include "ROSIntegration/Classes/ROSIntegrationGameInstance.h"
#include "ROSIntegration/Public/std_msgs/String.h"

// Initialize a topic
UTopic *ExampleTopic = NewObject<UTopic>(UTopic::StaticClass());
UROSIntegrationGameInstance* rosinst = Cast<UROSIntegrationGameInstance>(GetGameInstance());
ExampleTopic->Init(rosinst->ROSIntegrationCore, TEXT("/example_topic"), TEXT("std_msgs/String"));

// Create a std::function callback object
std::function<void(TSharedPtr<FROSBaseMsg>)> SubscribeCallback = [](TSharedPtr<FROSBaseMsg> msg) -> void
{
    auto Concrete = StaticCastSharedPtr<ROSMessages::std_msgs::String>(msg);
    if (Concrete.IsValid())
    {
        UE_LOG(LogTemp, Log, TEXT("Incoming string was: %s"), (*(Concrete->_Data)));
    }
    return;
};

// Subscribe to the topic
ExampleTopic->Subscribe(SubscribeCallback);

C++: Connecting to a Specific rosbridge Server

The above C++ examples pass the ROSIntegrationCore pointer in the topic's Init function. Since multiple ROS connections are now allowed, you can configure each topic/service to use a different rosbridge server (if desired). To do so, simply replace rosinst->ROSIntegrationCore in the above examples with

rosinst->GetROSConnectionFromID(i)

where i denotes the index of the rosbridge server as determined by the ROSBridgeServerHosts and ROSBridgeServerPorts arrays. The GetROSConnectionFromID function will return the pointer to the appropriate rosbridge server if i is valid, otherwise it will to return the pointer to the first rosbridge server in the list at index 0.

For legacy purposes, using rosinst->ROSIntegrationCore will still work and will point to the same object as

rosinst->GetROSConnectionFromID(0)

Blueprint Topic Subscribe Example

  • Create a Blueprint based on Topic class.
  • Subscribe to a topic.
  • Define what happens when a message arrives.

Create Blueprint based on Topic class

  • Open Level Bluprint or any other you want to use the topic in.
  • Instantiate the blueprint via Construct Object from Class with a meaningful outer to define its lifetime and affiliation.

Use the bluprint topic instance

C++ Service Request example

@tsender provided some documentation on this topic here: #134 (comment)

Supported Message Types

Topic Message Type ROS to UE4 UE4 to ROS
std_msgs/Header
std_msgs/String
std_msgs/Bool
std_msgs/Float32
std_msgs/Float32MultiArray
std_msgs/MultiArrayDimension
std_msgs/MultiArrayLayout
std_msgs/UInt8MultiArray
tf2_msgs/TFMessage
geometry_msgs/Point
geometry_msgs/Pose
geometry_msgs/PoseStamped
geometry_msgs/PoseWithCovariance
geometry_msgs/Quaternion
geometry_msgs/Transform
geometry_msgs/TransformStamped
geometry_msgs/Twist
geometry_msgs/TwistStamped
geometry_msgs/TwistWithCovariance
geometry_msgs/Vector3
grid_map_msgs/GridMap
grid_map_msgs/GridMapInfo
nav_msgs/Odometry
nav_msgs/Path
rosgraph_msgs/Clock
sensor_msgs/CameraInfo
sensor_msgs/Image
sensor_msgs/Imu
sensor_msgs/JointState
sensor_msgs/NavSatFix
sensor_msgs/NavSatStatus
sensor_msgs/PointCloud2
sensor_msgs/RegionOfInterest
sensor_msgs/LaserScan
actionlib_msgs/GoalID
actionlib_msgs/GoalStatus
actionlib_msgs/GoalStatusArray
Service Message Type ROS to UE4 UE4 to ROS
rospy_tutorials/AddTwoIntsRequest
rospy_tutorials/AddTwoIntsResponse

Implementing New Message Types

To be able to send and receive message types with ROSIntegration we need two things: the message definition, as well as a converter of the data in that definition from and to BSON. For reference how to do that look into the message definitions in Source\ROSIntegration\Public, and the converters in Source\ROSIntegration\Private\Conversion\Messages. To avoid any memory leaks, please follow the same steps as done in this repo when implementing your overriden ConvertOutgoingMessage(TSharedPtr<FROSBaseMsg> BaseMsg, bson_t** message). It is also recommended that you make your custom converters user-friendly by creating helper functions like _bson_append_child_msg(...) and _bson_append_msg(...) as you see in most of our message converter header files. If you do create such helper functions, follow our convention to avoid any memory leaks.

If you need one of the standard message types provided by ROS, you should implement them inside the ROSIntegration's folder structure. Please keep to the naming convention of the ROS documentation for the message definition. If you want to implement your own messages you can do that in your own project. You only need to add something like the following to the Build.cs-file of your project:

string rosintegrationPath = Path.GetFullPath(Path.Combine(ModuleDirectory, "../../Plugins/ROSIntegration/Source/ROSIntegration/Private"));
PrivateIncludePaths.AddRange(
    new string[] {
        rosintegrationPath,
        rosintegrationPath + "/rosbridge2cpp"
    }
);

Then you can create the message definition and the converter in your own projects source tree. You can just copy and paste the files of a similar standard message, but don't forget to replace the ROSINTEGRATION_API with your own API macro created by Unreal.

Overriding the rosbridge Connection Settings from Within the Level

You can now add a ROSBridgeParamOverride actor to a level, allowing you to use different rosbridge connection settings for that level only (compared to what is defined in the ROSIntegrationGameInstance settings).

When might this be useful? Say you have a powerful enough computer that can handle multiple independent UE4 simulations at the same time, and you want to run as many simulations as possible to collect data effeciently (perhaps you are training a reinforcement learning algorithm). If you create copies of your main level (saved with different names) and use different ROS topic names within each level, then you can launch each level in a new UE4 editor on the same computer. If using a single rosbridge node for all of these UE4 instances results in considerable delays, then you can then add the ROSBridgeParamOverride actor to each level so that each level uses its own rosbridge node.

Accesssing the ROS Connection State from Your Code

The UROSIntegrationGameInstance class contains a delegate called OnROSConnectionStatus that broadcasts the state of the ROS connection to any bound delegates, should your code need to know this information. The delegate provides the number of healthy connections and the number of unhealthy/disconnected connections. If there are 0 disconnected connections, then everything is fine. To gain access to this information, add the following function declaration in your header file:

void OnROSConnectionStatus(int32 NumConnectedServers, int32 NumDisconnectedServers);

Then, in your BeginPlay function, bind this local function to the delegate:

ROSInst = Cast<UROSIntegrationGameInstance>(GetGameInstance());
if (ROSInst && ROSInst->bConnectToROS)
{
    ROSInst->OnROSConnectionStatus.AddUObject(this, &AMyClass::OnROSConnectionStatus);
    // Other code
}

Then define the OnROSConnectionStatus in your cpp file to respond as desired. Again, everything is fine if NumDisconnectedServers is 0.

FAQ

  • Question: My Topic/Service gets closed/unadvertised or my UE4 crashes around one minute after Begin Play. Answer: This might be a problem relating to the Garbage Collection of UE4. Please make sure that you declare your class member attributes as UPROPERTYs. See also: #32

rosintegration's People

Contributors

brean avatar gaogeolone avatar harveybia avatar hemofektik avatar henry0424 avatar jkaniarz avatar luigifreda avatar np-soartech avatar p5rawq avatar parker8283 avatar pettervmc avatar phuicy avatar pkuteaboss avatar rivance avatar sanic avatar tim-fronsee avatar timsaucer avatar tsender avatar vpenso avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rosintegration's Issues

ROSIntegration.uplugin is not being compiled

I have been trying to connect ROS with Unreal 4.20.3 but all my tries go in vain. The plugins folder was not present by default when the project was created. I created this manually in the directory and created another folder inside plugins named ROSIntegration. I pasted ROSIntegration.uplugin inside ROSIntegration folder. After that when I start the project, i get the following messages:
The following modules re missing or built with a different engine version
ROSIntegration
Would you like to rebuild now

Screenshot from 2019-03-20 18-01-44

I click yes and then this message appears:
MyProject2 could not be compiled. Try rebuilding from the source manually
Screenshot from 2019-03-20 18-06-05

I click okay and unreal closes. How can this problem be fixed?

Publishing (of simple string) stops after ~30seconds of frequent publishing

Hi!

I'm experimenting with setting up a string publisher (a very simple one exactly as described in the README tutorial). To experiment with how frequently I could publish, I moved the publish call into the Tick() function.

When I do so, I observe the message publishing at ~3Hz (as confirmed by doing a 'rostopic hz' on the topic). After about 30 - 60 seconds, no new messages will be published to the topic.

Occasionally, I'll see the output of the 'rostopic hz' call balloon up (from ~3Hz to ~30Hz) before the messages stop publishing.

I've also seen an error thrown in Unreal that causes the editor to crash during this 'ballooning' process, but unfortunately didn't save that output. If I can get it to happen again, I'll attach it here.

Here are my specs:
Unreal: 4.22.3 (I see it wasn't tested on this version -- would/could that be an issue)
OS: Ubuntu 16.04

Are their limitations to publishing size and frequency?

Access violation in Topic->Publish

I've seen an access violation crash in the code for Topic->Publish that seems to be a race condition. So far I've seen it under two circumstances;

  1. The server IP details are incorrect, but I try to publish something anyway
  2. The server IP details are correct, I publish something, and then the remote host disconnects for some reason (e.g. network interrupted or remote node killed).

I'll add more details as I look into this over the coming week or two.

Fix compile warnings

There are a large number of warnings when compiling the plugin. Most of them seem to be because windows.h wasn't guarded when it was included (a UE4 thing). This should be fixed.

Pull request on the way for this...

Add gitignore

Hello!

Thanks again for this awesome plugin. We should add a gitignore to prevent development artifacts getting into the repo by accident.

Pull request on it's way...

rosbridge2cpp compile errors when building plugin

I'm using Unreal 4.18.3 on Ubuntu 16.04. I've done the following:

  1. Create a new C++ Unreal project.
  2. Clone this repo into the <project>/Plugins directory.
  3. Enable the plugin through the editor menu.
  4. Restart the editor in order to build the plugin.

The build fails during the restart. Looking at the log, I found the following relevant errors/warnings:
unreal_build_errors.txt

repo name confusing

it should be something like "unreal_ros_integration" instead.

Note also the convention writing the repo names lowercase with underscore.

LZ4 support failed

When launching the rosbridge server as follows, i get an error message:
roslaunch rosbridge_server rosbridge_tcp.launch bson_only_mode:=True

The error message is:
Failed to load Python extension for LZ4 support. LZ4 compression will not be available.

The full console readout:

PARAMETERS

  • /rosapi/params_glob: [*]
  • /rosapi/services_glob: [*]
  • /rosapi/topics_glob: [*]
  • /rosbridge_tcp/authenticate: False
  • /rosbridge_tcp/bson_only_mode: True
  • /rosbridge_tcp/delay_between_messages: 0
  • /rosbridge_tcp/fragment_timeout: 600
  • /rosbridge_tcp/host:
  • /rosbridge_tcp/incoming_buffer: 65536
  • /rosbridge_tcp/max_message_size: None
  • /rosbridge_tcp/params_glob: [*]
  • /rosbridge_tcp/port: 9090
  • /rosbridge_tcp/retry_startup_delay: 5
  • /rosbridge_tcp/services_glob: [*]
  • /rosbridge_tcp/socket_timeout: 10
  • /rosbridge_tcp/topics_glob: [*]
  • /rosbridge_tcp/unregister_timeout: 10
  • /rosdistro: kinetic
  • /rosversion: 1.12.14

NODES
/
rosapi (rosapi/rosapi_node)
rosbridge_tcp (rosbridge_server/rosbridge_tcp)

ROS_MASTER_URI=http://localhost:11311

process[rosbridge_tcp-1]: started with pid [12234]
process[rosapi-2]: started with pid [12235]
Failed to load Python extension for LZ4 support. LZ4 compression will not be available.
Failed to load Python extension for LZ4 support. LZ4 compression will not be available.
registered capabilities (classes):

  • <class 'rosbridge_library.capabilities.call_service.CallService'>
  • <class 'rosbridge_library.capabilities.advertise.Advertise'>
  • <class 'rosbridge_library.capabilities.publish.Publish'>
  • <class 'rosbridge_library.capabilities.subscribe.Subscribe'>
  • <class 'rosbridge_library.capabilities.defragmentation.Defragment'>
  • <class 'rosbridge_library.capabilities.advertise_service.AdvertiseService'>
  • <class 'rosbridge_library.capabilities.service_response.ServiceResponse'>
  • <class 'rosbridge_library.capabilities.unadvertise_service.UnadvertiseService'>
    trying to start rosbridge TCP server..

Filling in missing standard message types

I want to use the sensor_msgs/JointState message type and I see that it is not in the ROSIntegration repo. This is a pretty common message if you're doing anything with robots, so I'm surprised it's not there. Anyway, has this message been implemented by anybody to your knowledge? I started to implement it but thought it worth asking.

Rosbridge connection established, but not able to publish.

Hi,
I've set the plugin and world up as per the instructions, and on pressing play rosbridge registers a connection.
But when putting the example publishing code in an actor, rosbridge does not seem to receive anything. Is there something in particular I have to do to make the code communicate properly?
Thanks.
This is what I have in BeginPlay():

        UTopic *ExampleTopic = NewObject<UTopic>(UTopic::StaticClass());
	UROSIntegrationGameInstance* ROSInstance = Cast<UROSIntegrationGameInstance>(GetGameInstance());
	ExampleTopic->Init(ROSInstance->ROSIntegrationCore, TEXT("/chatter"), TEXT("std_msgs/String"));


	// (Optional) Advertise the topic
	// Currently unimplemented in the plugin
	//ExamplePublishTopic->Advertise();

	// Publish a string to the topic
	TSharedPtr<ROSMessages::std_msgs::String> StringMessage(new ROSMessages::std_msgs::String("This is an example"));
	ExampleTopic->Publish(StringMessage);

Licensing info

Could you add information about the license this is released under?

Convert between coordinate systems in messages?

Hi there!
While working with a visual SLAM I realized that unreal and ROS use two different coordinate systems that, for simple use-cases don't really interfere, but which might be a problem later on.
According to the ROS docs (http://www.ros.org/reps/rep-0103.html), it uses a right-handed coordinate system with x forward, y left and z up. Unreal on the other hand uses a left-handed one with x forward, y right, z up.
So only the Y-coordinate changes sign, which is fine as long as everything stays in that coordinate system. ROS will just operate in a mirrored version of the unreal space. Unfortunately, when visual information is used, that becomes a problem.
So my question is, should we maybe change all messages that have to do with coordinate systems (mostly geometry_msgs/Vector3 and Quaternion) to automatically convert between the coordinate systems or should the user do that themselves?

Pros (to implement the conversion in the messages):

  • it's completely transparent to the user
  • fairly easy to implement
  • only needs to be implemented once
  • we could also do the conversion between cm and m units right there
    • scratch that, that would be a problem for euler rotations

Cons:

  • it's a bit slower in case you don't need the conversation because you're fine with a mirror universe
  • might lead to confusion about what the messages do in the background

Crash on publishing GeometryMsg

When trying to send a ROSMessages::geometry_msgs::Vector3 the editor crashes due to bson_init() being called with a nullpointer in GeometryMsgsVector3Converter.cpp line 20.
As far as I can see other geometry messages are affected as well.

Support for Unreal 4.23

ROSIntegration Team,

I've been using the ROSIntegration plugin successfully in 4.22, but have started seeing an issue (please see screenshot below) related to garbage collection in 4.23. The issue can be easily reproduced with a blank project, so I'm fairly certain the issue is an incompatibility between the ROSIntegration plugin and Unreal 4.23.

What are the team's plans regarding support for Unreal 4.23?

Steps to reproduce crash:

  • Create blank project in Unreal 4.23
  • Add ROSIntegration as a plugin to the blank project
  • Open the new project in the Unreal Editor
  • Start and stop simulation
  • Close the editor (crash occurs here)

image

License needed

This repo currently does not specify any licensing information. What license is this code released under?

Point of clarification on "Generate Project files" in readme

Might want to clarify the language in the readme to say that generating project files for UE4 to resolve include path problems for the plugin is done by right clicking on the associated .uproject file in file explorer (at least for Windows 10) to get the "Generate Visual Studio project files" command. Don't know how this would be done in Linux.

Only string and Float32 messages are available in blueprints

I'm using Unreal Engine 4.18.3 on Windows 10, with ROS and rosbridge running in WSL. I am able to create a topic by having a Topic blueprint object with an Event On Construct that uses an Init to create a topic called "/unreal/target_location". If I set the Message Type to string, and convert the location of the character to a string before sending it, I can send the desired position of a character in the world every tick by using a Send Message and connecting it to the On Tick Event in a blueprint.

Ideally, the Message Type of the Topic would be a geometry_msgs/Pose, rather than a string, but the only options I have available when creating the topic are string and float32.

I see in Topic.cpp at line 171-175, if there are no supported message types (SupportedMessageTypes.Num() == 0), then the string and float32 message types are added, so I assume that something is going wrong with my build, and no message types are added.

I have tried closing the editor, deleting the Binaries and Intermediate directories of the plugin (and of the whole project), and restarting the editor, which forces a rebuild of the plugin. This does not correct the problem.

Which is the version of Unreal Engine that this project works with?

Hi all,

I've tried to use this project on Unreal 4.14.3 and on Unreal 4.18.0 and on both cases I had problems (with Linux Ubuntu 16.04):

  1. ReadOnlyTargetRules is not recognized, so I had to rename it to TargetInfo.
  2. : base(Target) also raises the error The type 'UnrealBuildTool.ModuleRules' does not contain a constructor that takes '1' arguments, then I had to remove that part.
  3. I had to remove the line that contains UseExplicitOrSharedPCHs because of the error 'UnrealBuildTool.ModuleRules.PCHUsageMode' does not contain a definition for 'UseExplicitOrSharedPCHs'
  4. Unreal complains that MyFancyPluginObject.h must be included on all .cpp files as we can see below:
ERROR: All source files in module "ROSIntegration" must include the same precompiled header first.  Currently "/home/me/unreal_ws/MyProject/Plugins/ROSIntegration/Source/ROSIntegration/Classes/MyFancyPluginObject.h" is included by most of the source files.  The following source files are not including "/home/me/unreal_ws/MyProject/Plugins/ROSIntegration/Source/ROSIntegration/Classes/MyFancyPluginObject.h" as their first include:

here we have a list of all .cpp files on the ROSIntegration on the project

As you can see, I have a bunch of errors when trying to use this plugin when trying it with Unreal 4.14.3 and Unreal 4.18.0, so, is there a specific Unreal version or specific setup required to that makes this plugin work?

UGeometryMsgsTransformStampedConverter: Needs work

In the readme it states geometry_msgs/TransformStamped are supported from UE4->ROS
& ROS->UE4

ROS->UE4 doesn't appear to be supported even though the readme says it is.

See: line 15 of UGeometryMsgsTransformStampedConverter.cpp

{
	UE_LOG(LogROS, Warning, TEXT("ROSIntegration: TransformStamped receiving not implemented yet"));
	return false;
}

Next comment: UE4->ROS of geometry_msgs/TransformStamped are stated to work in the Readme. Has this been tested? I have implemented it but it just crashes Unreal. (I am trying to find out why...)

Rebuild from Source...

Good afternoon again,

I write you because some days ago I had the ROSIntegration and ROSIntegrationVision totally installed but due to some failure on my project I had to delete and create a new onw.

Now I am trying to install ROSIntegration and I cannot because I get the following failure.

image

For sure, I click YES and the message is as follows:

image

I try to rebuild and generate the project files from source but no good results.

Could you please help me?

I have seen that more people had this issue but using another UE4 version.

Thanks a lot.

Best regards.

An actor subscribed to a topic is automatically unsubscribed after about a minute

First of all, thank you for sharing the great plugin.

I have slightly modified the C++ publish / subscribe examples in the Readme.md.

After setting up & build the plugin, I have created two C++ Actor classes called, Publisher and Subscriber. In UE4Editor, I have added each class to the level editor by drag & drop.
Basically, the idea is that Publisher publishes a string message at each frame to the example_topic, and Subscriber listens to the example_topic and prints out what it heard to the console.

Every time I run the game in UE4Editor, everything works perfectly for the first 1 minute. However, some point after a minute, UE4Editor crashes with the following error message:

.
.
.
Subscriber listened: Message from frame 5035
Subscriber listened: Message from frame 5036
Subscriber listened: Message from frame 5037
Subscriber listened: Message from frame 5039
Subscriber listened: Message from frame 5040
Subscriber listened: Message from frame 5041
Subscriber listened: Message from frame 5042
Subscriber listened: Message from frame 5043
Subscriber listened: Message from frame 5045
Subscriber listened: Message from frame 5046
Subscriber listened: Message from frame 5047
Subscriber listened: Message from frame 5048
Subscriber listened: Message from frame 5049
Subscriber listened: Message from frame 5051
Subscriber listened: Message from frame 5052
Subscriber listened: Message from frame 5053
Subscriber listened: Message from frame 5054
Subscriber listened: Message from frame 5056
Subscriber listened: Message from frame 5057
Subscriber listened: Message from frame 5058
Subscriber listened: Message from frame 5059
Subscriber listened: Message from frame 5060
[ROSBridge] Found CB in UnregisterTopicCallback. Deleting it ... 
[ROSTopic] No callbacks registered anymore - unsubscribe from topic
Signal 11 caught.
Malloc Size=131076 LargeMemoryPoolOffset=131092 
CommonLinuxCrashHandler: Signal=11
Malloc Size=65535 LargeMemoryPoolOffset=196655 
[2018.05.25-09.27.55:775][937]LogLinux: === Critical error: ===
Unhandled Exception: SIGSEGV: invalid attempt to read memory at address 0x00000000e30800a0

[2018.05.25-09.27.55:775][937]LogLinux: Fatal error!

0x00007f9cd4b6a625 FLinuxPlatformStackWalk::CaptureStackBackTrace(unsigned long long*, unsigned int, void*)
0x00007f9cd4a18c75 FGenericPlatformStackWalk::StackWalkAndDump(char*, unsigned long, int, void*)
0x00007f9cd4b1b231 FLinuxCrashContext::CaptureStackTrace()
0x00007f9cca344400 CommonLinuxCrashHandler(FGenericCrashContext const&)
0x00007f9cd4b1d2bd PlatformCrashHandler(int, siginfo_t*, void*)
0x00007f9cd5781390 /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390) [0x7f9cd5781390]
0x00007f9bc6cc3efe rosbridge2cpp::ROSTopic::GeneratePublishID()
0x00007f9bc6cc3048 rosbridge2cpp::ROSTopic::Publish(_bson_t*)
0x00007f9bc6cd7f18 UTopic::Impl::Publish(TSharedPtr<FROSBaseMsg, (ESPMode)0>)
0x00007f9bc6cc98b3 UTopic::Publish(TSharedPtr<FROSBaseMsg, (ESPMode)0>)
0x00007f9bb5d2da58 APublisher::Publish(char const*)
0x00007f9bb5d2d81d APublisher::Tick(float)
0x00007f9cd1243983 FActorTickFunction::ExecuteTick(float, ELevelTick, ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)
0x00007f9cd25efab6 FTickFunctionTask::DoTask(ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&)
0x00007f9cd25ef41f TGraphTask<FTickFunctionTask>::ExecuteTask(TArray<FBaseGraphTask*, FDefaultAllocator>&, ENamedThreads::Type)
0x00007f9cd4a4443f FNamedTaskThread::ProcessTasksNamedThread(int, bool)
0x00007f9cd4a43903 FNamedTaskThread::ProcessTasksUntilQuit(int)
0x00007f9cd25e9813 FTickTaskSequencer::ReleaseTickGroup(ETickingGroup, bool)
0x00007f9cd25e2694 FTickTaskManager::RunTickGroup(ETickingGroup, bool)
0x00007f9cd1c2635f UWorld::RunTickGroup(ETickingGroup, bool)
0x00007f9cd1c303ee UWorld::Tick(ELevelTick, float)
0x00007f9ccb4888a2 UEditorEngine::Tick(float, bool)
0x00007f9ccbeb93e6 UUnrealEdEngine::Tick(float, bool)
0x00000000004255f3 FEngineLoop::Tick() [/home/jchoi/UnrealEngine/Engine/Source/Runtime/Launch/Private/LaunchEngineLoop.cpp:3339]
0x000000000042fed3 GuardedMain(wchar_t const*) [/home/jchoi/UnrealEngine/Engine/Source/Runtime/Launch/Private/Launch.cpp:62]
0x00007f9cca345227 CommonLinuxMain(int, char**, int (*)(wchar_t const*))
0x00007f9cc9d90830 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7f9cc9d90830]
0x00000000004169c9 /home/jchoi/UnrealEngine/Engine/Binaries/Linux/UE4Editor(_start+0x29) [0x4169c9]

[2018.05.25-09.27.55:785][937]LogExit: Executing StaticShutdownAfterError
Malloc Size=772626 LargeMemoryPoolOffset=969298 
LogPlatformFile: Not using cached read wrapper
LogInit: Display: RandInit(1644944209) SRandInit(1644944209).
LogTaskGraph: Started task graph with 4 named threads and 7 total threads with 1 sets of task threads.
LogInit: Build: ++UE4+Release-4.19-CL-0
LogInit: Engine Version: 4.19.2-0+++UE4+Release-4.19
LogInit: Compatible Engine Version: 4.19.0-0+++UE4+Release-4.19
LogInit: Net CL: 0
LogInit: Compiled (64-bit): May 10 2018 13:38:33
LogInit: Compiled with Clang: 3.8.0 (tags/RELEASE_380/final)
LogInit: Build Configuration: Shipping
LogInit: Branch Name: ++UE4+Release-4.19
LogInit: Command Line:  -Abslog=/home/jchoi/Documents/Unreal Projects/ROSIntegrationTest/Saved/Logs/ROSIntegrationTest-CRC.log /home/jchoi/Documents/Unreal Projects/ROSIntegrationTest/Saved/Crashes/crashinfo-ROSIntegrationTest-pid-26649-13C1CCC037051219001B0312620BBC7F/
LogInit: Base Directory: /home/jchoi/UnrealEngine/Engine/Binaries/Linux/
LogInit: Installed Engine Build: 1
LogInit: Presizing for max 100000 objects, including 0 objects not considered by GC, pre-allocating 0 bytes for permanent pool.
LogInit: Object subsystem initialized
[2018.05.25-09.27.55:863][  0]LogInit: Linux hardware info:
[2018.05.25-09.27.55:863][  0]LogInit:  - we are the first instance of this executable
[2018.05.25-09.27.55:863][  0]LogInit:  - this process' id (pid) is 5484, parent process' id (ppid) is 26649
[2018.05.25-09.27.55:863][  0]LogInit:  - we are not running under debugger
[2018.05.25-09.27.55:863][  0]LogInit:  - machine network name is 'jchoi-desktop'
[2018.05.25-09.27.55:863][  0]LogInit:  - user name is 'jchoi' (jchoi)
[2018.05.25-09.27.55:863][  0]LogInit:  - we're logged in locally
[2018.05.25-09.27.55:863][  0]LogInit:  - we're running with rendering
[2018.05.25-09.27.55:863][  0]LogInit:  - CPU: GenuineIntel 'Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz' (signature: 0x906E9)
[2018.05.25-09.27.55:863][  0]LogInit:  - Number of physical cores available for the process: 4
[2018.05.25-09.27.55:863][  0]LogInit:  - Number of logical cores available for the process: 8
[2018.05.25-09.27.55:863][  0]LogInit:  - Cache line size: 64
[2018.05.25-09.27.55:863][  0]LogInit:  - Memory allocator used: binned2
[2018.05.25-09.27.55:863][  0]LogLinux: Skipped benchmarking clocks because the engine is running in a standalone program mode - CLOCK_REALTIME will be used.
[2018.05.25-09.27.55:863][  0]LogInit: Linux-specific commandline switches:
[2018.05.25-09.27.55:863][  0]LogInit:  -nodwarf (currently OFF): suppress parsing of DWARF debug info (callstacks will be generated faster, but won't have line numbers)
[2018.05.25-09.27.55:863][  0]LogInit:  -ansimalloc - use malloc()/free() from libc (useful for tools like valgrind and electric fence)
[2018.05.25-09.27.55:863][  0]LogInit:  -jemalloc - use jemalloc for all memory allocation
[2018.05.25-09.27.55:863][  0]LogInit:  -binnedmalloc - use binned malloc  for all memory allocation
[2018.05.25-09.27.55:863][  0]LogInit:  -httpproxy=ADDRESS:PORT - redirects HTTP requests to a proxy (only supported if compiled with libcurl)
[2018.05.25-09.27.55:863][  0]LogInit:  -reuseconn - allow libcurl to reuse HTTP connections (only matters if compiled with libcurl)
[2018.05.25-09.27.55:863][  0]LogInit:  -virtmemkb=NUMBER - sets process virtual memory (address space) limit (overrides VirtualMemoryLimitInKB value from .ini)
[2018.05.25-09.27.55:863][  0]LogInit:  - Physical RAM available (not considering process quota): 16 GB (16004 MB, 16388412 KB, 16781733888 bytes)
[2018.05.25-09.27.55:864][  0]LogUObjectArray: 149 objects as part of root set at end of initial load.
[2018.05.25-09.27.55:864][  0]LogUObjectAllocator: 22184 out of 0 bytes used by permanent object pool.
[2018.05.25-09.27.55:864][  0]LogUObjectArray: CloseDisregardForGC: 0/0 objects in disregard for GC pool
[2018.05.25-09.27.55:864][  0]LogInit: Using OS detected language ().
[2018.05.25-09.27.55:864][  0]LogInit: Using OS detected locale ().
[2018.05.25-09.27.55:864][  0]LogTextLocalizationManager: No localization for '' exists, so 'en' will be used for the language.
[2018.05.25-09.27.55:864][  0]LogTextLocalizationManager: No localization for '' exists, so 'en' will be used for the locale.
[2018.05.25-09.27.55:866][  0]CrashReportClientLog: CrashReportClientVersion=1.0
[2018.05.25-09.27.55:866][  0]CrashReportClientLog: CrashReportReceiver disabled
[2018.05.25-09.27.55:866][  0]CrashReportClientLog: DataRouterUrl: https://datarouter.ol.epicgames.com/datarouter/api/v1/public/data
[2018.05.25-09.27.55:866][  0]LogExit: Preparing to exit.
[2018.05.25-09.27.55:866][  0]LogExit: Object subsystem successfully closed.
[2018.05.25-09.27.55:867][  0]LogModuleManager: Shutting down and abandoning module CoreUObject (4)
[2018.05.25-09.27.55:867][  0]LogModuleManager: Shutting down and abandoning module SandboxFile (2)
[2018.05.25-09.27.55:867][  0]LogExit: Exiting.
Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.

The crash occurs at different frame number every time I try.

I was able to prevent UE4Editor from crashing by setting

bPublish = false;

in the Publisher.h below. (i.e. by not publishing any message)
But I still get the following message

[ROSBridge] Found CB in UnregisterTopicCallback. Deleting it ... 
[ROSTopic] No callbacks registered anymore - unsubscribe from topic

I've never called ROSBridge::UnregisterTopicCallback in my code, but somehow it is called and causes the Subscriber to unsubscribe from the topic. So I tried to modify some parts of the plugin code, but it didn't go anywhere.

I've been fighting with this more than 6 hours but have no idea to fix it. Please help me!

Here are my codes.

Publisher.h:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Publisher.generated.h"

UCLASS()
class ROSINTEGRATIONTEST_API APublisher : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	APublisher();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

    class UTopic *ExampleTopic;
	
    void Publish(const char* Content);

    int nFrames;
    bool bPublish = true;
};

Publisher.cpp:

// Fill out your copyright notice in the Description page of Project Settings.


#include "Publisher.h"
#include "ROSIntegration/Classes/RI/Topic.h"
#include "ROSIntegration/Classes/ROSIntegrationGameInstance.h"
#include "ROSIntegration/Public/std_msgs/String.h"

#include <sstream>


// Sets default values
APublisher::APublisher()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

}

// Called when the game starts or when spawned
void APublisher::BeginPlay()
{
	Super::BeginPlay();

    ExampleTopic = NewObject<UTopic>(UTopic::StaticClass());
    UROSIntegrationGameInstance* rosinst = Cast<UROSIntegrationGameInstance>(GetGameInstance());
    ExampleTopic->Init(rosinst->ROSIntegrationCore, TEXT("/example_topic"), TEXT("std_msgs/String"));
}

// Called every frame
void APublisher::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

    nFrames++;
    if(bPublish)
    {
        std::ostringstream oss;
        oss << "Message from frame " << nFrames;
        Publish(oss.str().c_str());
    }
}

void APublisher::Publish(const char *Content)
{
    TSharedPtr<ROSMessages::std_msgs::String> StringMessage(new ROSMessages::std_msgs::String(Content));
    ExampleTopic->Publish(StringMessage);
}

Subscriber.h:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Subscriber.generated.h"

UCLASS()
class ROSINTEGRATIONTEST_API ASubscriber : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ASubscriber();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

    class UTopic *ExampleTopic;
	
    static void SubscribeCallbackImpl(TSharedPtr<class FROSBaseMsg> msg);
};

Subscriber.cpp:

// Fill out your copyright notice in the Description page of Project Settings.


#include "Subscriber.h"
#include "ROSIntegration/Classes/RI/Topic.h"
#include "ROSIntegration/Classes/ROSIntegrationGameInstance.h"
#include "ROSIntegration/Public/std_msgs/String.h"

#include <iostream>

// Sets default values
ASubscriber::ASubscriber()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

}

// Called when the game starts or when spawned
void ASubscriber::BeginPlay()
{
	Super::BeginPlay();
	
    ExampleTopic = NewObject<UTopic>(UTopic::StaticClass());
    UROSIntegrationGameInstance* rosinst = Cast<UROSIntegrationGameInstance>(GetGameInstance());
    ExampleTopic->Init(rosinst->ROSIntegrationCore, TEXT("/example_topic"), TEXT("std_msgs/String"));

    std::function<void(TSharedPtr<FROSBaseMsg>)> SubscribeCallback = ASubscriber::SubscribeCallbackImpl;
    ExampleTopic->Subscribe(SubscribeCallback);
}

// Called every frame
void ASubscriber::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

void ASubscriber::SubscribeCallbackImpl(TSharedPtr<FROSBaseMsg> msg)
{
    auto Concrete = StaticCastSharedPtr<ROSMessages::std_msgs::String>(msg);
    if (Concrete.IsValid())
    {
        std::cout << "Subscriber listened: " << TCHAR_TO_UTF8(*(Concrete->_Data)) << std::endl;
    }
    return;
}

Error when opening a project using this plugin

Hi,

I am receiving this error when I start a project that uses this plugin:
rosintegrationerror1

Clicking "No" results in this error:
rosintegrationerror2

My setup is Ubuntu 16.04.3 with Unreal Engine 4.18.2.

I set up Unreal Engine using the following steps:

git clone https://github.com/EpicGames/UnrealEngine.git
cd UnrealEngine
git checkout "4.18.2-release"
./Setup.sh
./GenerateProjectFiles.sh
make
cd Engine/Binaries/Linux
./UE4Editor
<Created a project called ROSIntegrationTest then exited the editor>

I set up this plugin using the following steps:

cd ~/Documents/Unreal\ Projects/ROSIntegrationTest
mkdir Plugins
cd Plugins
git clone https://github.com/code-iai/ROSIntegration.git
cd ~/UnrealEngine/Engine/Binaries/Linux
./UE4Editor

Here is the UE4.log generated by this attempt.

I'm new to Unreal so perhaps I'm making a rudimentary mistake. Any help you could provide would be appreciated.

Thanks

ROS time synchronization between UE4 and ROS core

I am struggling to get the time synchronization working properly.
My setup: Simulating sensors and odometry in UE4 version 4.20.3
In ROS, Kinetic, I am trying to run robot_localization node.

The problem arises since in UE4 I am simulating a LIDAR which slows down simulation. Trying to compute odometry things get scaled odd.

Question I have, what exactly does setting use_sim_time=true do in the code? When I set this true the time stamps are running incredibly fast. Where is this time derived from? I have looked through the code and cannot find anything that sets the time when sim_time is true but this line: ROSTime ROSTime::sim_time(0, 0);

Next question, how have you handled when UE4 frame rate dips low and thus data publishing gets weird?

Thanks in advance.

Errors in ROS when publishing messages in Unreal

Hi there!

for a while now I was sometimes getting these kinds of error messages from nodes that subscribe to topics on which I publish messages with ROSIntegration.

Most of the time it's something like this

[ERROR] [1552475202.508205515]: a message of over a gigabyte was predicted in tcpros. that seems highly unlikely, so I'll assume protocol synchronization is lost.
[ERROR] [1552475202.508506874]: Exception thrown when deserializing message of length [0] from [/rosbridge_tcp]: Buffer Overrun
[ERROR] [1552475202.508568769]: Exception thrown when deserializing message of length [19] from [/rosbridge_tcp]: Buffer Overrun

Sometimes something like this happens

[ERROR] [1552418004.467198903]: Exception thrown when deserializing message of length [0] from [/rosbridge_tcp]: Buffer Overrun
[ERROR] [1552418004.467337097]: Exception thrown when deserializing message of length [6] from [/rosbridge_tcp]: Buffer Overrun
[ERROR] [1552418004.475854]: [Client 0] [id: publish:/ugv_0/odometry:43] publish: integer out of range for 'I' format code

And sometimes a mixture of both.
Because of that last error I already tried to find an integer in the header of nav_msgs/Odometry that is maybe out of bounds. But the only integers there are in the timestamp which I can guarantee is not out of bounds and the sequence ID which, as I learned today is discarded and refilled by ROS anyway (ros2/common_interfaces#1 (comment)).
The errors mostly happen in the first few seconds of the nodes execution and crash the node. If it runs for about 5 seconds without crash it doesn't crash afterward as far as I can tell.
I have tried to run a node that throws these errors in gdb to debug it, but the exceptions are caught somewhere else and I don't get a chance to see where they come from. I also can't find anything relevant when googling for the error messages.
Do you have any idea where this comes from or where to start debugging?
Thanks in advance!

GeTArrayFromBSON doesn't pass on LogOnErrors (suggestion for improvement)

The BaseMessageConverter::GetTArrayFromBSON template definition has its third parameter as the function to run for each element in the array. That definition, i.e.,

const std::function<T(FString, bson_t*, bool&)>& keyToT

does not support passing LogOnErrors parameter to the array element parsing function, resulting in an error message each time GetTArrayFromBSON is called when it's loop hits the end of the array looking for the next element.
The ActionlibMsgsGoalStatusArrayConverter::_bson_extract_child_goal_status_array is an example that uses the capture clause of the lambda expression to circumvent this limitation, but since the LogOnErrors parameter is ubiquitous throughout the Converter code, using the capture clause seems like an unnecessarily obscure way to get that variable into the keyToT body.
Would it not be cleaner to just add an extra bool parameter to the keyToT definition, i.e., instead of

static TArray<T> GetTArrayFromBSON(FString Key, bson_t* msg, bool &KeyFound, const std::function<T(FString, bson_t*, bool&)>& keyToT, bool LogOnErrors = true)

have

static TArray<T> GetTArrayFromBSON(FString Key, bson_t* msg, bool &KeyFound, const std::function<T(FString, bson_t*, bool&, bool&)>& keyToT, bool LogOnErrors = true)

and then explicitly pass LogOnErrors to the keyToT call in the GetTArrayFromBSON for loop? Granted, that forces a minor change to every instantiation of GetTArrayFromBSON. Food for thought.

Where is the 'AdditionalDependencies' section of my Unreal Project?

Hello!

Thank you for this excellent repo. I'm going to be doing some UE4 development with ROS in the near future so you might see some issues (and hopefully pull requests) from me soon.

In README.md, what does "Add ‚ROSIntegration’ to your AdditionalDependencies Section of your Unreal Project" refer to? I can't figure out what this step is saying I should do. Could you elaborate?

Example project

Nice project, It would be great if there was an example project with different topics already implemented, just to get a better idea how it works.

Cast<UROSIntegrationGameInstance> always get nullptr

Hi,

Thank you for sharing this powerful plugin.

Currently I have a problem with the sample code

UROSIntegrationGameInstance* rosinst = Cast<UROSIntegrationGameInstance>(GetGameInstance());

GetGameInstance() is not nullptr while rosinst is always nullptr.

Do you have any idea about it? (My Unreal Version is 4.20)

Thanks a lot.

Failed plugin build in UE4.20

The recent update to SensorMsgsImageConverter (in Private/Conversion/Messages/sensor_msgs) seems to be blocking the plugin from building now, at least in UE 4.20 error in build log is

\Private\Conversion/Messages/sensor_msgs/SensorMsgsImageConverter.h(37): error C2039: 'data': is not a member of 'ROSMessages::sensor_msgs::Image'
\Public\sensor_msgs/Image.h(8): note: see declaration of 'ROSMessages::sensor_msgs::Image'

If you comment out line 37 in SensorMsgsImageConverter it builds fine; don't think it is due to building on 4.20 looking at it quickly.
Building with VS2017 on W10 with UE 4.20.3

No option to set name of topic to subscribe to in Subscribe

When attempting to create a subscription to a topic in a Blueprint according to the documentation from this project's README.md, the Subscribe only has the input pin Target, and no Topic Name, Message Type, or Queue input pins. See attached image.

crop_no_topic

Is it preferred to use Construct Object From Class to create the topic instance and provide it on the Target pin of the Subscribe?

Support for UE 4.16.x?

Hi,

I noticed support for 4.16.x was removed. Is there any reason for this? Can I revert back to a version that has it?

I need to be able to use it with some existing projects that would be a pain to upgrade.

Thanks!

Unreal Engine crashes when creating a new C++ classes inside of the plugin

Hi all,
I'm working on Unreal Engine 4.19 installed on a Windows 10 machine, I managed to setup the plugin properly and to subscribe to an existing ROS node succesfully.
Still I can't create new C++ classes inside of the ROSIntegration module because UE crashes everytime I tried to do so, it allows me just to create class inside the main directory of the Project.
I had the same issuses when I tried, according to the example, to create a new C++ class based on "ROSIntegrationGameInstance" (Blueprint class worked fine).
I attach you the callstack after UE crashes.
Did anyone have the same problem? Do you know how could I solve it?
Thanks
callstack.txt

Possibility to create new messages/services etc. outside of this plugin

Right now it is impossible to create new ROS messages / services / converter etc. outside of this plugin, because all base classes are private and not prepared to be available in a shared library. This means, this problem can't be solved by just moving the classes to the Public folder. At this ways it's quite hard to keep custom files seperated from this repository.

Add instructions on adding custom message types

It currently requires a fair bit of effort to add message types to the core plugin. The readme should include a section showing how end-users can add new message definitions to their projects. I'll try and add this in the next week or so.

Faster binary messages with cbor?

As outlined in RobotWebTools/rosbridge_suite#370 I have some problems when sending a large amount of messages with arrays as they need to be encoded and decoded. In the above issue, one of the contributors of rosbridge suggested trying the cbor compression that was recently added to the development branch of rosbridge.
As far as I can see, cbor seems like it would be a good adition to ROSIntegration. Over at http://cbor.io/impls.html they have links to quite a lot of different cbor libraries to pick from.
Depending on how much work it would take I'm very interested in (helping to) add cbor to ROSIntegration or create a fork using cbor. I'm well aware that all messages would need new de- and encoding code and that the communication with the rosbridge has to be reworked.

So, tl;dr, my question is, how much work would it take to change the encoding of the messages in the backend of ROSIntegration? Does it need any work at all? In theory, if all message-converters are rewritten, it's mostly a question of configuring rosbridge differently, isn't it?

Compile issue with new project

Hi all,

I followed the instructions in the README but I keep getting this error when compiling from the Unreal editor:

/home/user/Documents/Unreal Projects/MyProject2/Source/MyProject2/MyActor.cpp:7:10: fatal error: 'ROSIntegration/Classes/RI/Topic.h' file not found

Same happens if I try to compile from terminal.

I tried running (both with UE4Editor closed or open) the following

/path/to/UnrealEngine/GenerateProjectFiles.sh /path/to/Myproject2.uproject

as stated in the README but it didn't seem to fix the problem for me. Is this the right way to update the build system to link against the new plugin? Maybe some other option to give to GenerateProjectFiles script?
I am kinda new to Unreal so apologies if the question is trivial.

TCPConnection: Handle Joined Messsages

Hi Sanic,

I'm trying to implement support for sensor_msgs/PointCloud2 (and friends) so I can visualize point clouds in UE4. See my branch support-point-clouds.

So far, I have successfully added the message definitions for the required message types. I have a Ubuntu 16.04 ROS kinetic instance running ROSBridge in BSON mode, and I'm publishing a topic that is a throttled sensor_msgs/PointCloud2 (about 1 frame every 2 seconds). I can visualize the PointCloud2 in RVIZ just fine, and I know my ROS <> UE4 connection is fine, because I can subscribe / publish std_msgs/String topics without error.

When I try to subscribe to the sensor_msgs/PointCloud2 topic, the BSON parsing fails at bson_init_static() circa line 254 in TCPConnection.cpp. I believe this is happening because of a comment circa line 140 in TCPConnection - it says

// TODO handle joined messages while reading the buffer
uint32 count;

After changing the std::cout calls in TCPConnection.cpp to UE_LOG calls, I get the following console output in Unreal;

LogTemp: Repeating last play command: Selected Viewport
LogPlayLevel: PlayLevel: No blueprints needed recompiling
PIE: New page: PIE session: Default (23 Jan 2018 9:43:24 pm)
LogPlayLevel: Creating play world package: /Game/UEDPIE_0_Default
LogPlayLevel: PIE: StaticDuplicateObject took: (0.026701s)
LogAIModule: Creating AISystem for world Default
LogPlayLevel: PIE: World Init took: (0.003329s)
LogPlayLevel: PIE: Created PIE world by copying editor world from /Game/Default.Default to /Game/UEDPIE_0_Default.Default (0.031225s)
LogTemp: Setting up receiver thread...
LogTemp: Receiving
LogTemp: rosbridge2cpp init successful
LogTemp: Send 201 bytes from (201 / 201) Bytes 
LogTemp: T
LogTemp: <SendDataEnd:53641>
LogTemp: Send 218 bytes from (218 / 218) Bytes 
LogTemp: T
LogTemp: <SendDataEnd:8110>
LogInit: XAudio2 using 'Speaker/HP (Realtek High Definition Audio)' : 2 channels at 48 kHz using 32 bits per sample (channel mask 0x3)
LogInit: FAudioDevice initialized.
LogLoad: Game class is 'GameModeBase'
LogWorld: Bringing World /Game/UEDPIE_0_Default.Default up for play (max tick rate 60) at 2018.01.23-11.43.24
LogWorld: Bringing up level for play took: 0.001184
LogTemp: Added Default__GeometryMsgsPoint32Converter with type geometry_msgs/Point32 to TopicConverterMap
LogTemp: Added Default__GeometryMsgsQuaternionConverter with type geometry_msgs/Quaternion to TopicConverterMap
LogTemp: Added Default__GeometryMsgsTransformConverter with type geometry_msgs/Transform to TopicConverterMap
LogTemp: Added Default__GeometryMsgsTransformStampedConverter with type geometry_msgs/TransformStamped to TopicConverterMap
LogTemp: Added Default__GeometryMsgsVector3Converter with type geometry_msgs/Vector3 to TopicConverterMap
LogTemp: Added Default__SensorMsgsCameraInfoConverter with type sensor_msgs/CameraInfo to TopicConverterMap
LogTemp: Added Default__SensorMsgsChannelFloat32Converter with type sensor_msgs/ChannelFloat32 to TopicConverterMap
LogTemp: Added Default__SensorMsgsImageConverter with type sensor_msgs/Image to TopicConverterMap
LogTemp: Added Default__SensorMsgsPointCloud2Converter with type sensor_msgs/PointCloud2 to TopicConverterMap
LogTemp: Added Default__SensorMsgsPointCloudConverter with type sensor_msgs/PointCloud to TopicConverterMap
LogTemp: Added Default__SensorMsgsPointFieldConverter with type sensor_msgs/PointField to TopicConverterMap
LogTemp: Added Default__SensorMsgsRegionOfInterestConverter with type sensor_msgs/RegionOfInterest to TopicConverterMap
LogTemp: Added Default__StdMsgsHeaderConverter with type std_msgs/Header to TopicConverterMap
LogTemp: Added Default__StdMsgsStringConverter with type std_msgs/String to TopicConverterMap
LogTemp: Added Default__Tf2MsgsTFMessageConverter with type tf2_msgs/TFMessage to TopicConverterMap
LogTemp: Send 183 bytes from (183 / 183) Bytes 
LogTemp: T
LogTemp: <SendDataEnd:15088>
LogTemp: Subscribed now
PIE: Play in editor start time for /Game/UEDPIE_0_Default 0.628
LogTemp: d14600
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d59860
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d54020
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d14600
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d43800
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d1460
LogTemp: Reading length...
LogTemp: Total message length is: 6947308
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Error on BSON parse - Ignoring message
LogTemp: d65536
LogTemp: Reading length...
LogTemp: Total message length is: 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: d65536
LogTemp: Message read mode
LogTemp: Error: Failed to recv() in message retreival mode even though data is pending. Count vs. bytes_read: 65536, 0
LogTemp: Error: Error on connection

Do you think this error could be because 'handle joined messages while reading the buffer' hasn't been implemented yet? What would it take to implement this? If it would make it easier for you to assist me, I can share a bagfile that publishes a simple sensor_msgs/PointCloud2 topic for testing purposes.

Thank you,

Aaron.

Compile error when building a sample project using the plugin

Hello Guys

I'm trying this ROSIntegration plugin for first time and I'm having the following compile error:

error C2039: '_Ric': is not a member of 'UROSIntegrationGameInstance'

I created a C++ project using the Advanced Vehicle Template and I have followed all the steps in the Usage section of the README with success. But when I moved to the next section "C++ Topic Publish Example" I did like the instructions: I added the code into the BeginPlay() of the Pawn class and I've got this error.

Thanks

Change plugin log message categories

This plugin currently logs a lot of extra information as different ELogVerbosity categories - Error, Warning etc. These should be moved to the default Log category where appropriate.

Pull request on the way for this one...

FROSTime Portability

there's no guarantee that epoch is 1970 on high_resolution_clock.
Most implementation typedef/using high_resolution_clock as steady_clock or system_clock

on my computer epoch is boot time, which make the sensor_Msgs timeout

Where to add publisher and subscriber code?

Hi.

I am new to Unreal Engine. I have used ROS with Gazebo and VREP but not with UE4. I added the ROSIntegration plugin and its successfully added. But now it says to

create a C++ Actor and let it publish a message once at the BeginPlay Event. Add the following code into the BeginPlay() method of any actor that is put into to your world to see if the connection to ROS works

I don't know where to start, where to add the code, and where can I see if my publisher/subscriber is working? I am stuck with this since 3 weeks. I would really appreciate if someone would help me with this.

Rosbridge connected but no published topics visible

when launching the rosbridge_server:
roslaunch rosbridge_server rosbridge_tcp.launch bson_only_mode:=True

I get the confirmation that it connected:
[INFO] [1547805756.197721]: Rosbridge TCP server started on port 9090
[INFO] [1547807016.693514]: [Client 0] connected. 1 client total.

The rostopic list does not show anything
/client_count
/rosout
/rosout_agg

The rosbridge_server lists the following versions:

  • /rosdistro: melodic
  • /rosversion: 1.14.3
    Running on ubuntu 18.04

I already tried this:
RobotWebTools/rosbridge_suite#353

Also running Unreal in a separate Windows machine, resulted in the same problem

The C++ code in unreal is a copy paste of the example in the readme, copied into:
void AMyActor::BeginPlay()

I had the test example working before, but i have run some updates in the meantime. So it is possible that an updated dependency has caused this.

I also tried using the blueprint setup, but nothing is published. I also tried the subscribe method, but for some reason, my subscribe blueprint does not give me the same options displayed in the readme file.

accessing class instance variables in subscriber callback

Example code for a subscriber demonstrates accessing content of a message and displaying it without storing it inside of a lambda function. For practical applications, you really want to capture message content and store it with an instance of the listener class. It's not clear to me how to change that lambda function into a class instance method call or pass an instance of the class to the lambda function. Suggestions?

Matching Motion in Gazebo and UE4

I am working on a project where I am simulating the cameras in UE4 and some of the sensors in Gazebo, e.g., IMU/GPS/Magentometer using the Hector Package, and therefore need the quadcopter to move in Gazebo identically to how it does in UE4. I think I can 'hack' a solution by controlling the quad in Gazebo and subscribing to the Gazebo published odometry topic in UE4 then 'teleporting' the quad to the published odom topic. However, I am wondering if there is a cleaner or suggested way to accomplish this.

Thanks

tf2_msgs types

The ROSIntegration landing page has a table showing the messages that have been implemented. I see that tf2_msgs/TFMessage is marked as complete for UE4 to ROS but not the other way around. Is that still the case or is there some issue that made implementing it the other direction particularly difficult?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.