I would like to ask a question about the case where a cyber channel is operated across two systems. In this environment, after setting the value of the variable CYBER_IP to the IP of each system in /apollo/cyber/setup.bash within the Apollo Docker container of each system, /apollo/scripts/bootstrap.sh was executed in the environment that sourced it.
At this time, after running cyber_monitor in the Apollo Docker container of each system, if you run the modules using the SETUP button on the dreamview web screen of one system, several modules are executed. Because the modules to be executed in the two systems are separated, predefined modules are executed in each system.
In addition, sending and receiving messages of each module can be observed in the cyber_monitor of each system. In this situation, I will write down the questions below.
If two systems share the cyber channel like this, will each module communicate based on shared memory or fast RTPS/UDP?
Can I change the settings by designating the communication method of a specific module as shared memory or Fast RTPS/UDP?
In the case of a specific message, when transmission/reception is performed within one system, the frame ratio is confirmed to be high in cyber_monitor. However, when transmission/reception is performed via the network on two systems, the frame ratio in cyber_monitor becomes very unstable. The numbers are much lower. Why does the frame ratio drop when transmitting/receiving via the network?
As in question 3, the drop in frame ratio seems to be due to packet loss. Is there any way to prevent this kind of packet loss?
Since the communication is based on RTPS, it seems likely that packets will be lost if the delay exceeds the deadline. So, can we adjust that deadline time to set a larger margin?
When a specific message or node competes for participation in a cyber channel, it seems that reliability can be increased if priority is raised over competitors. Can a particular message or node increase the message priority?
Is it impossible to send and receive RTPS messages with guaranteed reliability in the first place? If not, is there a way?
System information
**X86_64/Ubuntu 18.04.6 : aarch64/Ubuntu 20.04.6/Nvidia Jetson Orin 32GB
Apollo installed from (source or binary): source
Apollo version (3.5, 5.0, 5.5, 6.0): 7.0
Output of
apollo.sh config
if onmaster
branch: ON X86_64 : [INFO] Apollo Environment Settings: [INFO] APOLLO_ROOT_DIR: /apollo [INFO] APOLLO_CACHE_DIR: /apollo/.cache [INFO] APOLLO_IN_DOCKER: true [INFO] APOLLO_VERSION: main-2023-07-03-6c3a7afe [INFO] DOCKER_IMG: dev-x86_64-18.04-20210914_1336 [INFO] APOLLO_ENV: STAGE=dev [INFO] USE_GPU: USE_GPU_HOST=1 USE_GPU_TARGET=1 ON AARCH_64 : [INFO] Apollo Environment Settings: [INFO] APOLLO_ROOT_DIR: /apollo [INFO] APOLLO_CACHE_DIR: /apollo/.cache [INFO] APOLLO_IN_DOCKER: true [INFO] APOLLO_VERSION: main-2023-07-03-6c3a7afe [INFO] DOCKER_IMG: l4t-pytorch-r35.2.1_20230530_0213 [INFO] APOLLO_ENV: STAGE=dev [INFO] USE_GPU: USE_GPU_HOST=1 USE_GPU_TARGET=1**fastRTPS in use : https://github.com/eProsima/Fast-RTPS.git v 1.5.0 with FastRTPS_1.5.0.patch
I would like to ask a question about the case where a cyber channel is operated across two systems. In this environment, after setting the value of the variable CYBER_IP to the IP of each system in /apollo/cyber/setup.bash within the Apollo Docker container of each system, /apollo/scripts/bootstrap.sh was executed in the environment that sourced it. At this time, after running cyber_monitor in the Apollo Docker container of each system, if you run the modules using the SETUP button on the dreamview web screen of one system, several modules are executed. Because the modules to be executed in the two systems are separated, predefined modules are executed in each system. In addition, sending and receiving messages of each module can be observed in the cyber_monitor of each system. In this situation, I will write down the questions below.
Thank you very much in advance!