Closed FBanani closed 1 year ago
Having multiple EgoVehicles within the same world in Carla/DReyeVR is difficult because it has to go through a network, so both of the worlds are communicated. While not impossible (since we could create a peer-to-peer mirror of the other person's EgoVehicle and sensor characteristics) this is certainly non-trivial in Carla and we haven't even really thought about this or designed DReyeVR to support this in any way.
Since the EgoVehicles in DReyeVR are run on the "server" (UE4 binary) directly (to make use of UE4's VR capabilities and improved performance) rather than through a pygame client (which could then be operated over a network) I don't think this can be done in the same way Carla handles multiple ego-vehicles.
What could be done is spawning a non-VR-DReyeVR-ego-vehicle using something like manual_control.py
while there is a participant in the main "server", but then only one of the two participants is in VR while the other is controlling another vehicle through the flat Carla pygame instance.
TL;DR: having two VR players on the same DReyeVR instance is very difficult because of synchronization/communication, but having one VR and one pygame player should be doable. Does this work for your situation?
You mean that it is possible to have 2 different people one of them can see Carla through VR headset one of them can see through the monitor, yes? If yes, could both of them drive with different Logitech wheels and pedals?
Yes, I believe this should work since it is effectively just running DReyeVR plus using this manual_control.py
script (provided by CARLA) which also supports a logitech wheel plugin. However I'm not sure if these two players can run on the same computer (since the focus will be either on the server (player 1) or the pygame (player 2), so it might be simpler to have two computers where only one of them (with the better GPU) running the Carla server (with the VR participant: player1) and the other one (player2) just runs the pygame and connects to the fast computer.
Thank you so much, I want to find the combination of two different drivers in the driving simulator, therefore I ask this question. but I did not understand how to connect player 2 to player 1. I have 2 computers that DReyeVR has been installed on them. what should I do? Could you elaborate a little more?
I can elaborate but know that I haven't been able to test this at all and I only think it should work:
(I suspect there might be some python bugs in creating a new "hero" vehicle while the DReyeVR EgoVehicle already exists. But let me know if you run into those and I'll take a closer look)
These are the steps I think would work:
ipconfig /all
(in Windows cmd) or ip a
(in Linux), lets say its 192.168.44.15. Carla's default port is 2000 so you can leave this unchanged. python PythonAPI/examples/manual_control.py --host 192.168.44.15 --port 2000
so this connects to Computer A's running Carla instance and starts a pygame
instance that transmits the new "Player 2" vehicle to Computer B.I'm also not sure how good the quality will be on Computer B since Computer A needs to transmit the rendered scene from its local Carla instance over the network to Computer B (so it might be choppy/laggy). But YMMV.
Hi
I see this error:
Traceback (most recent call last):
File "PythonAPI/examples/manual_control.py", line 1325, in
but I executed CarlaUE4.exe -vr in the other computer and I see the environment is ready on that computer. then I execute the python PythonAPI/examples/manual_control.py --host 10.104.90.300 --port 2000 on the other computer why this happened? because I think this error related to the not founding an environment in the carla!
This error happens if the server (computer A) and client (computer B) are unable to communicate, have you verified that ping
ing computer A from B works? You should double check the firewall settings on computer A to make sure it can take these outside connections.
You should also try running the manual_control.py
script on Computer A itself while Carla+DReyeVR is running just to make sure that even on --host localhost
the connection can be made.
in this time have this error. I know that because it spawned randomly. but how can I change it to know spawn in the location of DreyeVr vehicle?
INFO: Could not find the required file in cache, downloading... Carla/Maps//OpenDrive/map3.xodr
WARNING: cannot parse georeference: ''. Using default values.
WARNING: Traffic sign 6 overlaps a driving lane. Moving out of the road...
Warning! Actor Generation is not valid. No actor will be spawned.
Traceback (most recent call last):
File "PythonAPI/examples/manual_control.py", line 1325, in
Have you tried just running manual_control.py
on the host machine (A) while the DReyeVR simulator was occupied and running? I was able to run manual_control.py
on the host machine (A) without issue and both the server (DReyeVR instance) and client (pygame instance) were working nicely. Your error message is regarding missing blueprint data rather than spawn location information so I'm not sure what you are asking.
If you'd like to know where the DReyeVR vehicle is located, you should follow these steps to get a reference to the EgoVehicle and then just use it like a normal carla.LibCarla.vehicle actor (which tracks orientation for you). For instance, once you have the reference in a variable you can use Carla's get_location()
method as described here.
I found out I could not open pygame window when I execute manual_control.py, however I could execute generate_traffic.py without problem. I have got this error that I could not find any solution for this:
Warning! Actor Generation is not valid. No actor will be spawned.
Traceback (most recent call last):
File "manual_control.py", line 1325, in
I executed manual_control.py in a computer that has a carla but I have not installed DReyeVR yet and I did not face this issue (picture is attached). could you help me?
Hmm. Can you install DReyeVR on gamemode
branch to a clean version of Carla? I verified this should work but not sure about main
yet.
sure, but how? could you elaborate more? what should I do?
run git pull
in the DReyeVR repo, then git checkout gamemode
, then run make install
on a clean version of CARLA (with no DReyeVR)
(This is a WIP branch that should be merged into main
soon)
(You should git pull
to get to the latest commit (currently e19925a2409924039106e63d52413548eb1dfd17) on DReyeVR)
thanks. should I install DReyeVR with the branch of game mode on both PCs?
Yes, and you'll need to rebuild the python API for both as well
您是否尝试过
manual_control.py
在 DReyeVR 模拟器被占用并运行时仅在主机 (A) 上运行?我能够manual_control.py
在主机 (A) 上毫无问题地运行,并且服务器(DREyeVR 实例)和客户端(pygame 实例)都运行良好。您的错误消息是关于缺少蓝图数据而不是生成位置信息,所以我不确定您在问什么。如果您想知道 DREyeVR 车辆的位置,您应该按照以下步骤获取对 EgoVehicle 的引用,然后像普通的 carla.LibCarla.vehicle actor(为您跟踪方向)一样使用它。例如,一旦您在变量中有了引用,您就可以按照此处
get_location()
所述使用 Carla 的方法。您是否尝试过
manual_control.py
在 DReyeVR 模拟器被占用并运行时仅在主机 (A) 上运行?我能够manual_control.py
在主机 (A) 上毫无问题地运行,并且服务器(DREyeVR 实例)和客户端(pygame 实例)都运行良好。您的错误消息是关于缺少蓝图数据而不是生成位置信息,所以我不确定您在问什么。如果您想知道 DREyeVR 车辆的位置,您应该按照以下步骤获取对 EgoVehicle 的引用,然后像普通的 carla.LibCarla.vehicle actor(为您跟踪方向)一样使用它。例如,一旦您在变量中有了引用,您就可以按照此处
get_location()
所述使用 Carla 的方法。
Hi! How to run manual_control.py
and DReyeVR vr mode in one computer? Can you explain it in detail?
我发现在执行 manual_control.py 时无法打开 pygame 窗口,但是我可以毫无问题地执行 generate_traffic.py。我遇到了这个错误,我找不到任何解决方案: 警告!演员生成无效。不会产生任何演员。 追溯(最近调用最后): 文件“manual_control.py”,第 1325 行,在 main() 文件“manual_control.py”,第 1317 行,在主 game_loop(args) 文件“manual_control.py”,第 1214 行,在 game_loop world = World(sim_world, hud, args) 文件“manual_control.py”,第 217 行,在init self.restart() 文件“manual_control.py”,第 246 行,在重启 blueprint = random.choice(get_actor_blueprints(self.world, self._actor_filter, self._actor_generation)) 文件“C:\Users\elnaz\AppData\Local\Programs\Python\Python37\lib\random.py”,第 261 行,在选择中 引发 IndexError('Cannot choose from an empty sequence') from None IndexError: Cannot choose from an empty sequence
我在一台有 carla 的电脑上执行了 manual_control.py,但我还没有安装 DREyeVR,我没有遇到这个问题(附图片)。你可以帮帮我吗?
@GustavoSilvera @FBanani Hi! I also encountered the same problem when running manual_control.py
and DReyeVR vr mode in one computer. Need I change to the gamemode
right now, or something else?
run
git pull
in the DReyeVR repo, thengit checkout gamemode
, then runmake install
on a clean version of CARLA (with no DReyeVR)
I've already installed DReyeVR, but how to uninstall DReyeVR to get a clean version of Carla? Can you guide me?
gamemode
is now fully merged into main
(since #74) so as long as you git pull
from the main branch, you should be good to go.
You should be able to run python PythonAPI/examples/manual_control.py
to start the pygame client, which can then interact with DReyeVR as if it were a normal Carla installation.
For future updates of DReyeVR (in case you are not on the latest version) you should follow the instructions here on how to update DReyeVR (clean carla and reinstall DReyeVR)
gamemode
is now fully merged intomain
(since #74) so as long as yougit pull
from the main branch, you should be good to go.You should be able to run
python PythonAPI/examples/manual_control.py
to start the pygame client, which can then interact with DReyeVR as if it were a normal Carla installation.For future updates of DReyeVR (in case you are not on the latest version) you should follow the instructions here on how to update DReyeVR (clean carla and reinstall DReyeVR) I have already in
main
branch. But I still encountered the same question as following when I runpython PythonAPI/examples/manual_control.py
orpython PythonAPI/examples/manual_control.py --host 10.1.44.122 --port 2000
.
Can you help me?
Hm, it says something about Actor Generation is not valid
. I think DReyeVR is sufficiently installed but there is something else going wrong. Can you try running with all vehicle generations: use flag --generation "All"
in addition to the host/port args.
Hm, it says something about
Actor Generation is not valid
. I think DReyeVR is sufficiently installed but there is something else going wrong. Can you try running with all vehicle generations: use flag--generation "All"
in addition to the host/port args.
Oh yes, it works! Thank you!
Hm, it says something about
Actor Generation is not valid
. I think DReyeVR is sufficiently installed but there is something else going wrong. Can you try running with all vehicle generations: use flag--generation "All"
in addition to the host/port args.Oh yes, it works! Thank you!
Hm, it says something about
Actor Generation is not valid
. I think DReyeVR is sufficiently installed but there is something else going wrong. Can you try running with all vehicle generations: use flag--generation "All"
in addition to the host/port args.
Hi. I have another question I want another user who drives with Logitech wheels and pedals as well as a person who drivers with DReyeVR what should I do?
We don't have any specific support for this. But if you are using manual_control.py
you sohuld be able to use Carla's steering wheel variant here.
@GustavoSilvera
Hi, I want to know how to output the location of manual_control.py
vehicle in each frame, just like EgoVehicle.
Although we can see the location of vehicle in real-time, I want the location data of `manual_control.py`` vehicle in each frame.
You'll need to track that separately or through Carla's built-in means. Since it is all obtained through Python this should not be very difficult to do.
You'll need to track that separately or through Carla's built-in means. Since it is all obtained through Python this should not be very difficult to do.
How to do that? Can you give me more guidance?Thank you very much!
Well, seeing as the location is obtained like so you can probably just print
this variable and save it to a file.
Dear GustavoSilvera I come with a new issue. Is there any way to have two driving simulators in one environment? I mean in 2 different PC two different people drive their own DReyeVR simulator, but they can see each other's car and have interaction with each other?