-
Notifications
You must be signed in to change notification settings - Fork 153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ROS2 compatibility mode #146
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Added required launch files + Better abstraction of classes + Simplified threading logic + Added thread safe implemention of ring buffer (not hooked yet)
This was referenced Jun 2, 2023
…roprite launch file
…s and laser scans
…pective flags enabled
…_params.yaml and update corresponding launch files
celentes
approved these changes
Jun 8, 2023
Define new argument scan_ring
twslankard
approved these changes
Jun 14, 2023
This was referenced Jun 15, 2023
kairenw
reviewed
Jun 20, 2023
@@ -1,7 +1,7 @@ | |||
# Official ROS driver for Ouster sensors | |||
|
|||
[ROS1 (melodic/noetic)](https://github.com/ouster-lidar/ouster-ros/tree/master) | | |||
[ROS2 (rolling/humble)](https://github.com/ouster-lidar/ouster-ros/tree/ros2) | | |||
[ROS2 (rolling/humble/iron)](https://github.com/ouster-lidar/ouster-ros/tree/ros2) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😍
kairenw
reviewed
Jun 20, 2023
kairenw
approved these changes
Jun 20, 2023
kairenw
reviewed
Jun 20, 2023
This was referenced Jun 26, 2023
This was referenced Jul 4, 2023
This was referenced Jul 20, 2023
stephen-derosa
referenced
this pull request
Aug 14, 2023
* Add thread_safe_ring_buffer + Switch to using threads for packet processing in os_sensor node + Add new wreset service + Add metadata service to os_replay * implemented the refactored os_cloud_nodelet + adding relevant processors * Backport os_image_nodelet + add image_processor + Add a switch between dynamic and static broadcast * Refactoring and fixes for the os_cloud_nodelet + Only create publisher when processors are enabled * Add a new os_driver nodelet + Add a new launch file to utilize os_driver + Made it is possible to set custom tf frames + Made it possible to set proc_mask and scan_ring * Add ring_buffer_test + enable building and running within docker * Adjust the tests run command * Source the workspace before running tests * Enable bash as the shell * Rename nodelets_os namesapce to ouster_ros + Rename nodelets_os.xml to ouster_ros_nodelet.xml + Wrap all classes with ouster_ros + always default no_bond + Fix Dockerfile build * Update CHANGELOG.txt * Update rviz color scheme and changelog * Update README.md to direct people to use driver.launch instead of sensor.launch * Add a section describing how to obtain detailed description of launch args
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related Issues & PRs
Summary of Changes
lidar_frame
by defaultproc_mask
handling (all flags supportedexcluding the)IMG
scan_ring
parameter to enable picking a specific ring.Performance Comparison
Still in the process of running a full benchmark but in general the current data shows the following:
TODOs
Provide topic mapping that is compatible with Steve Macenski's Ouster ROS2 driverProvide support for parsing Steve's Ouster ROS2 yaml formatSupport the proc_mask parameterAdd an option to use select the frame_id for published point clouds betweenos_lidar
andos_sensor
.Hook up the implemented ThreadSafeRingBuffer to minimize packets drop in case the processing thread falls behind.Add units around the ThreadSafeRingBufferReduce the number of synchronization objects neededAdd the ability to publish sensor_msgs::msg::LaserScanConfigurable ring (De-scoped)Configurable QoS (allow system default qos)Factor out the functionality of OusterImage and integrate into OusterDriver same as os_cloud (De-scoped)Validation
Old Interface Maintained
The three launch commands should be fully preserved under the new changes
Single Node (os_sensor+os_cloud+os_image)
To use the new combined node os_driver run the launch file
driver.launch.py
as shown below but please find thedriver_config.yaml
and adjust to match your sensor settings:Single Node (Compatibility Mode)
To have the same topic names as the community driver use
driver_launch.py
launch file instead, this launch file points to thecommunity_driver_config.yaml
and it should work seamlesslyexcept for the(all flags should work as expected)IMG
option of proc_mask parameterproc_mask flags
proc_mask
.IMU
,SCAN
,IMG
andPCL
.Alternate QoS settings
use_system_default_qos
Note that when setting
use_system_default_qos
to true RViz won't be able to display the point cloud by default. You would need to select/ouster/points
topic and adjust the policy to be reliable.Alternate PointCloud frame
point_cloud_frame
betweenos_lidar
andos_sensor
Altering between the two should be clearly reflected in the the rendered point cloud in RVIZ
Sensor Lifecycle Management
/ouster/reset
service