Skip to content

Commit

Permalink
Add a pcap source reader node
Browse files Browse the repository at this point in the history
  • Loading branch information
Samahu committed Jul 9, 2024
1 parent b778ce2 commit d95481f
Show file tree
Hide file tree
Showing 4 changed files with 375 additions and 4 deletions.
12 changes: 8 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,10 @@ add_service_files(FILES GetConfig.srv SetConfig.srv GetMetadata.srv)
generate_messages(DEPENDENCIES std_msgs sensor_msgs geometry_msgs)

set(_ouster_ros_INCLUDE_DIRS
"include;ouster-sdk/ouster_client/include;ouster-sdk/ouster_client/include/optional-lite")
"include;"
"ouster-sdk/ouster_client/include;"
"ouster-sdk/ouster_client/include/optional-lite;"
"ouster-sdk/ouster_pcap/include")

catkin_package(
INCLUDE_DIRS
Expand All @@ -61,7 +64,7 @@ set(_SAVE_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
set(BUILD_SHARED_LIBS OFF)

option(BUILD_VIZ "Enabled for Python build" OFF)
option(BUILD_PCAP "Enabled for Python build" OFF)
option(BUILD_PCAP "Enabled for Python build" ON)
find_package(OusterSDK REQUIRED)

set(BUILD_SHARED_LIBS ${_SAVE_BUILD_SHARED_LIBS})
Expand All @@ -74,14 +77,15 @@ add_definitions(-DEIGEN_MPL2_ONLY)

add_library(ouster_ros src/os_ros.cpp)
target_link_libraries(ouster_ros PUBLIC ${catkin_LIBRARIES} ouster_build pcl_common PRIVATE
-Wl,--whole-archive ouster_client -Wl,--no-whole-archive)
-Wl,--whole-archive ouster_client ouster_pcap -Wl,--no-whole-archive)
add_dependencies(ouster_ros ${PROJECT_NAME}_gencpp)

# ==== Executables ====
add_library(${PROJECT_NAME}_nodelets
src/os_sensor_nodelet_base.cpp
src/os_sensor_nodelet.cpp
src/os_replay_nodelet.cpp
src/os_pcap_nodelet.cpp
src/os_cloud_nodelet.cpp
src/os_image_nodelet.cpp
src/os_driver_nodelet.cpp)
Expand All @@ -100,7 +104,7 @@ if(CATKIN_ENABLE_TESTING)
tests/point_cloud_compose_test.cpp
)
target_link_libraries(${PROJECT_NAME}_test ${catkin_LIBRARIES}
ouster_build pcl_common -Wl,--whole-archive ouster_client -Wl,--no-whole-archive)
ouster_build pcl_common -Wl,--whole-archive ouster_client ouster_pcap -Wl,--no-whole-archive)
endif()

# ==== Install ====
Expand Down
88 changes: 88 additions & 0 deletions launch/replay_pcap.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
<launch>

<arg name="ouster_ns" default="ouster" doc="Override the default namespace of all ouster nodes"/>
<arg name="metadata" default ="" doc="path to read metadata file when replaying sensor data"/>
<arg name="pcap_file" default="" doc="file name to use for the recorded pcap file"/>
<arg name="timestamp_mode" default=" " doc="A parameter that allows you to override the timestamp measurements;
possible values: {
TIME_FROM_ROS_TIME
}"/>
<arg name="ptp_utc_tai_offset" default="-37.0"
doc="UTC/TAI offset in seconds to apply when using TIME_FROM_PTP_1588"/>
<arg name="viz" default="true" doc="whether to run a rviz"/>
<arg name="rviz_config" default="$(find ouster_ros)/config/viz.rviz" doc="optional rviz config file"/>

