Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
jazzy

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
kilted

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
lyrical

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
rolling

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

network_bridge package from network_bridge repo

network_bridge

ROS Distro
humble

Package Summary

Version 3.1.0
License MIT License
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description C++ package for bridging ROS2 over UDP, TCP, or a custom implemented network interface
Checkout URI https://github.com/brow1633/network_bridge.git
VCS Type git
VCS Version main
Last Updated 2026-10-12
Dev Status MAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Allows for arbitrary network links (UDP, TCP, etc) to bridge ROS2 messages

Maintainers

  • Ethan Brown

Authors

No additional authors.

Network Bridge

CI

Network Bridge is a lightweight ROS2 node designed for robust communication between robotic systems over arbitrary network protocols. Supporting UDP, TCP, and ZMQ protocols out of the box, this packages seamlessly bridges ROS2 topics across networks, facilitating effective remote communications between a base station and robotic systems, or between multiple robotic systems.

Installation

Installation via apt

Install with:

sudo apt install ros-<distro>-network-bridge

Building from Source

Simply clone the repository into your ROS2 workspace and build with colcon build.

Usage

Demo

TCP

ros2 launch network_bridge tcp.launch.py

ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /tcp2/MyDefaultTopic

UDP

ros2 launch network_bridge udp.launch.py

ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /udp2/MyDefaultTopic

ZMQ

ros2 launch network_bridge zmq.launch.py

ros2 topic pub /zmq1/test_topic std_msgs/msg/String "data: 'Hello World'"

ros2 topic echo /zmq2/test_topic

Talker/listener demos

The installed files in demo/ bridge sample chatter and static transforms. The server starts both TCP and UDP bridges. Run the server in one terminal:

ros2 launch network_bridge demo_server.launch.py

In another terminal, run either client:

ros2 launch network_bridge tcp_demo_client.launch.py
# Or:
ros2 launch network_bridge udp_demo_client.launch.py

The talkers publish automatically. The listeners print the messages received through the bridge. The demo_nodes_cpp runtime dependency is installed with this package, or resolved by rosdep when building from source.

For separate hosts, use the server’s address on the TCP client:

ros2 launch network_bridge tcp_demo_client.launch.py server_host:=SERVER_IP

For UDP, configure both hosts. On the server:

ros2 launch network_bridge demo_server.launch.py udp_server_address:=0.0.0.0 udp_receiver_host:=CLIENT_IP

On the client:

ros2 launch network_bridge udp_demo_client.launch.py receiver_address:=0.0.0.0 server_host:=SERVER_IP

Replace SERVER_IP and CLIENT_IP with the hosts’ reachable addresses. The port arguments are available through each launch file’s --show-args option.

Configuration

Simply setup the network interface parameters and list your desired topics to get started. If you are using UDP over cellular data, it is recommended to setup a VPN to facilitate connection. Also, please note that no encryption occurs within this package. Currently, if you would like encryption, you must use a VPN.

See config/Udp1.yaml for a description of all parameters, as well as the TCP example configuration files.

Minimal Example

The following configuration examples demonstrate a robot sending a message on /gps/fix over UDP to a basestation that will then re-publish the message. This works seamlessly on all message types, so long as they are built and sourced on both ends of the transmission.

Robot

``` /udp_sender: ros__parameters: UdpInterface: local_address: “192.168.1.2” receive_port: 5001

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package network_bridge

3.1.0 (2026-10-11)

  • Add ZMQ PUB/SUB and PUSH/PULL transports using system cppzmq.
  • Fix packet header parsing, timestamp decoding, and decompression error handling.
  • Fix TCP queue synchronization, shutdown, and reconnect handling.
  • Update Boost resolver APIs and dependencies for newer ROS distributions.
  • Add transport lifecycle tests and improve launch test timing and discovery handling.
  • Add installed TCP and UDP talker/listener demos with launch documentation.
  • Add a manually triggered Bloom release workflow.
  • Contributors: Cedric Pradalier, Ethan Brown, Lorenzo Ferrini

3.0.0 (2026-02-14)

  • Add a specific management of TF topics
  • Fixed several bugs
  • Fix formatting in CMakeLists.txt for target_link_libraries
  • Update README with installation instructions Added installation instructions for apt and building from source.
  • Contributors: Cedric Pradalier, Ethan Brown

2.0.0 (2025-09-11)

  • Merge pull request #12 from brow1633/robustify

  • Guard against querying graph after context goes invalid

  • make some tests/shutdown more robust

  • force client to start after server in TCP test (#11)

    • force client to start after server
    • linting
    • no more python linting.
  • Handling of large objects and clean management of reconnections (#7)

    • Added queuing mechanism for reception and garanteed transmission
    • Added receive queue
    • Added proper server reconnect
    • Added logger for topic creation
    • Fixed client reconnect

    * Implemented PR request ---------Co-authored-by: Cedric Pradalier <<cedric.pradalier@georgiatech-metz.fr>> Co-authored-by: Ethan Brown <<97919387+brow1633@users.noreply.github.com>>

  • Merge pull request #9 from brow1633/8-fix-ci update cache version, include kilted, linting

  • remove whitepsace

  • Merge branch 'main' into 8-fix-ci

  • Fix linting error

  • update cache version, include kilted

  • Contributors: Cedric Pradalier, Ethan Brown

1.0.2 (2024-07-10)

  • Move launch_testing_ament_cmake requirement to if testing block
  • Contributors: Ethan Brown

1.0.1 (2024-07-10)

  • Merge branch 'main' of github.com:brow1633/tether
  • Updated package.xml deps
  • Update README.md
  • Add release to CI, turn off fail fast
  • Update README.md
  • add pkg-config
  • CI
  • Python linting
  • Create CI.yml
  • Add boost system for asio
  • Remove un-needed from package.xml
  • Dependency and CMake Changes
  • Remove Boost as dependency
  • Added const for jazzy
  • Fixed package.xml deps
  • Change package name
  • Use bit_cast instead of reinterpret_cast
  • Fix TCP Packet Framing
  • linting
  • Merge branch 'main' of github.com:brow1633/tether
  • Updated license
  • Update README.md
  • Contributors: Ethan Brown, brow1633

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged network_bridge at Robotics Stack Exchange