![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.4.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | ardent |
Last Updated | 2017-12-09 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Dirk Thomas
Authors
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below).
Note: For binary releases up to and including release-alpha8
, some of the interfaces in common_interfaces
are skipped - check the git tag of the release in question to see which interfaces were built.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
You can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the ament install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
Also, building the ROS 1 bridge can consume a tremendous amount of memory (almost 4 GB of free RAM per thread while compiling) to the point that it can easily overwhelm a computer if done with parallel compilation enabled. As such, we recommend first building everything else as usual, then coming back to build the ROS 1 bridge without parallel compilation.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps (for Linux and OSX; you probably don’t have ROS 1 installed on Windows).
You should first build everything but the ROS 1 bridge with normal make arguments. We don’t recommend having your ROS 1 environment sourced during this step as it can add OpenCV 3 to your path. The ROS 2 image demos you build in this step would then use OpenCV 3 and require it to be on your path when you run them, while the standard installation on Ubuntu Xenial is OpenCV 2.
src/ament/ament_tools/scripts/ament.py build --build-tests --symlink-install --skip-packages ros1_bridge
Next you need to source the ROS 1 environment, for Linux and ROS Kinetic that would be:
source /opt/ros/kinetic/setup.bash
# Or, on OSX, something like:
# . ~/ros_catkin_ws/install_isolated/setup.bash
The bridge will be built with support for any message/service packages that are on your path and have an associated mapping between ROS 1 and ROS 2.
Therefore you must add any ROS 1 or ROS 2 workspaces that have message/service packages that you want to be bridged to your path before building the bridge.
This can be done by adding explicit dependencies on the message/service packages to the package.xml
of the bridge, so that ament
will add them to the path before it builds the bridge.
Alternatively you can do it manually by sourcing the relevant workspaces yourself, e.g.:
# You have already sourced your ROS installation.
# Source your ROS 2 installation:
. <install-space-with-ros2>/local_setup.bash
# And if you have a ROS 1 overlay workspace, something like:
# . <install-space-to-ros1-overlay-ws>/setup.bash
# And if you have a ROS 2 overlay workspace, something like:
# . <install-space-to-ros2-overlay-ws>/local_setup.bash
Then build just the ROS 1 bridge:
src/ament/ament_tools/scripts/ament.py build --build-tests --symlink-install --only ros1_bridge --force-cmake-configure
Note: If you are building on a memory constrained system you might want to limit the number of parallel jobs by passing e.g. -j1
.
Example 1: run the bridge and the example talker and listener
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Name |
---|
pkg-config |
python3-yaml |
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.5.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | bouncy |
Last Updated | 2018-08-22 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Dirk Thomas
Authors
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below).
Note: For binary releases up to and including release-alpha8
, some of the interfaces in common_interfaces
are skipped - check the git tag of the release in question to see which interfaces were built.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
You can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
Also, building the ROS 1 bridge can consume a tremendous amount of memory (almost 4 GB of free RAM per thread while compiling) to the point that it can easily overwhelm a computer if done with parallel compilation enabled. As such, we recommend first building everything else as usual, then coming back to build the ROS 1 bridge without parallel compilation.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps (for Linux and OSX; you probably don’t have ROS 1 installed on Windows).
You should first build everything but the ROS 1 bridge with normal make arguments. We don’t recommend having your ROS 1 environment sourced during this step as it can add OpenCV 3 to your path. The ROS 2 image demos you build in this step would then use OpenCV 3 and require it to be on your path when you run them, while the standard installation on Ubuntu Xenial is OpenCV 2.
colcon build --symlink-install --packages-skip ros1_bridge
Next you need to source the ROS 1 environment, for Linux and ROS Melodic that would be:
source /opt/ros/melodic/setup.bash
# Or, on OSX, something like:
# . ~/ros_catkin_ws/install_isolated/setup.bash
The bridge will be built with support for any message/service packages that are on your path and have an associated mapping between ROS 1 and ROS 2.
Therefore you must add any ROS 1 or ROS 2 workspaces that have message/service packages that you want to be bridged to your path before building the bridge.
This can be done by adding explicit dependencies on the message/service packages to the package.xml
of the bridge, so that colcon
will add them to the path before it builds the bridge.
Alternatively you can do it manually by sourcing the relevant workspaces yourself, e.g.:
# You have already sourced your ROS installation.
# Source your ROS 2 installation:
. <install-space-with-ros2>/local_setup.bash
# And if you have a ROS 1 overlay workspace, something like:
# . <install-space-to-ros1-overlay-ws>/setup.bash
# And if you have a ROS 2 overlay workspace, something like:
# . <install-space-to-ros2-overlay-ws>/local_setup.bash
Then build just the ROS 1 bridge:
colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
Note: If you are building on a memory constrained system you might want to limit the number of parallel jobs by setting e.g. the environment variable MAKEFLAGS=-j1
.
Example 1: run the bridge and the example talker and listener
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.6.2 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | crystal |
Last Updated | 2019-05-20 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Dirk Thomas
Authors
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below).
Note: For binary releases up to and including release-alpha8
, some of the interfaces in common_interfaces
are skipped - check the git tag of the release in question to see which interfaces were built.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
You can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
Also, building the ROS 1 bridge can consume a tremendous amount of memory (almost 4 GB of free RAM per thread while compiling) to the point that it can easily overwhelm a computer if done with parallel compilation enabled. As such, we recommend first building everything else as usual, then coming back to build the ROS 1 bridge without parallel compilation.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps (for Linux and OSX; you probably don’t have ROS 1 installed on Windows).
You should first build everything but the ROS 1 bridge with normal make arguments. We don’t recommend having your ROS 1 environment sourced during this step as it can add OpenCV 3 to your path. The ROS 2 image demos you build in this step would then use OpenCV 3 and require it to be on your path when you run them, while the standard installation on Ubuntu Xenial is OpenCV 2.
colcon build --symlink-install --packages-skip ros1_bridge
Next you need to source the ROS 1 environment, for Linux and ROS Melodic that would be:
source /opt/ros/melodic/setup.bash
# Or, on OSX, something like:
# . ~/ros_catkin_ws/install_isolated/setup.bash
The bridge will be built with support for any message/service packages that are on your path and have an associated mapping between ROS 1 and ROS 2.
Therefore you must add any ROS 1 or ROS 2 workspaces that have message/service packages that you want to be bridged to your path before building the bridge.
This can be done by adding explicit dependencies on the message/service packages to the package.xml
of the bridge, so that colcon
will add them to the path before it builds the bridge.
Alternatively you can do it manually by sourcing the relevant workspaces yourself, e.g.:
# You have already sourced your ROS installation.
# Source your ROS 2 installation:
. <install-space-with-ros2>/local_setup.bash
# And if you have a ROS 1 overlay workspace, something like:
# . <install-space-to-ros1-overlay-ws>/setup.bash
# And if you have a ROS 2 overlay workspace, something like:
# . <install-space-to-ros2-overlay-ws>/local_setup.bash
Then build just the ROS 1 bridge:
colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
Note: If you are building on a memory constrained system you might want to limit the number of parallel jobs by setting e.g. the environment variable MAKEFLAGS=-j1
.
Example 1: run the bridge and the example talker and listener
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | eloquent |
Last Updated | 2020-12-09 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Dirk Thomas
Authors
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
Note that before rostopic echo
would work with bridged topics, a subscriber must already exist, in order for echo
to determine the message type and then to create its own subscriber.
You can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments. We don’t recommend having your ROS 1 environment sourced during this step as it can add other libraries to the path.
colcon build --symlink-install --packages-skip ros1_bridge
Next you need to source the ROS 1 environment, for Linux and ROS Melodic that would be:
source /opt/ros/melodic/setup.bash
# Or, on OSX, something like:
# . ~/ros_catkin_ws/install_isolated/setup.bash
The bridge will be built with support for any message/service packages that are on your path and have an associated mapping between ROS 1 and ROS 2.
Therefore you must add any ROS 1 or ROS 2 workspaces that have message/service packages that you want to be bridged to your path before building the bridge.
This can be done by adding explicit dependencies on the message/service packages to the package.xml
of the bridge, so that colcon
will add them to the path before it builds the bridge.
Alternatively you can do it manually by sourcing the relevant workspaces yourself, e.g.:
# You have already sourced your ROS installation.
# Source your ROS 2 installation:
. <install-space-with-ros2>/local_setup.bash
# And if you have a ROS 1 overlay workspace, something like:
# . <install-space-to-ros1-overlay-ws>/setup.bash
# And if you have a ROS 2 overlay workspace, something like:
# . <install-space-to-ros2-overlay-ws>/local_setup.bash
Then build just the ROS 1 bridge:
colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
Note: If you are building on a memory constrained system you might want to limit the number of parallel jobs by setting e.g. the environment variable MAKEFLAGS=-j1
.
Example 1: run the bridge and the example talker and listener
The talker and listener can be either a ROS 1 or a ROS 2 node. The bridge will pass the message along transparently.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.8.3 (2020-12-09)
- [backport] support idl files on the ROS 2 side of the bridge (#302)
- fix multiple definition if message with same name as service exists (#272) (#274)
- Contributors: Dirk Thomas, William Woodall
0.8.2 (2020-01-17)
- fix building test when ROS 1 diagnostic_msgs is isolated from roscpp (#236)
- fix service with custom mapped message field (#234)
- Contributors: Dirk Thomas
0.8.1 (2019-10-23)
- fix showing duplicate keys in --print-pairs (#225)
- fix bridging builtin_interfaces Duration and Time (#224)
- Don't use features that will be deprecated (#222)
- Contributors: Dirk Thomas, Peter Baughman
0.8.0 (2019-09-27)
- Promote special CLI rules to flags. (#217)
- Update __log_rosout_disable workaround to use --ros-args. (#216)
- Clearer instructions for example (#211)
- add services bridging to parameter_bridge (#176)
- Contributors: Jose Luis Blanco-Claraco, Michel Hidalgo, cyrilleberger
0.7.3 (2019-08-02)
- fix typename in static bridge (#209)
- fix cosmetic in message (#207)
- Use %zu print format for size_t (#204)
- Fix parameter bridge for topic if ros1 and ros2 type have a different name (#177)
- Contributors: Dirk Thomas, Emerson Knapp, cyrilleberger
0.7.2 (2019-05-29)
- add note about rostopic echo (#202)
- add workspace setup documentation (#201)
- Contributors: Mabel Zhang
0.7.1 (2019-05-20)
- Disable rosout logging for the bridge (#197)
- Handle launch_testing assertExitCodes correctly (#193)
- Support field selection (#174)
- Use interface kind names properly in ROS2 interface type names. (#194)
- Contributors: Juan Rodriguez Hortala, Michel Hidalgo, ivanpauno
0.7.0 (2019-05-08)
- Adds interface type to ROS2 message type name. (#191)
- fix build by passing options (#192)
- changes to avoid deprecated API's (#189)
- Corrected publish calls with shared_ptr signature, leftovers (#190)
- Corrected publish calls with shared_ptr signature (#188)
- Migrate launch tests to new launch_testing features & API (#179)
- Some small fixes to the README (#186)
- Fix the generator. (#185)
- Merge pull request #183 from
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.7.9 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | dashing |
Last Updated | 2021-05-21 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Dirk Thomas
Authors
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
Note that before rostopic echo
would work with bridged topics, a subscriber must already exist, in order for echo
to determine the message type and then to create its own subscriber.
You can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments. We don’t recommend having your ROS 1 environment sourced during this step as it can add other libraries to the path.
colcon build --symlink-install --packages-skip ros1_bridge
Next you need to source the ROS 1 environment, for Linux and ROS Melodic that would be:
source /opt/ros/melodic/setup.bash
# Or, on OSX, something like:
# . ~/ros_catkin_ws/install_isolated/setup.bash
The bridge will be built with support for any message/service packages that are on your path and have an associated mapping between ROS 1 and ROS 2.
Therefore you must add any ROS 1 or ROS 2 workspaces that have message/service packages that you want to be bridged to your path before building the bridge.
This can be done by adding explicit dependencies on the message/service packages to the package.xml
of the bridge, so that colcon
will add them to the path before it builds the bridge.
Alternatively you can do it manually by sourcing the relevant workspaces yourself, e.g.:
# You have already sourced your ROS installation.
# Source your ROS 2 installation:
. <install-space-with-ros2>/local_setup.bash
# And if you have a ROS 1 overlay workspace, something like:
# . <install-space-to-ros1-overlay-ws>/setup.bash
# And if you have a ROS 2 overlay workspace, something like:
# . <install-space-to-ros2-overlay-ws>/local_setup.bash
Then build just the ROS 1 bridge:
colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
Note: If you are building on a memory constrained system you might want to limit the number of parallel jobs by setting e.g. the environment variable MAKEFLAGS=-j1
.
Example 1: run the bridge and the example talker and listener
The talker and listener can be either a ROS 1 or a ROS 2 node. The bridge will pass the message along transparently.
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | galactic |
Last Updated | 2021-01-25 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Jacob Perron
- Shane Loretz
Authors
- Dirk Thomas
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments. We don’t recommend having your ROS 1 environment sourced during this step as it can add other libraries to the path.
colcon build --symlink-install --packages-skip ros1_bridge
Next you need to source the ROS 1 environment, for Linux and ROS Melodic that would be:
source /opt/ros/melodic/setup.bash
# Or, on OSX, something like:
# . ~/ros_catkin_ws/install_isolated/setup.bash
The bridge will be built with support for any message/service packages that are on your path and have an associated mapping between ROS 1 and ROS 2.
Therefore you must add any ROS 1 or ROS 2 workspaces that have message/service packages that you want to be bridged to your path before building the bridge.
This can be done by adding explicit dependencies on the message/service packages to the package.xml
of the bridge, so that colcon
will add them to the path before it builds the bridge.
Alternatively you can do it manually by sourcing the relevant workspaces yourself, e.g.:
# You have already sourced your ROS installation.
# Source your ROS 2 installation:
. <install-space-with-ros2>/local_setup.bash
# And if you have a ROS 1 overlay workspace, something like:
# . <install-space-to-ros1-overlay-ws>/setup.bash
# And if you have a ROS 2 overlay workspace, something like:
# . <install-space-to-ros2-overlay-ws>/local_setup.bash
Then build just the ROS 1 bridge:
colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
Note: If you are building on a memory constrained system you might want to limit the number of parallel jobs by setting e.g. the environment variable MAKEFLAGS=-j1
.
Example 1: run the bridge and the example talker and listener
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
0.8.2 (2020-01-17)
- fix building test when ROS 1 diagnostic_msgs is isolated from roscpp (#236)
- fix service with custom mapped message field (#234)
- Contributors: Dirk Thomas
0.8.1 (2019-10-23)
- fix showing duplicate keys in --print-pairs (#225)
- fix bridging builtin_interfaces Duration and Time (#224)
- Don't use features that will be deprecated (#222)
- Contributors: Dirk Thomas, Peter Baughman
0.8.0 (2019-09-27)
- Promote special CLI rules to flags. (#217)
- Update __log_rosout_disable workaround to use --ros-args. (#216)
- Clearer instructions for example (#211)
- add services bridging to parameter_bridge (#176)
- Contributors: Jose Luis Blanco-Claraco, Michel Hidalgo,
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.7 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | foxy |
Last Updated | 2023-05-27 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Dirk Thomas
Authors
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments. We don’t recommend having your ROS 1 environment sourced during this step as it can add other libraries to the path.
colcon build --symlink-install --packages-skip ros1_bridge
Next you need to source the ROS 1 environment, for Linux and ROS Melodic that would be:
source /opt/ros/melodic/setup.bash
# Or, on OSX, something like:
# . ~/ros_catkin_ws/install_isolated/setup.bash
The bridge will be built with support for any message/service packages that are on your path and have an associated mapping between ROS 1 and ROS 2.
Therefore you must add any ROS 1 or ROS 2 workspaces that have message/service packages that you want to be bridged to your path before building the bridge.
This can be done by adding explicit dependencies on the message/service packages to the package.xml
of the bridge, so that colcon
will add them to the path before it builds the bridge.
Alternatively you can do it manually by sourcing the relevant workspaces yourself, e.g.:
# You have already sourced your ROS installation.
# Source your ROS 2 installation:
. <install-space-with-ros2>/local_setup.bash
# And if you have a ROS 1 overlay workspace, something like:
# . <install-space-to-ros1-overlay-ws>/setup.bash
# And if you have a ROS 2 overlay workspace, something like:
# . <install-space-to-ros2-overlay-ws>/local_setup.bash
Then build just the ROS 1 bridge:
colcon build --symlink-install --packages-select ros1_bridge --cmake-force-configure
Note: If you are building on a memory constrained system you might want to limit the number of parallel jobs by setting e.g. the environment variable MAKEFLAGS=-j1
.
Example 1: run the bridge and the example talker and listener
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.9.7 (2023-05-27)
- remove xmlrpcpp from package.xml (#406)
- Parametrization of [parameter_bridge]{.title-ref} quality of service [Port of the commits (ec44770) and (86b4245) to foxy branch] (#401)
- Contributors: Dharini Dutia, Lucyanno Frota
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
0.8.2 (2020-01-17)
- fix building test when ROS 1 diagnostic_msgs is isolated from roscpp (#236)
- fix service with custom mapped message field (#234)
- Contributors: Dirk Thomas
0.8.1 (2019-10-23)
- fix showing duplicate keys in --print-pairs (#225)
- fix bridging builtin_interfaces Duration and Time (#224)
- Don't use features that will be deprecated (#222)
- Contributors: Dirk Thomas, Peter Baughman
0.8.0 (2019-09-27)
- Promote special CLI rules to flags. (#217)
- Update __log_rosout_disable workaround to use --ros-args. (#216)
- Clearer instructions for example (#211)
- add services bridging to parameter_bridge (#176)
- Contributors: Jose Luis Blanco-Claraco, Michel Hidalgo, cyrilleberger
0.7.3 (2019-08-02)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged ros1_bridge at Robotics Stack Exchange
![]() |
ros1_bridge package from ros1_bridge reporos1_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.10.3 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros2/ros1_bridge.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-05-06 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Brandon Ong
- Dharini Dutia
- Geoffrey Biggs
Authors
- Dirk Thomas
- Jacob Perron
- Shane Loretz
Bridge communication between ROS 1 and ROS 2
This package provides a network bridge which enables the exchange of messages between ROS 1 and ROS 2.
The bridge is currently implemented in C++ as at the time the Python API for ROS 2 had not been developed.
Because of this its support is limited to only the message/service types available at compile time of the bridge.
The bridge provided with the prebuilt ROS 2 binaries includes support for common ROS interfaces (messages/services), such as the interface packages listed in the ros2/common_interfaces repository and tf2_msgs
.
See the documentation for more details on how ROS 1 and ROS 2 interfaces are associated with each other.
If you would like to use a bridge with other interfaces (including your own custom types), you will have to build the bridge from source (instructions below), after building and sourcing your custom types in separate ROS 1 and ROS 2 workspaces.
See the documentation for an example setup.
For efficiency reasons, topics will only be bridged when matching publisher-subscriber pairs are active for a topic on either side of the bridge.
As a result using ros2 topic echo <topic-name>
doesn’t work but fails with an error message Could not determine the type for the passed topic
if no other subscribers are present since the dynamic bridge hasn’t bridged the topic yet.
As a workaround the topic type can be specified explicitly ros2 topic echo <topic-name> <topic-type>
which triggers the bridging of the topic since the echo
command represents the necessary subscriber.
On the ROS 1 side rostopic echo
doesn’t have an option to specify the topic type explicitly.
Therefore it can’t be used with the dynamic bridge if no other subscribers are present.
As an alternative you can use the --bridge-all-2to1-topics
option to bridge all ROS 2 topics to ROS 1 so that tools such as rostopic echo
, rostopic list
and rqt
will see the topics even if there are no matching ROS 1 subscribers.
Run ros2 run ros1_bridge dynamic_bridge -- --help
for more options.
Supported ROS and Ubuntu Versions
⚠️ Important Compatibility Notice
-
ros1_bridge
requires ROS 1, which has reached end-of-life (EOL) as of May 2025 for ROS Noetic. - Ubuntu 24.04 LTS does not support ROS 1, and therefore is not compatible with
ros1_bridge
.
Ubuntu Version | Supported ROS 1 Versions | Supported ROS 2 Versions |
ros1_bridge Support |
---|---|---|---|
20.04 (Focal) | Noetic Ninjemys | Foxy Fitzroy (EOL), Galactic Geochelone (EOL), Humble Hawksbill | ✅ Full support |
22.04 (Jammy) | ⚠️ Partial (unsupported officially) | Humble Hawksbill, Iron Irwini | ⚠️ Requires building from source |
24.04 (Noble) | ❌ Not available | Jazzy Jalisco, Kilted Kaiju | ❌ Not supported |
To use ros1_bridge
, you must use a system where both ROS 1 and ROS 2 are installable and buildable. Mixing ROS distributions across unsupported Ubuntu versions is not recommended and may lead to broken builds or missing dependencies.
Prerequisites
In order to run the bridge you need to either:
- get prebuilt binaries or
- build the bridge as well as the other ROS 2 packages from source.
After that you can run both examples described below.
For all examples you need to source the environment of the install space where the bridge was built or unpacked to.
Additionally you will need to either source the ROS 1 environment or at least set the ROS_MASTER_URI
and run a roscore
.
The following ROS 1 packages are required to build and use the bridge:
catkin
roscpp
-
roslaunch
(forroscore
executable) rosmsg
std_msgs
- as well as the Python package
rospkg
To run the following examples you will also need these ROS 1 packages:
-
rosbash
(forrosrun
executable) roscpp_tutorials
rospy_tutorials
rostopic
rqt_image_view
Prerequisites for the examples in this file
In order to make the examples below portable between versions of ROS, we define two environment variables, ROS1_INSTALL_PATH
and ROS2_INSTALL_PATH
.
These are defined as the paths to the installation location of their respective ROS versions.
If you installed Noetic in the default location, then the definition of ROS1_INSTALL_PATH
will be /opt/ros/noetic
.
Building the bridge as described below requires you to build all of ROS 2.
We assume that you have downloaded it to ~/ros2_rolling
, and that is where you plan on building it.
In this case, ROS2_INSTALL_PATH
will be defined as ~/ros2_rolling/install
.
If you’ve chosen to install either or both versions of ROS somewhere else, you will need adjust the definitions below to match your installation paths.
Because these definitions are used continuously throughout this page, it is useful to add the following lines to your shell startup file (~/.bashrc
if you are using bash
, ~/.zshrc
if you are using zsh
).
Modify these definitions as appropriate for the versions of ROS that you’re using, and for the shell that you’re using.
export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=~/ros2_rolling/install
Note that no trailing ‘/’ character is used in either definition. If you have problems involving paths, please verify that you have the correct path to the installation location, and that you do not have a trailing ‘/’ in either definition.
Building the bridge from source
Before continuing you should have the prerequisites for building ROS 2 from source installed following these instructions.
In the past, building this package required patches to ROS 1, but in the latest releases that is no longer the case.
If you run into trouble first make sure you have at least version 1.11.16
of ros_comm
and rosbag
.
The bridge uses pkg-config
to find ROS 1 packages.
ROS 2 packages are found through CMake using find_package()
.
Therefore the CMAKE_PREFIX_PATH
must not contain paths from ROS 1 which would overlay ROS 2 packages.
Here are the steps for Linux and OSX.
You should first build everything but the ROS 1 bridge with normal colcon arguments.
File truncated at 100 lines see the full file
Changelog for package ros1_bridge
0.10.3 (2022-03-29)
- Cleanup of README.md (#342)
- Parametrizing service execution timeout (#340)
- Fix cpplint error (#341)
- Update package maintainers (#335)
- Contributors: Cem Karan, Geoffrey Biggs, Jorge Perez, Marco Bassa, Tim Clephas, Tomoya Fujita
0.10.2 (2021-11-05)
- Example for [parameter_bridge]{.title-ref} (#330)
- Use rcpputils/scope_exit.hpp instead of rclcpp/scope_exit.hpp (#324)
- Use FindPython3 and make Python dependency explicit (#322)
- Bump <ros-tooling/setup-ros@v0.2> (#323)
- Add GitHub workflow for CI (#310)
- Update includes after rcutils/get_env.h deprecation (#311)
- Contributors: Christophe Bedard, Harsh Deshpande, Loy, Shane Loretz
0.10.1 (2021-01-25)
- Fix logging for updated rclcpp interface (#303)
- Fix typo in comments (#297)
- Contributors: Michael Carroll, Vicidel
0.9.5 (2020-12-08)
- Update to use rosidl_parser and .idl files rather than rosidl_adapter and .msg files (#296)
- Update maintainers (#286)
- Contributors: Jacob Perron, William Woodall
0.9.4 (2020-09-10)
- use hardcoded QoS (keep all, transient local) for /tf_static topic in dynamic_bridge (#282)
- document explicitly passing the topic type to 'ros2 topic echo' (#279)
0.9.3 (2020-07-07)
- Fix multiple definition if message with same name as service exists (#272)
- Contributors: Dirk Thomas
0.9.2 (2020-06-01)
- When generating service mappings cast pair to set to avoid duplicate pairs (#268)
- Contributors: Gavin Suddrey
0.9.1 (2020-05-27)
- Deprecate package key for service parameters, use full type instead (#263)
- Fix removing obsolete ROS 2 service bridges (#267)
- Gracefully handle invalid ROS 1 publishers (#266)
- Use reliable publisher in simple bridge (#264)
- Remove outdated information on Fast RTPS bug (#260)
- Contributors: Dirk Thomas, Thom747
0.9.0 (2020-05-18)
- Avoid new deprecations (#255)
- Updates since changes to message_info in rclcpp (#253)
- Assert ROS 1 nodes' stdout (#247)
- Ignore actionlib_msgs deprecation warning (#245)
- Drop workaround for https://github.com/ros2/rmw_fastrtps/issues/265. (#233)
- Code style only: wrap after open parenthesis if not in one line (#238)
- Contributors: Dirk Thomas, Jacob Perron, Michel Hidalgo, William Woodall
File truncated at 100 lines see the full file