Skip to content

Commit

Permalink
Feature/issue update 2405xx
Browse files Browse the repository at this point in the history
  • Loading branch information
aiplemaSICKAG committed Jul 16, 2024
1 parent e69f94f commit d1f282e
Show file tree
Hide file tree
Showing 169 changed files with 5,186 additions and 778 deletions.
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,16 @@ tools/python_installer/python-3.9.13-amd64.exe
*.bak

test/scripts/run_win64_picoscan_emulator.cmd
test/scripts/bloom_release.cmd

test/emulator/scandata/20230719_mrs1104_infringement/

doc/20230919_sick_scan_xd_timeout_settings.pptx

test/docker/archive/

test/docker/python/__pycache__/

tools/pandoc/

test/docker/images/
66 changes: 37 additions & 29 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +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.

## Released ##
## Unreleased ##

### 3.5.0
- **add** Optional switch between "system timestamps" (default) and "tick timestamps"
- **add** Extract sick_scan_xd version from package.xml
- **add** Add git info to sick_scan_xd version
- **fix** #316 (blocking API-close in case of wrong ip-address)
- **add** #321, #310 (optional cmake-flag to set a calling convention for API calls)

### Release 3.4.0
## Released ##

- **add** azimut angle table for MRS-1xxx and LMS-1xxx with firmware 2.2.0 oder newer
### Release v3.4.0
- **add** azimuth angle table for MRS-1xxx and LMS-1xxx with firmware 2.2.0 oder newer
- **add** dockertests for MRS-1xxx, multiScan and picoScan with ROS-2
- **add** API-funktion SickScanApiSendSOPAS to send SOPAS commands (e.g. "sRN SCdevicestate" or "sRN ContaminationResult")
- **add** generation of TF messages
Expand All @@ -18,7 +26,7 @@ features that will be removed in future versions **Removed** for deprecated feat

### Release v3.3.0

