In order to collect data from super sensors and super sensor SDKs, a robosense_collect node based on YAML file configuration was developed to implement data collection functionality; This collection node is automatically compiled into ROS/ROS 2 version nodes by checking the ROS environment in the system during compilation, The following is a brief introduction to the supported functions of ROS/ROS 2 nodes:
- The ROS Version node support the following functions:
- Two modes based on time automatic segmentation/non segmentation
- Supports .bag format
- Supports both bz2/lz4 compression and non compression modes
- The ROS2 Version node supports the following functions
- Two modes based on time automatic segmentation/non segmentation
- Supports two formats: .db3 and .mcap
- Supports both zstd compression and non compression modes
Regarding the configuration of the robosense_collect node, please refer to Section 4 for detailed configuration instructions
-
-
Open a new terminal and change the work directory path which include the robosense_collect directory
-
Using
catkin_maketool to build this nodecatkin_make --only-pkg-with-deps robosense_collect
waiting for build finish!
-
Open a new terminal and change the work directory path which include the robosense_collect directory
-
Using
colcontool to build this nodecolcon build --symlink-install --packages-select robosense_collect
waiting for build finish!
-
-
Setup the node's environment by source command:
source devel/setup.bash(For Bash Terminal)source devel/setup.zsh(For Zsh Termial)
-
Run robosense_collect node:
roslaunch robosense_collect robosense_collect.launch
-
Setup the node's environment by source command:
source install/setup.bash(For Bash Terminal)source install/setup.zsh(For Zsh Termial)
-
Run robosense_collect node:
ros2 launch robosense_collect robosense_collect.launch.py
Notice: If you modified the setting yaml file before run the node, you should build this package again
The node's setting file reletive to package at DEFAULT_CONFIG/conf/collect.yaml, the user can modify the setting if need, and the blow table is the description of the setting items, the black bold items in the table which need set firstly.
| The First Level Item | The Second Level Item | The Third Level Item | Type | Discription |
|---|---|---|---|---|
| recordsensorconfig | record_sensors[] | enable_topic | bool | whether enable this topic to collect, default: false |
| topic_name | string | topic name which need collect | ||
| record_file_name | string | topic message save file name | ||
| enable_timeout_check | bool | whether enable timeout check, default: false | ||
| timeout_warn_th_ms | uint32_t | warning level timeout check threshold,default value is 300, unit: ms | ||
| timeout_error_th_ms | uint32_t | error level timeout check threshold,default value is 500, unit: ms | ||
| recorddataconfig | segment_type | string | support two types: (a) "RS_RECORD_SEGMENT_BY_TIME": means data collection will auto segment by time, the time threshold is "segment_time_th_ms" "RS_RECROD_SEGMENT_NO_SEG": means data collection don't segment, default | |
| segment_time_th_ms | uint32_t | auto segment by time threshold,unit: ms | ||
| enable_inner_segment | bool | Inner Segment, default value true | ||
| inner_segment_time_th_ms | uint32_t | Inner Segment by time threshold, unit: ms, default value 30000 | ||
| serialization_format | string | Only for ROS2, Fixed: "cdr" | ||
| storage_id | string | Only for ROS2, support two types: (a)"sqlite3", default (b)"mcap" |
||
| enable_compression | bool | whether enable compression, default: false | ||
| compression_mode | string | Only for ROS2, support two types: (a) “MESSAGE", default (b) "FILE" Notice: If storage_id is"mcap", the compress_mode must "FILE" |
||
| compression_format | string | For ROS2: support types: (a) "zstd", default For ROS1: support types: (a) "bz2", (b) "lz4", default |
||
| compression_quene_size | uint32_t | Only for ROS2: compression queue size, default: 50 | ||
| compression_thread_cnt | uint32_t | Only for ROS2: compression thread count, default: 1 | ||
| rdcs_root_directory_path | string | data save directory,the setting must end with "RDCS_ROOT/", For example: "/tmp/RDCS_ROOT/", And this is default value |
||
| enable_collect_freespace_monitor | bool | whether enable collection disk freespace check, default: true | ||
| collect_freespace_min_gbyte | uint32_t | the collection disk's minimal freespace size,default: 32, unit: GByte | ||
| enable_collect_disk_mount_monitor | bool | whether enable collection disk mount check,default: true | ||
| collect_disk_write_check_modes | string[] | collection disk's user/other/group write property check, support three types: (a) “RS_COLLECT_DISK_WRITE_CHECK_USR”, default (b) “RS_COLLECT_DISK_WRITE_CHECK_OTH” (c) "RS_COLLECT_DISK_WRITE_CHECK_GRP" |
||
| enable_clip_erase_timeout_debug | bool | whether enable clip write timeout debug mode,default: false | ||
| clip_erase_timeout_debug_count | uint32_t | clip write timeout debug mode trigger count, default: 2 | ||
| recordtaskconfig | clip_id | uint32_t | clip start number, default: 0 | |
| task_name | string | collection task name, default: "" | ||
| task_name_add_timestamp | bool | whether use timestamp string as a part of task name, default: true | ||
| recorddiscoveryconfig | is_use_sim | bool | whether use simulated clock, default: false | |
| is_discovery_disabled | bool | whether disable topic discovery, default: false |