<arg name="tf_prefix" default=" " doc="namespace for tf transforms"/>
<arg name="sensor_frame" default="os_sensor"
doc="sets name of choice for the sensor_frame tf frame, value can not be empty"/>
<arg name="lidar_frame" default="os_lidar"
doc="sets name of choice for the os_lidar tf frame, value can not be empty"/>
<arg name="imu_frame" default="os_imu"
doc="sets name of choice for the os_imu tf frame, value can not be empty"/>
<arg name="point_cloud_frame" default=" "
doc="which frame to be used when publishing PointCloud2 or LaserScan messages.
Choose between the value of sensor_frame or lidar_frame, leaving this value empty
would set lidar_frame to be the frame used when publishing these messages."/>

<arg name="dynamic_transforms_broadcast" default="false"
doc="static or dynamic transforms broadcast"/>
<arg name="dynamic_transforms_broadcast_rate" default="1.0"
doc="set the rate (Hz) of broadcast when using dynamic broadcast; minimum value is 1 Hz"/>

<arg name="proc_mask" default="IMG|PCL|IMU|SCAN" doc="
The IMG flag here is not supported and does not affect anything,
to disable image topics you would need to omit the os_image node
from the launch file"/>

<arg name="scan_ring" default="0" doc="
use this parameter in conjunction with the SCAN flag
and choose a value the range [0, sensor_beams_count)"/>

<arg name="point_type" default="original" doc="point type for the generated point cloud;
available options: {
original,
native,
xyz,
xyzi,
xyzir
}"/>

<group ns="$(arg ouster_ns)">
<node pkg="nodelet" type="nodelet" name="os_nodelet_mgr"
output="screen" required="true" args="manager"/>
</group>

<arg name="_use_metadata_file" value="$(eval not (metadata == ''))"/>

<group ns="$(arg ouster_ns)">
<node if="$(arg _use_metadata_file)" pkg="nodelet" type="nodelet"
name="os_node" output="screen" required="true"
launch-prefix="bash -c 'sleep 3; $0 $@' "
args="load ouster_ros/OusterPcap os_nodelet_mgr">
<param name="~/metadata" value="$(arg metadata)"/>
<param name="~/pcap_file" value="$(arg pcap_file)"/>
</node>
</group>

<include file="$(find ouster_ros)/launch/common.launch">
<arg name="ouster_ns" value="$(arg ouster_ns)"/>
<arg name="viz" value="$(arg viz)"/>
<arg name="rviz_config" value="$(arg rviz_config)"/>
<arg name="tf_prefix" value="$(arg tf_prefix)"/>
<arg name="sensor_frame" value="$(arg sensor_frame)"/>
<arg name="lidar_frame" value="$(arg lidar_frame)"/>
<arg name="imu_frame" value="$(arg imu_frame)"/>
<arg name="point_cloud_frame" value="$(arg point_cloud_frame)"/>
<arg name="timestamp_mode" value="$(arg timestamp_mode)"/>
<arg name="ptp_utc_tai_offset" value="$(arg ptp_utc_tai_offset)"/>
<arg name="dynamic_transforms_broadcast"
value="$(arg dynamic_transforms_broadcast)"/>
<arg name="dynamic_transforms_broadcast_rate"
value="$(arg dynamic_transforms_broadcast_rate)"/>
<arg name="proc_mask" value="$(arg proc_mask)"/>
<arg name="scan_ring" value="$(arg scan_ring)"/>
<arg name="point_type" value="$(arg point_type)"/>
</include>


</launch>
5 changes: 5 additions & 0 deletions ouster_ros_nodelets.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@
A nodelet that can load up existing Ouster recordings and replay them.
</description>
</class>
<class name="ouster_ros/OusterPcap" type="ouster_ros::OusterPcap" base_class_type="nodelet::Nodelet">
<description>
A nodelet that can directly load ouster sensor data from a pcap file.
</description>
</class>
<class name="ouster_ros/OusterCloud" type="ouster_ros::OusterCloud" base_class_type="nodelet::Nodelet">
<description>
A nodelet that process incoming Ouster lidar packets and publishes a corresponding point cloud.
Expand Down
Loading

0 comments on commit d95481f

Please sign in to comment.