- **add** Option for MRS1xxx azimuth correction table
- **add** Option for MRS1xxx azimuth correction table
- **add** Support for picoScan100 (single echo w/o addons)
- **add** API logging functions and verbosity (#270)
- **add** API documentation (multiple lidars not supported, #281)
Expand All @@ -43,7 +51,7 @@ features that will be removed in future versions **Removed** for deprecated feat

- **add** IMU support for multiScan
- **add** LaserScan output for picoScan
- **fix** API reinit
- **fix** API reinit
- **fix** multiScan data output with range filter activated
- **fix** adapt multiScan startup and shutdown sequence
- **fix** adaptations for MRS-1000 v2 firmware
Expand All @@ -54,11 +62,11 @@ This release has a new major version as it breaks with the previously used ROS m
For consistency, the ROS module name has been changed to "sick_scan_xd" to match the name used everywhere else.

- **add** New topics for additional data and properties
- **add** Official ARM64 support
- **add** Official ARM64 support
- **add** Service for requesting contamination detection information
- **change** Improvements from customer tickets and documentation enhancements
- **fix** ROS module name consistency

### Release v2.10.3
- **fix** avoid problems with min/max definition in the STL and preprocessor definitions

Expand All @@ -67,7 +75,7 @@ For consistency, the ROS module name has been changed to "sick_scan_xd" to match

### Release v2.10.1
- **update** make Compact format the default for picoScan and multiScan

### Release v2.10.0
- **add** picoScan support
- **add** Compact format support
Expand All @@ -93,7 +101,7 @@ For consistency, the ROS module name has been changed to "sick_scan_xd" to match
- **Update** Win64 build instructions
- **Update** API documentation, driver states diagrams and typos
- **Added** LRS-36xx configuration for upside-down mounting
- **Removed** Obsolete service commands and RMS3xx support
- **Removed** Obsolete service commands and RMS3xx support
- **Fix** LRS-36xx angle configuration
- **Fix** catkin_lint warnings
- **Fix** ROS-2 Humble build
Expand Down Expand Up @@ -143,7 +151,7 @@ For consistency, the ROS module name has been changed to "sick_scan_xd" to match
- **Update** README.md restructured
- **Update** Collected update including previous v2.8.x changes

### v2.8.2 - development branch
### v2.8.2 - development branch
- **Fixed** Update build instructions in README.md, visualization in python API-example with low frequency to reduce cpu usage.

### v2.8.1 - development branch
Expand All @@ -156,68 +164,68 @@ For consistency, the ROS module name has been changed to "sick_scan_xd" to match
- **Changed** Changed to namespace roswrap in ros wrapper classes
- **Fixed** Library linker flag #91

### v2.7.5 -
### v2.7.5 -
- **Fixed** MRS6124 pointcloud error #88

### v2.7.4 -
### v2.7.4 -
- **Fixed** ROS2 compilation error #83

### v2.7.3 -
### v2.7.3 -
- **Added** Supported for LFPmeanfilter and LFPmedianfilter (MRS1xxx, LMS1xxx, LMS4xxx, LRS4xxx)
- **Added** Supported for LMDscandatascalefactor (LRS4xxx)

### v2.7.0 -
### v2.7.0 -
- **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 -
### v2.6.8 -
- **Fixed** Merge pull request #76

### v2.6.7 -
### v2.6.7 -
- **Update** LMS511 configuration #67

### v2.6.6 -
### v2.6.6 -
- **Update** NAV310 + LRS4xxx update, issues #58, #59, #60, #61

### v2.6.5 -
### v2.6.5 -
- **Fixed** LRS4xxx scan configuration #52

### v2.6.4 -
### v2.6.4 -
- **Fixed** LMS5xx echo filter settings corrected

### v2.6.3 -
### v2.6.3 -
- **Fixed** Timestamp Laserscan message corrected

### v2.6.2 -
### v2.6.2 -
- **Fixed** LDMRS spinning problem corrected

### v2.6.1 -
### v2.6.1 -
- **Added** V2.6.1: Support for RMS-1xxx binary protocol

### v2.6.0 -
### v2.6.0 -
- **Changed** V2.6.0: RMS configuration update, issue #7

### v2.5.2 -
### v2.5.2 -
- **Fixed** Fix LSR-4xxx laserscan angles #28
- **Fixed** Fix duplicated laserscan messages #28

### v2.5.1 -
### v2.5.1 -
- **Fixed** Error after SOPAS command SetAccessMode #27

### v2.5.0 -
### v2.5.0 -
- **Fixed** Issue #24 (stop scanner at exit)
- **Added** new ros service SickScanExit to stop scanner and exit

### v2.4.6 -
### v2.4.6 -
- **Fixed** Corrected angle shift parameter for LMS-4xxx
- **Changed** Typo corrected

### v2.4.5 -
### v2.4.5 -
- **Changed** bugfix #158 (driver terminates), modified SOPAS-startup sequence.

### v2.4.4 - 2022-01-25
- **Added** Support min and max angle configuration for LRS-3601
- **Changed** Mirroring for NAV-3xx
- **Changed** Mirroring for NAV-3xx

### v2.4.3 - 2022-01-18
- **Changed** Rename class sick_lidar::Util to namespace sick_lidar::util
Expand Down
15 changes: 12 additions & 3 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,18 @@
Changelog for package sick_scan_xd
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

3.4.0 (2024-05-03)
Forthcoming
-----------
* Release 3.4.0
* Release 3.5.0
* add: Optional switch between "system timestamps" (default) and "tick timestamps"
* add: Extract sick_scan_xd version from package.xml
* add: Add git info to sick_scan_xd version
* fix: #316 (blocking API-close in case of wrong ip-address)
* add: #321, #310 (optional cmake-flag to set a calling convention for API calls)

3.4.0 (2024-04-18)
------------------
* Release v3.4.0
* add: azimut angle table for MRS-1xxx and LMS-1xxx with firmware 2.2.0 oder newer
* add: dockertests for MRS-1xxx, multiScan and picoScan with ROS-2
* add: API-funktion SickScanApiSendSOPAS to send SOPAS commands (e.g. "sRN SCdevicestate" or "sRN ContaminationResult")
Expand All @@ -16,7 +25,7 @@ Changelog for package sick_scan_xd
3.3.0 (2024-03-04)
------------------
* Release v3.3.0
* add: Option for MRS1xxx azimuth correction table
* add: Option for MRS1xxx azimuth correction table
* add: Support for picoScan100 (single echo w/o addons)
* add: API logging functions and verbosity (#270)
* add: API documentation (multiple lidars not supported, #281)
Expand Down
101 changes: 89 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ if (POLICY CMP0048)
cmake_policy(SET CMP0048 NEW)
endif()


# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
Expand Down Expand Up @@ -94,12 +93,17 @@ elseif(DEFINED SICK_TARGET_ENDIANESS)
add_compile_options(-DSICK_TARGET_ENDIANESS=${SICK_TARGET_ENDIANESS})
endif()

# Optional calling convention of sick_scan_xd API (using default is recommended, but can be overwritten by cmake flag if required)
if(DEFINED SICK_SCAN_XD_API_CALLING_CONVENTION)
add_compile_options(-DSICK_SCAN_XD_API_CALLING_CONVENTION=${SICK_SCAN_XD_API_CALLING_CONVENTION})
endif()

# ROS Version
message(STATUS "ROS_VERSION precheck: ENV{ROS_VERSION}=$ENV{ROS_VERSION} ENV{ROS_DISTRO}=$ENV{ROS_DISTRO} ROS_VERSION=${ROS_VERSION} CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
if(DEFINED CMAKE_PREFIX_PATH AND "${CMAKE_PREFIX_PATH}" STREQUAL "/opt/ros/humble")
set(ROS_VERSION 2) # required for ROS2 humble bloom releases with jenkins buildfarm
elseif(NOT DEFINED ROS_VERSION AND EXISTS "/opt/ros/humble/setup.sh")
set(ROS_VERSION 2) # required for ROS2 humble bloom releases with jenkins buildfarm
if(DEFINED CMAKE_PREFIX_PATH AND ("${CMAKE_PREFIX_PATH}" STREQUAL "/opt/ros/humble" OR "${CMAKE_PREFIX_PATH}" STREQUAL "/opt/ros/iron" OR "${CMAKE_PREFIX_PATH}" STREQUAL "/opt/ros/jazzy"))
set(ROS_VERSION 2) # required for ROS2 humble/iron/jazzy bloom releases with jenkins buildfarm
elseif(NOT DEFINED ROS_VERSION AND (EXISTS "/opt/ros/humble/setup.sh" OR EXISTS "/opt/ros/iron/setup.sh" OR EXISTS "/opt/ros/jazzy/setup.sh"))
set(ROS_VERSION 2) # required for ROS2 humble/iron/jazzy bloom releases with jenkins buildfarm
endif()
if(NOT DEFINED ROS_VERSION AND DEFINED ENV{ROS_VERSION})
set(ROS_VERSION $ENV{ROS_VERSION})
Expand Down Expand Up @@ -127,6 +131,48 @@ else()
add_compile_options(-DRASPBERRY=0)
endif()

# Get sick_scan_xd git version, see http://xit0.org/2013/04/cmake-use-git-branch-and-commit-details-in-project/
option(QUERY_GIT_INFO "Get sick_scan_xd git version" ON)
if(${QUERY_GIT_INFO} OR QUERY_GIT_INFO EQUAL ON)
if (NOT DEFINED ENV{GITHASH})
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GITHASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
endif()
if (NOT DEFINED ENV{GITINFO})
execute_process(
COMMAND git log -1 --pretty=format:%ad%x09%an%x09%s --date=iso
COMMAND iconv -f utf8 -t ascii//TRANSLIT
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GITINFO
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
endif()
message(STATUS "GITHASH: ${GITHASH}")
message(STATUS "GITINFO: ${GITINFO}")
add_compile_options(-DGITHASH="\\"${GITHASH}\\"")
add_compile_options(-DGITINFO="\\"${GITINFO}\\"")
endif()
# Extract sick_scan_xd version from package.xml and update sick_scan_xd_version.h if required
option(EXTRACT_PACKAGE_VERSION "Extract sick_scan_xd version from package.xml" ON)
if(${EXTRACT_PACKAGE_VERSION} OR EXTRACT_PACKAGE_VERSION EQUAL ON)
if(WIN32)
set(PYTHON_PKG_VERSION_TOOL_CMD python python/tools/package_version_tool.py)
else()
set(PYTHON_PKG_VERSION_TOOL_CMD python3 python/tools/package_version_tool.py)
endif()
execute_process(
COMMAND ${PYTHON_PKG_VERSION_TOOL_CMD}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
ERROR_QUIET
)
endif()
# Checks and prints a message, if a header file does not exist
function(check_header_exists headerfilepath headerfilename packagename)
Expand All @@ -153,10 +199,11 @@ endfunction()
if(${ENABLE_EMULATOR} OR ENABLE_EMULATOR EQUAL ON)
# emulator requires jsoncpp for pcapng and other files
find_package(jsoncpp REQUIRED) # install libjsoncpp by running "sudo apt-get install libjsoncpp-dev" (Linux) resp. "vcpkg install jsoncpp:x64-windows" (Windows)
if(WIN32)
set(LIB_JSONCPP jsoncpp_lib)
else()
set(LIB_JSONCPP jsoncpp_lib)
set(LIB_JSONCPP jsoncpp_lib)
else()
find_package(jsoncpp QUIET) # jsoncpp optional (only required for dockertests of C++ API)
if (${jsoncpp_FOUND})
set(LIB_JSONCPP jsoncpp_lib)
endif()
endif()
Expand Down Expand Up @@ -713,7 +760,7 @@ if(ROS_VERSION EQUAL 2)
${LDMRS_TARGET_DEPENDENCIES}
)
if(WIN32 OR EXISTS "/opt/ros/eloquent" OR EXISTS "/opt/ros/foxy" OR EXISTS "/opt/ros/galactic") # rosidl_typesupport for ROS2 eloquent, foxy, galaxy
if(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_c")
rosidl_target_interfaces(${PROJECT_NAME}_lib ${PROJECT_NAME} "rosidl_typesupport_cpp")
rosidl_target_interfaces(${PROJECT_NAME}_shared_lib ${PROJECT_NAME} "rosidl_typesupport_c")
Expand Down Expand Up @@ -767,6 +814,24 @@ if(BUILD_SICK_SCAN_XD_API_TEST EQUAL 1)
target_link_libraries(sick_scan_xd_api_test "pthread") # pthread required for std::thread
endif()
endif()
add_executable(sick_scan_xd_api_dockertest
driver/src/sick_scan_xd_api/sick_scan_api_converter.cpp
test/src/sick_scan_xd_api/sick_scan_xd_api_dockertest.cpp
test/src/sick_scan_xd_api/sick_scan_xd_api_wrapper.c
)
target_link_libraries(sick_scan_xd_api_dockertest ${LIB_JSONCPP})
if(NOT WIN32)
target_link_libraries(sick_scan_xd_api_dockertest "dl") # link with dl for dynamic library loading
if(ROS_VERSION EQUAL 0)
target_link_libraries(sick_scan_xd_api_dockertest "pthread") # pthread required for std::thread
target_link_options(sick_scan_xd_api_dockertest PUBLIC "LINKER:--no-as-needed") # fixes exception "Enable multithreading to use std::thread: Operation not permitted"
elseif(ROS_VERSION EQUAL 1)
target_link_libraries(sick_scan_xd_api_dockertest ${catkin_LIBRARIES})
add_dependencies(sick_scan_xd_api_dockertest ${PROJECT_NAME}_gencfg ${catkin_EXPORTED_TARGETS} ${${PROJECT_NAME}_EXPORTED_TARGETS})
elseif(ROS_VERSION EQUAL 2)
target_link_libraries(sick_scan_xd_api_dockertest "pthread") # pthread required for std::thread
endif()
endif()
endif()
# install sick_scan_xd_shared_lib incl. API headerfiles
Expand Down Expand Up @@ -796,7 +861,7 @@ if(ROS_VERSION EQUAL 1)
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
if(BUILD_SICK_SCAN_XD_API_TEST EQUAL 1)
install(TARGETS sick_scan_xd_api_test
install(TARGETS sick_scan_xd_api_test sick_scan_xd_api_dockertest
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
endif()
Expand All @@ -822,7 +887,7 @@ endif()
if(ROS_VERSION EQUAL 2)
if(BUILD_SICK_SCAN_XD_API_TEST EQUAL 1)
install(TARGETS sick_scan_xd_api_test DESTINATION lib/${PROJECT_NAME})
install(TARGETS sick_scan_xd_api_test sick_scan_xd_api_dockertest DESTINATION lib/${PROJECT_NAME})
endif()
install(TARGETS sick_generic_caller DESTINATION lib/${PROJECT_NAME})
install(TARGETS ${PROJECT_NAME}_lib ${PROJECT_NAME}_shared_lib DESTINATION lib)
Expand Down Expand Up @@ -913,3 +978,15 @@ if(${ENABLE_EMULATOR} OR ENABLE_EMULATOR EQUAL ON)
tools/test_server/launch
DESTINATION share/${PROJECT_NAME})
endif()
#
# rtabmap support utilities
#
if(${ENABLE_EMULATOR} OR ENABLE_EMULATOR EQUAL ON)
if(NOT WIN32 AND ROS_VERSION EQUAL 1)
add_executable(pose2d_to_odom_converter test/src/pose2d_to_odom_converter.cpp)
target_link_libraries(pose2d_to_odom_converter ${PROJECT_NAME}_lib ${SICK_LDMRS_LIBRARIES} ${catkin_LIBRARIES})
install(TARGETS pose2d_to_odom_converter DESTINATION lib/${PROJECT_NAME})
endif()
endif()
Loading

0 comments on commit d1f282e

Please sign in to comment.