HoangGiang93 / URoboViz

Unreal plugin for robot visualisation using ROS connecting with WebSockets.
MIT License
67 stars 7 forks source link

Problem setting up the environment #8

Closed aiolosgs closed 1 year ago

aiolosgs commented 1 year ago

Hi, I have a problem while setting up the environment, i followed the instruction on wiki and i'm using UE 4.27.2, when I tried to create a c++ project in UE4Editor, it shut down automatically, but some files were created in the project directory, after that I tried to open the project using the .uproject file, I got the message "The following modules are missing or built with a different engin version", and It shows the "Engine modules are out of date" when I tried to rebuilt the project. Could you please help me with this problem? BTW, the problem only occured when I try to create c++ projects, creating blueprint project is fine. I'm using ubuntu 20.04

HoangGiang93 commented 1 year ago

That is the common issue of Unreal Engine. Go to source folder of Unreal Engine, command:

./GenerateProjectFiles.sh <path/to/your/project/YourProject.uproject> -game -engine

It will generate the missing modules for you. After that you can compile it normally.

aiolosgs commented 1 year ago

I tried what you suggested, but still got the same error. I'm new to UE, I wonder what's the difference between c++ project and blueprint project. Can I use the blueprint project?

HoangGiang93 commented 1 year ago

Are you sure that you got the same error? Once the bash file is executed, it should generate the missing modules for you. Could you send me a snapshot of your execution? C++ project is just like Blueprint project plus module in C++. You should use C++ project because my Plugin has C++ modules. In general you could write Modules or Plugins using Blueprint or C++. Blueprint is slower but easier to implement and C++ is faster but harder to implement. People use Blueprint for fast coding and testing, C++ for anything else that Blueprint can't

aiolosgs commented 1 year ago

run_command this is the result when I run the command you suggested. missing_modules missing_modules2 these are the message I got when I double click the uproject file to open it. I searched on the internet but no solution found. Is it a problem of UE engine in Linux? I'm going to give it a try on Windows. Any advice would be appreciated.

HoangGiang93 commented 1 year ago

Have you tried to follow this tutorial? https://github.com/HoangGiang93/URoboViz/wiki/1.-Installation

aiolosgs commented 1 year ago

I tried the tutorial first, but while I creating the project, the editor shutdown, then I got the message when I open the project either from the editor or by the uproject file.

HoangGiang93 commented 1 year ago

Could you build the project using Vscode? (By pressing Ctrl+Shift+B)

aiolosgs commented 1 year ago

I reinstalled UE with the latest version. now I can create the c++ project, and the vscode will automatically open after I create a c++ project, but when I put the three plugins into Plugins folder and build the project in vscode I got this error. error

aiolosgs commented 1 year ago

I've fixed this by modifying some source code of UROSBridge, now I can build the project and launch the editor using vscode, thanks.

jonskerlj commented 1 year ago

I've fixed this by modifying some source code of UROSBridge, now I can build the project and launch the editor using vscode, thanks.

Hi, I'm getting the same error as you mentioned above. @aiolosgs Could you please share how you modified the source code of UROSBridge in order to build the project? Thanks in advance.

aiolosgs commented 1 year ago

The error is in function FWebSocket::Connect in UROSBridge/Source/UROSBridge/Private/WebSocket.cpp, I change the code as below,

std::string inetAddr = TCHAR_TO_ANSI(*StrInetAddress);
std::string hostAddr = TCHAR_TO_ANSI(*HostAddr);
struct lws_client_connect_info ConnectInfo = {
    Context, inetAddr.c_str(), InetPort, false, "/", hostAddr.c_str(), hostAddr.c_str(), Protocols[1].name, -1, this
};

//   struct lws_client_connect_info ConnectInfo = {
//          Context, TCHAR_TO_ANSI(*StrInetAddress), InetPort, false, "/", TCHAR_TO_ANSI(*HostAddr), TCHAR_TO_ANSI(*HostAddr), Protocols[1].name, -1, this
//  };
Wsi = lws_client_connect_via_info(&ConnectInfo);
check(Wsi);

you have to declare a local variable, then copy the value to the struct.

HoangGiang93 commented 1 year ago

Thank you, since I'm not the maintainer of UROSBridge and also never had that error so I didn't know how to tackle that issue.