Comments (6)
Hi @luzw5
We will need to know more details to help you. What do you mean by "stop routing valid data"? What are the YAML configurations you are using? Is this connection through WAN or in a LAN?
Best regards
from dds-router.
Thank you for your reply, I will provide you with more information.
Robot1
version: v3.0
builtin-topics:
- name: robot_state
type: FreeFleetData::RobotState
- name: task_result
type: TaskResult::ResultData
- name: mode_request
type: FreeFleetData::ModeRequest
- name: path_request
type: FreeFleetData::PathRequest
- name: destination_request
type: FreeFleetData::DestinationRequest
- name: photo_task_request
type: PhotoTask::PhotoTaskRequest
- name: task_request
type: TaskRequest::RequestData
participants:
- name: SimpleParticipant
kind: local
domain: 44
- name: echo_participantD1
kind: echo
data: true
verbose: true
discovery: true
- name: WanParticipantD1
kind: wan
connection-addresses:
- domain: server
port: 9010
transport: tcp
Robot 2
version: v3.0
builtin-topics:
- name: robot_state
type: FreeFleetData::RobotState
- name: task_result
type: TaskResult::ResultData
- name: mode_request
type: FreeFleetData::ModeRequest
- name: path_request
type: FreeFleetData::PathRequest
- name: destination_request
type: FreeFleetData::DestinationRequest
- name: photo_task_request
type: PhotoTask::PhotoTaskRequest
- name: task_request
type: TaskRequest::RequestData
participants:
- name: SimpleParticipant
kind: local
domain: 42
- name: echo_participantD1
kind: echo
data: true
verbose: true
discovery: true
- name: WanParticipantD1
kind: wan
connection-addresses:
- domain: server
port: 9017
transport: tcp
Server
version: v3.0
builtin-topics:
- name: robot_state
type: FreeFleetData::RobotState
- name: task_result
type: TaskResult::ResultData
- name: mode_request
type: FreeFleetData::ModeRequest
- name: path_request
type: FreeFleetData::PathRequest
- name: destination_request
type: FreeFleetData::DestinationRequest
- name: photo_task_request
type: PhotoTask::PhotoTaskRequest
- name: task_request
type: TaskRequest::RequestData
participants:
- name: ParticipantServer
kind: local
domain: 4
- name: EchoParticipantServer
kind: echo
discovery: true
data: true
verbose: true
- name: WanParticipantServerD1
kind: wan
listening-addresses:
- ip: 10.164.24.239
port: 9010
transport: tcp
- name: WanParticipantServerD2
kind: wan
listening-addresses:
- ip: 10.164.24.239
port: 9017
transport: tcp
from dds-router.
The specific phenomenon is that when the network is not good, the DDS data sent by the Server can no longer be transmitted to Robot1 or Robot2. However, when I restart the docker container of Robot1 or Robot2, that is, re-run the ddsrouter program, it works normally again. Sorry, I'm not sure what's causing it. Could you please provide me with some debugging methods?
from dds-router.
Thank you! A couple more questions and suggestions for you to try:
- By looking at your diagram, I interpret that you have 3 different machines (2 robots and a server), and a docker container is run in each of them. Then you are using host's network stack (--net=host) to communicate within your LAN (or WAN? That IP address looks public). Am I right?
- This looks like a transport issue to me. UDP transport usually outperforms TCP, and we always recommend to use it whenever that's an option. I believe that's the case for your scenario if I'm not mistaken, could you please try with UDP?
- If you wish to communicate both clients through the server, it would be enough to have a WAN repeater participant in the server instead of two. Please have a look at Repeater DDS Router for more information.
from dds-router.
I think I can try to modify qos and udp now to solve my current problem. In addition, if I don't want the two robots to communicate directly, is my current configuration valid?
from dds-router.
With your configuration the two robots should not communicate directly, but through the server. What I meant is that there is no need of having two WAN participants in the server's router, and connect each of them with a different robot. You can connect the two robots to a WAN repeater participant in the server, and both will still be able to communicate (indirectly, through the server).
If you wish not to have any communication between the robots, then you would also need to connect both to the same WAN participant in the server's router, but this time configured with repeater: false
.
from dds-router.
Related Issues (20)
- DDS-Router for Windows 10 build failed HOT 1
- Latest Documentation
- Question: Does DDS-Router support data deduplication HOT 1
- TLS config for both server and client does not work HOT 2
- Configuration example: WAN with dynamic ipaddresses and dyndns (optional SSL/TLS) HOT 4
- colcon build failed HOT 1
- Messages not routing with Foxy HOT 3
- docs: `addresses` key doesn't seem valid in `connection-addresses` HOT 2
- About 'wan communication over TCP' in readdocs HOT 1
- DDS Router Docker image not compatible with arm64 systems
- About WAN configuration and example HOT 2
- run example error HOT 4
- Deadline is set to 0, it may cause DataReaderImpl::deadline_timer_ timeout immediately HOT 2
- Reporting a vulnerability HOT 1
- Repeater using TCP with same domain ids HOT 1
- router stops after some time HOT 7
- Adding ROS 2 introspection as SUPER_CLIENT HOT 1
- Not configuration file given, using default file DDS_ROUTER_CONFIGURATION.yaml HOT 5
- DDS Router not forwarding ros2 messages before the first echo. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dds-router.