Skip to content

Commit

Permalink
Release v2.9.0 - RMSxxxx support and NAV350 support
Browse files Browse the repository at this point in the history
  • Loading branch information
aiplemaSICKAG committed May 5, 2023
1 parent 0355af6 commit f8a028a
Show file tree
Hide file tree
Showing 156 changed files with 6,558 additions and 1,961 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ demo/scan.csv

# Note: emulator testfiles (pcapng and json records) are ignored except a few very short test examples
test/emulator/scandata/*.*
!test/emulator/scandata/20221018_rms_1xxx_ascii_rms2_objects.pcapng.json

test/scripts/run_win64_ros1_simu_lms5xx.cmd
test/scripts/make_win64_vs2022.cmd
Expand Down Expand Up @@ -127,3 +126,4 @@ doc/sick_scan_api/20220905_Anmerkungen_Manuel_technical_pretest.pdf
doc/sick_scan_api/2022-08-24.minutes.technische.details.generische.api.pdf

tools/python_installer/python-3.9.13-amd64.exe
*.bak
19 changes: 14 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,19 @@ Possible types are **Added** for new features. **Changed** for changes to the ex
features that will be removed in future versions **Removed** for deprecated features that were removed in this release.
**Fixed** for all bug fixes. **Security** to prompt users to update in case of closed vulnerabilities.


## Unreleased ##

## Released ##

### v2.9.0 - RMSxxxx support and NAV350 support
- **Added** RMSxxxx support, unification of RMS-1xxx and RMS-2xxx Note: RMSxxxx supports ASCII-communication mode only (Cola-A).
- **Update** #159 (nav310 angle setting compability), merge with NAV310 angle settings branch https://github.com/SICKAG/sick_scan_xd/tree/159-nav310-angle-setting-compability
- **Update** Documentation LD-LRS3600,LD-LRS3601,LD-LRS3611,LD-OEM1500,LD-OEM1501 support
- **Update** Removed obsolete RMS-3xx
- **Added** NAV350 support
- **Update** Merge lms511_field_mon (fix lms511 field parsing and wait api), default_echo_setting (activate last echo by default), monitoring_ros2_qos (ROS2 QoS configuration), scansegment_xd_support (update build instructions), rename-mrs100-multiscan, rename-fullframe-topic

### v2.8.15 - Release Jan. 2023
- **Update** Win64 build instructions
- **Update** API documentation, driver states diagrams and typos
Expand All @@ -17,8 +26,8 @@ features that will be removed in future versions **Removed** for deprecated feat
- **Fix** catkin_lint warnings
- **Fix** ROS-2 Humble build

### v2.8.14 - Laserscan messages for Multiscan
- **Update** Laserscan messages for Multiscan lidar, #96
### v2.8.14 - Laserscan messages for multiScan136
- **Update** Laserscan messages for multiScan136 lidar, #96

### v2.8.13 - Dynamical pointcloud transform and QoS configuration
- **Update** Configuration of ROS quality of service by launchfile, #101
Expand All @@ -41,8 +50,8 @@ features that will be removed in future versions **Removed** for deprecated feat
- **Update** Range filter settings, #98 and #108
- **Update** Preparation for RMS1xxx support (tutorial, preparation for RMS1/RMS2, not activated)

### v2.8.6 - Multiscan update
- **Update** Multiscan update for 16-bit RSSI and modified SOPAS startup sequence
### v2.8.6 - multiScan136 update
- **Update** multiScan136 update for 16-bit RSSI and modified SOPAS startup sequence

### v2.8.5 - LRS4000 update
- **Update** LRS4000 extended configuration (glare detection sensitivity, echo-, mean-, median-filter)
Expand Down Expand Up @@ -86,7 +95,7 @@ features that will be removed in future versions **Removed** for deprecated feat
- **Added** Supported for LMDscandatascalefactor (LRS4xxx)

### v2.7.0 -
- **Added** V2.7.0: Support for Multiscan136 (sick_scansegment_xd)
- **Added** V2.7.0: Support for multiScan136 (sick_scansegment_xd)
- **Fixed** Timestamp LaserScan-message corrected (identical timestamps in LaserScan- and PointCloud2-messages, both by Software-PLL)

### v2.6.8 -
Expand Down
54 changes: 39 additions & 15 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,39 @@ cmake_minimum_required(VERSION 3.5)
project(sick_scan)

# Emulator build options
option(ENABLE_EMULATOR "Build emulator for offline and unittests (ON) or without emulator (OFF)" ON)
if(CMAKE_ENABLE_EMULATOR EQUAL 1)
option(ENABLE_EMULATOR "Build emulator for offline and unittests (ON) or without emulator (OFF)" ON) # OFF (release) or ON (development)
set(ENABLE_EMULATOR ON CACHE BOOL "Build emulator for offline and unittests (ON) or without emulator (OFF)" FORCE) # OFF (release) or ON (development)
message(STATUS "Option CMAKE_ENABLE_EMULATOR = ${CMAKE_ENABLE_EMULATOR}, building ${PROJECT_NAME} with emulator support, ENABLE_EMULATOR=${ENABLE_EMULATOR}")
else()
option(ENABLE_EMULATOR "Build emulator for offline and unittests (ON) or without emulator (OFF)" OFF) # OFF (release) or ON (development)
set(ENABLE_EMULATOR OFF CACHE BOOL "Build emulator for offline and unittests (ON) or without emulator (OFF)" FORCE) # OFF (release) or ON (development)
message(STATUS "Option CMAKE_ENABLE_EMULATOR = ${CMAKE_ENABLE_EMULATOR}, building ${PROJECT_NAME} without emulator support, ENABLE_EMULATOR=${ENABLE_EMULATOR}")
endif()

# LDMRS build options
option(BUILD_WITH_LDMRS_SUPPORT "Build ${PROJECT_NAME} with LDMRS support (ON, libsick_ldmrs from https://github.com/SICKAG/libsick_ldmrs required) or without LDMRS support (OFF)" OFF)
if(WIN32)
option(BUILD_WITH_LDMRS_SUPPORT "Build ${PROJECT_NAME} with LDMRS support (ON, libsick_ldmrs from https://github.com/SICKAG/libsick_ldmrs required) or without LDMRS support (OFF)" OFF)
set(BUILD_WITH_LDMRS_SUPPORT OFF CACHE BOOL "Build ${PROJECT_NAME} with LDMRS support (ON, libsick_ldmrs from https://github.com/SICKAG/libsick_ldmrs required) or without LDMRS support (OFF)" FORCE)
elseif(LDMRS EQUAL 0)
option(BUILD_WITH_LDMRS_SUPPORT "Build ${PROJECT_NAME} with LDMRS support (ON, libsick_ldmrs from https://github.com/SICKAG/libsick_ldmrs required) or without LDMRS support (OFF)" OFF)
set(BUILD_WITH_LDMRS_SUPPORT OFF CACHE BOOL "Build ${PROJECT_NAME} with LDMRS support (ON, libsick_ldmrs from https://github.com/SICKAG/libsick_ldmrs required) or without LDMRS support (OFF)" FORCE)
else()
option(BUILD_WITH_LDMRS_SUPPORT "Build ${PROJECT_NAME} with LDMRS support (ON, libsick_ldmrs from https://github.com/SICKAG/libsick_ldmrs required) or without LDMRS support (OFF)" ON)
set(BUILD_WITH_LDMRS_SUPPORT ON CACHE BOOL "Build ${PROJECT_NAME} with LDMRS support (ON, libsick_ldmrs from https://github.com/SICKAG/libsick_ldmrs required) or without LDMRS support (OFF)" FORCE)
endif()

# MRS100/SCANSEGMENT_XD/MULTISCAN136 build options
# SCANSEGMENT_XD/MULTISCAN136 build options
option(BUILD_WITH_SCANSEGMENT_XD_SUPPORT "Build ${PROJECT_NAME} with SCANSEGMENT_XD support (ON) or without SCANSEGMENT_XD support (OFF)" ON)
if(SCANSEGMENT_XD EQUAL 0)
option(BUILD_WITH_SCANSEGMENT_XD_SUPPORT "Build ${PROJECT_NAME} with SCANSEGMENT_XD support (ON) or without SCANSEGMENT_XD support (OFF)" OFF)
set(BUILD_WITH_SCANSEGMENT_XD_SUPPORT OFF CACHE BOOL "Build ${PROJECT_NAME} with SCANSEGMENT_XD support (ON) or without SCANSEGMENT_XD support (OFF)" FORCE)
else()
option(BUILD_WITH_SCANSEGMENT_XD_SUPPORT "Build ${PROJECT_NAME} with SCANSEGMENT_XD support (ON) or without SCANSEGMENT_XD support (OFF)" ON)
set(BUILD_WITH_SCANSEGMENT_XD_SUPPORT ON CACHE BOOL "Build ${PROJECT_NAME} with SCANSEGMENT_XD support (ON) or without SCANSEGMENT_XD support (OFF)" FORCE)
endif()

# Linker option visibilty
option(BUILD_LIB_HIDE_FUNCTIONS "Build ${PROJECT_NAME} library with function hiding except for SickScanApi-functions (ON) or without function hiding (OFF)" ON)
if(VISIBILITY EQUAL 0)
option(BUILD_LIB_HIDE_FUNCTIONS "Build ${PROJECT_NAME} library with function hiding except for SickScanApi-functions (ON) or without function hiding (OFF)" ON)
set(BUILD_LIB_HIDE_FUNCTIONS ON CACHE BOOL "Build ${PROJECT_NAME} library with function hiding except for SickScanApi-functions (ON) or without function hiding (OFF)" FORCE)
else()
option(BUILD_LIB_HIDE_FUNCTIONS "Build ${PROJECT_NAME} library with function hiding except for SickScanApi-functions (ON) or without function hiding (OFF)" OFF)
set(BUILD_LIB_HIDE_FUNCTIONS OFF CACHE BOOL "Build ${PROJECT_NAME} library with function hiding except for SickScanApi-functions (ON) or without function hiding (OFF)" FORCE)
endif()

# Debug or Release build options
Expand Down Expand Up @@ -79,7 +83,7 @@ if(NOT WIN32)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-format-overflow -fno-var-tracking-assignments")
endif()

if($ENV{ROS_VERSION})
if(NOT DEFINED ROS_VERSION AND DEFINED ENV{ROS_VERSION})
set(ROS_VERSION $ENV{ROS_VERSION})
endif()
add_compile_options(-D__ROS_VERSION=${ROS_VERSION})
Expand Down Expand Up @@ -172,6 +176,10 @@ if(ROS_VERSION EQUAL 1)
RadarPreHeaderStatusBlock.msg
RadarScan.msg
SickImu.msg
NAVLandmarkData.msg
NAVOdomVelocity.msg
NAVPoseData.msg
NAVReflectorData.msg
)
add_message_files(
DIRECTORY msg/ldmrs
Expand Down Expand Up @@ -291,6 +299,10 @@ if(ROS_VERSION EQUAL 2)
"msg/LFErecFieldMsg.msg"
"msg/LFErecMsg.msg"
"msg/LIDoutputstateMsg.msg"
"msg/NAVLandmarkData.msg"
"msg/NAVOdomVelocity.msg"
"msg/NAVPoseData.msg"
"msg/NAVReflectorData.msg"
"msg/ros2/RadarObject.msg"
"msg/RadarPreHeader.msg"
"msg/RadarPreHeaderDeviceBlock.msg"
Expand Down Expand Up @@ -331,8 +343,8 @@ else()
message(STATUS "Building ${PROJECT_NAME} without ldmrs support")
endif()

# Support for MRS100/SCANSEGMENT_XD/MULTISCAN136
if(BUILD_WITH_SCANSEGMENT_XD_SUPPORT EQUAL ON)
# Support for SCANSEGMENT_XD/MULTISCAN136
if(${BUILD_WITH_SCANSEGMENT_XD_SUPPORT} OR BUILD_WITH_SCANSEGMENT_XD_SUPPORT EQUAL ON)
message(STATUS "Building ${PROJECT_NAME} with SCANSEGMENT_XD support")
add_compile_options(-DSCANSEGMENT_XD_SUPPORT=1)
# msgpack11
Expand Down Expand Up @@ -495,6 +507,7 @@ if(ROS_VERSION EQUAL 1)
driver/src/${PROJECT_NAME}_services.cpp
driver/src/${PROJECT_NAME}_xd_api/api_impl.cpp
driver/src/${PROJECT_NAME}_xd_api/${PROJECT_NAME}_api_converter.cpp
driver/src/sick_nav_scandata_parser.cpp
driver/src/softwarePLL.cpp
driver/src/tcp/Mutex.cpp
driver/src/tcp/SickThread.cpp
Expand Down Expand Up @@ -580,6 +593,7 @@ else() # i.e. (ROS_VERSION EQUAL 0 OR ROS_VERSION EQUAL 2)
driver/src/sick_generic_callback.cpp
driver/src/sick_generic_field_mon.cpp
driver/src/sick_generic_imu.cpp
driver/src/sick_nav_scandata_parser.cpp
driver/src/sick_generic_laser.cpp
driver/src/sick_generic_monitoring.cpp
driver/src/sick_generic_parser.cpp
Expand Down Expand Up @@ -675,7 +689,7 @@ if(ROS_VERSION EQUAL 2)

if(WIN32 OR EXISTS "/opt/ros/eloquent" OR EXISTS "/opt/ros/foxy" OR EXISTS "/opt/ros/galactic") # rosidl_typesupport for ROS2 eloquent, foxy, galaxy
rosidl_target_interfaces(${PROJECT_NAME}_lib ${PROJECT_NAME} "rosidl_typesupport_cpp")
rosidl_target_interfaces(${PROJECT_NAME}_shared_lib ${PROJECT_NAME} "rosidl_typesupport_cpp")
rosidl_target_interfaces(${PROJECT_NAME}_shared_lib ${PROJECT_NAME} "rosidl_typesupport_cpp")
# rosidl_target_interfaces(sick_generic_caller ${PROJECT_NAME} "rosidl_typesupport_cpp")
else() # rosidl_typesupport for ROS2 humble or later
rosidl_get_typesupport_target(cpp_typesupport_target ${PROJECT_NAME} "rosidl_typesupport_cpp")
Expand Down Expand Up @@ -704,10 +718,20 @@ endif()

# install sick_scan_shared_lib incl. API headerfiles
if(ROS_VERSION EQUAL 0)
include(GNUInstallDirs)
set_target_properties(${PROJECT_NAME}_shared_lib PROPERTIES PUBLIC_HEADER "include/sick_scan_xd_api/sick_scan_api.h;python/api/sick_scan_api.py")
install(TARGETS ${PROJECT_NAME}_shared_lib
EXPORT sick_scan_xd_Export
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sick_scan_xd"
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

# Export sick_scan_shared_lib target to be used by other projects
install(EXPORT sick_scan_xd_Export
FILE sick_scan_xd-config.cmake
NAMESPACE sick_scan_xd::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/sick_scan_xd
)
endif()

Expand Down
6 changes: 3 additions & 3 deletions INSTALL-GENERIC.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Run the following steps to build sick_scan_xd on Linux (no ROS required):
popd
```

4. Build msgpack11 library (required only once for Multiscan136/sick_scansegment_xd):
4. Build msgpack11 library (required only once for multiScan136):
```
mkdir -p ./build
pushd ./build
Expand All @@ -53,7 +53,7 @@ Note: libsick_ldmrs is only required to support LDMRS sensors. If you do not nee
cmake -DROS_VERSION=0 -DLDMRS=0 -G "Unix Makefiles" ../sick_scan_xd
```

Note: msgpack11 is only required to support Multiscan136/sick_scansegment_xd. If you do not need or want to support Multiscan136/sick_scansegment_xd, you can skip building msgpack. To build sick_generic_caller without Multiscan136/sick_scansegment_xd support, switch off option `BUILD_WITH_SCANSEGMENT_XD_SUPPORT` in [CMakeLists.txt](./CMakeLists.txt) or call cmake with option `-DSCANSEGMENT_XD=0`:
Note: msgpack11 is only required to support multiScan136. If you do not need or want to support multiScan136, you can skip building msgpack. To build sick_generic_caller without multiScan136 support, switch off option `BUILD_WITH_SCANSEGMENT_XD_SUPPORT` in [CMakeLists.txt](./CMakeLists.txt) or call cmake with option `-DSCANSEGMENT_XD=0`:
```
cmake -DROS_VERSION=0 -DSCANSEGMENT_XD=0 -G "Unix Makefiles" ../sick_scan_xd
```
Expand Down Expand Up @@ -120,7 +120,7 @@ After successful build, binary files `sick_generic_caller.exe` and `sick_scan_sh

Note: LDMRS sensors are currently not supported on Windows.

Note: msgpack11 is only required to support Multiscan136/sick_scansegment_xd. If you do not need or want to support Multiscan136/sick_scansegment_xd, you can skip building msgpack. To build sick_generic_caller without Multiscan136/sick_scansegment_xd support, switch off option `BUILD_WITH_SCANSEGMENT_XD_SUPPORT` in [CMakeLists.txt](./CMakeLists.txt) or call cmake with option `-DSCANSEGMENT_XD=0`:
Note: msgpack11 is only required to support multiScan136. If you do not need or want to support multiScan136, you can skip building msgpack. To build sick_generic_caller without multiScan136 support, switch off option `BUILD_WITH_SCANSEGMENT_XD_SUPPORT` in [CMakeLists.txt](./CMakeLists.txt) or call cmake with option `-DSCANSEGMENT_XD=0`:
```
cmake -DROS_VERSION=0 -DSCANSEGMENT_XD=0 -G "%_cmake_string%" ..
```
28 changes: 24 additions & 4 deletions INSTALL-ROS1.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ Run the following steps to build sick_scan_xd on Linux with ROS 1:
git clone https://github.com/SICKAG/msgpack11.git
git clone https://github.com/SICKAG/sick_scan_xd.git
popd
rm -rf ./build ./build_isolated/ ./devel ./devel_isolated/ ./install ./install_isolated/ ./log/ # remove any files from a previous build
```

3. Build msgpack11 library (required only once for Multiscan136/sick_scansegment_xd):
3. Build msgpack11 library (required only once for multiScan136):
```
mkdir -p ./build/msgpack11
pushd ./build/msgpack11
Expand All @@ -42,17 +42,37 @@ Note: libsick_ldmrs is only required to support LDMRS sensors. If you do not nee
catkin_make_isolated --install --cmake-args -DROS_VERSION=1 -DLDMRS=0 -Wno-dev
```

Note: msgpack11 is only required to support Multiscan136/sick_scansegment_xd. If you do not need or want to support Multiscan136/sick_scansegment_xd, you can skip building msgpack. To build sick_generic_caller without Multiscan136/sick_scansegment_xd support, switch off option `BUILD_WITH_SCANSEGMENT_XD_SUPPORT` in [CMakeLists.txt](./CMakeLists.txt) or call cmake with option `-DSCANSEGMENT_XD=0`:
Note: msgpack11 is only required to support multiScan136. If you do not need or want to support multiScan136, you can skip building msgpack. To build sick_generic_caller without multiScan136 support, switch off option `BUILD_WITH_SCANSEGMENT_XD_SUPPORT` in [CMakeLists.txt](./CMakeLists.txt) or call cmake with option `-DSCANSEGMENT_XD=0`:
```
catkin_make_isolated --install --cmake-args -DROS_VERSION=1 -DSCANSEGMENT_XD=0 -Wno-dev
```

cmake flags can be combined. Use flags `-DLDMRS=0 -DSCANSEGMENT_XD=0` to build without LDMRS and scansegment_xd support:
cmake flags can be combined. Use flags `-DLDMRS=0 -DSCANSEGMENT_XD=0` to build **without LDMRS** and **without scansegment_xd support**:
```
catkin_make_isolated --install --cmake-args -DROS_VERSION=1 -DLDMRS=0 -DSCANSEGMENT_XD=0 -Wno-dev
```

### Summary for the different build options:

* **Without LDMRS-support** and **without Multiscan136 support**
```
catkin_make_isolated --install --cmake-args -DROS_VERSION=1 -DLDMRS=0 -DSCANSEGMENT_XD=0 -Wno-dev
```
* **Without LDMRS-support** and **with Multiscan136 support**
```
catkin_make_isolated --install --cmake-args -DROS_VERSION=1 -DLDMRS=0 -Wno-dev
```
* **with LDMRS-support** and **without Multiscan136 support**
```
catkin_make_isolated --install --cmake-args -DROS_VERSION=1 -DSCANSEGMENT_XD=0 -Wno-dev
```
* **with LDMRS-support** and **with Multiscan136 support**
```
catkin_make_isolated --install --cmake-args -DROS_VERSION=1 -Wno-dev
```

Note: To create source code documentation by doxygen, run

```
cd ./doxygen
doxygen ./docs/Doxyfile
Expand Down
Loading

0 comments on commit f8a028a

Please sign in to comment.