Package Summary
| Tags | No category tags. |
| Version | 0.10.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | humble-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
0.10.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
0.9.0 (2025-06-16)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged off_highway_can at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 1.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | jazzy-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
1.1.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
1.0.0 (2025-07-01)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged off_highway_can at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.10.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | humble-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
0.10.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
0.9.0 (2025-06-16)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged off_highway_can at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 1.1.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | rolling-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
1.1.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
1.0.0 (2025-07-01)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged off_highway_can at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.10.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | humble-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
0.10.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
0.9.0 (2025-06-16)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged off_highway_can at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.10.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | humble-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
0.10.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
0.9.0 (2025-06-16)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged off_highway_can at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.10.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | humble-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
0.10.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
0.9.0 (2025-06-16)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged off_highway_can at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.10.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | humble-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
0.10.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
0.9.0 (2025-06-16)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged off_highway_can at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 0.10.0 |
| License | Apache-2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | This project provides ROS drivers for Bosch Off-Highway sensor systems. (Radar Off-Highway Premium, Radar OHW, General Purpose Radar Off-Highway (GPR), Ultrasonic Sensor System OHW Entry & Premium) |
| Checkout URI | https://github.com/bosch-engineering/off_highway_sensor_drivers.git |
| VCS Type | git |
| VCS Version | humble-devel |
| Last Updated | 2025-11-12 |
| Dev Status | MAINTAINED |
| Released | RELEASED |
| Tags | construction automation agriculture radar driver ultrasonic amr agv ultrasonic-sensor ros2 autonomous-mobile-robotics autonomous-mobile-robots off-highway radar-off-highway ultrasonic-sensor-system-ohw-premium ultrasonic-sensor-system-ohw-entry surround-sensing mobile-machines high-imaging-radar |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Robin Petereit
Authors
- Robin Petereit
- Marcus Huenerbein
off_highway_can
The off_highway_can package provides a C++ library to
- receive
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages and decode their bytes into custom C++ message structures, - encode the bytes of
can_msgs/Frameorsocketcan_msgs/FdFrameROS messages from custom C++ message structures and send them.
The list of message structures containing the definition of a CAN message and signals need to be filled by derived classes for CAN node specific functionality. The more generic handling of a cyclic redundancy check and a rolling message counter per message is provided by the library. Have a look directly into the CAN message structure definition for further information.
Classes
Receiver
The off_highway_can::Receiver is an abstract base class and needs to be derived for specific
sensor types and behavior. It provides the functionality to process
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages and decode configured ones based on provided message definitions. The decoded signal
values are forwarded to the derived class for user-defined processing of them.
The off_highway_can::Receiver allows to switch between normal and FD CAN frames via the
constructor argument use_fd.
The processing chain is based completely on message callbacks and thus event-based. The needed
processing time per message can be logged as ROS debug message at runtime with the compile time
optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Receiver provides a watchdog which checks whether any configured
message was received in the period of time defined by the parameter timeout and sends a diagnostic
error on the /diagnostics topic when a timeout occurs.
Subscribed Topics
-
from_can_bus
(
can_msgs/Frame)- CAN frames to decode
- Disabled by
use_fdconstructor argument
-
from_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
Published Topics
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic error in base class only contains timeout status
Parameters
See receiver_params.yaml.
Sender
The off_highway_can::Sender is an abstract base class and needs to be derived for specific
behavior. It provides the functionality to send
can_msgs/Frame or
socketcan_msgs/FdFrame
ROS messages by encoding configured CAN messages as bytes based on provided message definitions. The
encoded signal values are published to the to_can_bus or to_can_bus_fd topic.
The off_highway_can::Sender allows to switch between normal and FD CAN frames via the constructor
argument use_fd.
The encoding and publishing chain is just a method call and thus event-based. The needed processing
time to encode and publish all configured messages can be logged as ROS debug message at runtime
with the compile time optionCOMPILE_DEBUG_LOG.
Furthermore, the off_highway_can::Sender provides a watchdog which checks whether a ROS message
was published in a defined by the parameter timeout and sends a diagnostic error on the
/diagnostics topic when a timeout occurs.
Published Topics
-
to_can_bus
(
can_msgs/Frame)- Encoded CAN frames
- Disabled by
use_fdconstructor argument
-
to_can_bus_fd
(
socketcan_msgs/FdFrame)- CAN FD frames to decode
- Enabled by
use_fdconstructor argument
-
/diagnostics
(
diagnostic_msgs/DiagnosticArray)- Update Rate: normally 1 Hz, can be forced
- Diagnostic status in base class only contains timeout status
Parameters
See sender_params.yaml.
Free and Open Source Software (FOSS)
File truncated at 100 lines see the full file
Changelog for package off_highway_can
0.10.0 (2025-11-12)
- Fix formatting for linter
- off_highway_can: split license element into two Having two license strings into one element does give issues when generating the Yocto/OpenEmbedde bitbake recipes for meta-ros. see: https://github.com/ros/meta-ros/commit/72dfb21b8f297d23e8c029edc04baadb17b1d24f see: <license> (multiple, but at least one) Name of license for this package, e.g. BSD, GPL, LGPL. In order to assist machine readability, only include the license name in this tag. For multiple licenses multiple separate tags must be used. A package will have multiple licenses if different source files have different licenses. Every license occurring in the source files should have a corresponding <license> tag. For any explanatory text about licensing caveats, please use the <description> tag. -- https://ros.org/reps/rep-0149.html#license-multiple-but-at-least-one
- Add unit tests for timeout
- Fix incorrect timeout toggling
- Draw conclusion in the watchdog, not in the diagnostics callback
- Fix issue 20, don't publish sensor data when there is a sensor timeout
- ament_target_dependencies is deprecated for Kilted and Rolling This syntax should work as of ROS 2 Foxy already
- Contributors: Calin-Vasile Sopterean, Ferry Schoenmakers, Jan Vermaete, Tim Clephas
0.9.0 (2025-06-16)
- Use lround and explicit cast
- Fix integer inputs for round test
- Contributors: Robin Petereit
0.8.0 (2025-03-24)
- Move test to emphasize external FOSS
- Add tests for encoding by round
- Replace truncation of physical value with round outside of FOSS Minimizes the floating point error such that half offset of resolution in tests is not needed anymore.
- Contributors: Calin-Vasile Sopterean, Robin Petereit
0.7.0 (2024-12-04)
- Update docs for CAN FD
- Check matching lengths in decoding
- Allow start bits in CAN FD range
- Make CRC and message counter optional
- Enable processing of CAN FD frames
- Remove unused definitions
- Do not force warnings as errors to fix rolling (#11)
- Contributors: Robin Petereit, Tim Clephas
0.6.3 (2024-07-09)
0.6.2 (2024-06-13)
0.6.1 (2024-06-04)
-
Fix missing dependency that was find_packaged (#7)
- Fix missing dependency that was find_packaged
* Use ament_lint_common ---------
-
Contributors: Tim Clephas
0.6.0 (2024-05-14)
- Switch from deprecated signature to const shared_ptr reference while still supporting efficient intra-process communication See https://github.com/ros2/rclcpp/pull/1598.
- Contributors: Sarah Huber
0.5.1 (2024-03-27)
- Align Clang FP contraction to GCC for passing tests
- Add virtual destructor for base class
- Contributors: Robin Petereit
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| ament_lint_common | |
| can_msgs | |
| diagnostic_updater | |
| rclcpp | |
| ros2_socketcan_msgs |