![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |
Launch files
Messages
Services
Plugins
Recent questions tagged proto2ros at Robotics Stack Exchange
![]() |
proto2ros package from proto2ros repoproto2ros proto2ros_tests |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.0.0 |
License | MIT |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/bdaiinstitute/proto2ros.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-01-29 |
Dev Status | DEVELOPED |
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
- Boston Dynamics AI Institute
Authors
proto2ros
When exposing Protobuf interfaces to ROS 2, proto2ros
streamlines message translation and generation, so as to trivially augment
rosidl
pipeline
invocations to take Protobuf definitions and output ROS 2 message definitions. Additionally, message conversion APIs are generated to
simplify bridging Protobuf and ROS 2 message code.
Table of contents
Features
Message generation
Protobuf enumeration and message definitions are translated to equivalent ROS 2 message definitions.
Protobuf definitions, including comments, are extracted from Protobuf descriptor sets, as generated by
protoc
. More than one ROS 2
message definition may be necessary to represent a given Protobuf definition, as explained in the
map types and one-of fields subsections.
Package mapping
All Protobuf packages to which processed definitions belong are implicitly mapped to the ROS 2 package
that will host their ROS 2 message equivalents. As for the rest, the user may specify a package mapping
in proto2ros
configuration. Whether that is necessary or not depends on how message types
are mapped.
Type mapping
Scalar types
The mapping between Protobuf and ROS 2 scalar types is shown below.
Protobuf scalar type name | ROS 2 scalar type name |
---|---|
bool |
bool |
double |
float64 |
fixed32 |
uint32 |
fixed64 |
uint64 |
float |
float32 |
int32 |
int32 |
int64 |
int64 |
sfixed32 |
int32 |
sfixed64 |
int64 |
sint32 |
int32 |
sint64 |
int64 |
uint32 |
uint32 |
uint64 |
uint64 |
string |
string |
bytes |
uint8[] |
Note that, unlike all others, the Protobuf bytes
scalar type maps to a sequence type in ROS 2.
This is convenient but forces special handling of repeated bytes
fields.
Messages types
Every Protobuf message maps to a ROS 2 message. For statically typed message (as opposed to dynamically
typed google.protobuf.Any
messages), this mapping is derived from the sequential application of the
following rules, on first match wins basis:
- A user-defined message mapping in
proto2ros
configuration matches. Fully qualified message names are used verbatim. - A user-defined or implicit package mapping in
proto2ros
configuration matches. If multiple matches are found, the longest match applies. Fully qualified message names are camel-cased. - Passing unknown Protobuf messages is allowed by
proto2ros
configuration. Thenproto2ros/AnyProto
is used.
For google.protobuf.Any
messages, the rules for any types apply.
It is through message mappings that ad-hoc equivalences can be established e.g. some Protobuf message
may be equivalent to some standard ROS 2 message (and this is already the case for several core Protobuf
messages, see default proto2ros
configuration). It is through package mappings that equivalences
generated by proto2ros
in full, for a given ROS 2 package or one of its dependencies, interact with
each other.
For example, given the following configuration overlay:
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_cmake_python | |
rosidl_default_generators | |
ament_cmake_mypy | |
rclpy | |
rosidl_adapter | |
rosidl_default_runtime | |
ament_cmake_pytest | |
rclcpp | |
builtin_interfaces | |
std_msgs |
System Dependencies
Dependant Packages
Name | Deps |
---|---|
proto2ros_tests |