{"id":13800346,"url":"https://github.com/SICKAG/sick_scan2","last_synced_at":"2025-05-13T09:31:35.638Z","repository":{"id":37822123,"uuid":"147173609","full_name":"SICKAG/sick_scan2","owner":"SICKAG","description":"sick_scan2 is an open-source project to support the laser scanner of the company SICK using the ROS2 framework","archived":true,"fork":false,"pushed_at":"2024-01-19T07:03:28.000Z","size":1419,"stargazers_count":57,"open_issues_count":5,"forks_count":41,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-18T11:22:36.755Z","etag":null,"topics":["driver","laserscanner","ldmrs","lms100","lms1104","lms111","lms511","lrs4000","mrs1104","ros-driver","rosdistro","sensor","tim551","tim561","tim571","tim781","tim781s","timsafe"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SICKAG.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-03T08:20:07.000Z","updated_at":"2025-02-13T21:33:01.000Z","dependencies_parsed_at":"2024-01-05T20:58:20.466Z","dependency_job_id":"ebe439e2-6dff-46c1-83c3-13fbc9c0fed4","html_url":"https://github.com/SICKAG/sick_scan2","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SICKAG%2Fsick_scan2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SICKAG%2Fsick_scan2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SICKAG%2Fsick_scan2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SICKAG%2Fsick_scan2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SICKAG","download_url":"https://codeload.github.com/SICKAG/sick_scan2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253913116,"owners_count":21983260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["driver","laserscanner","ldmrs","lms100","lms1104","lms111","lms511","lrs4000","mrs1104","ros-driver","rosdistro","sensor","tim551","tim561","tim571","tim781","tim781s","timsafe"],"created_at":"2024-08-04T00:01:11.664Z","updated_at":"2025-05-13T09:31:31.955Z","avatar_url":"https://github.com/SICKAG.png","language":"C++","funding_links":[],"categories":["Packages"],"sub_categories":["Driver layer"],"readme":"# **IMPORTANT: This repository will not be maintained further. The sources have been completely transferred to the repository https://github.com/SICKAG/sick_scan_xd. The repository will be deleted after 12/31/2022 in 2023 without further notice.**\n\n# sick_scan2\nThis stack provides a ROS2 driver for the SICK lidar sensors mentioned in the following list.\n\n## Remark\nDuring the last years we have developed different repositories within the driver development with the projects sick_scan, sick_scan2 and sick_scan_base, with which many lidars and radars of our company can be used under ROS1, ROS2 and generically under C++. For harmonization, due to customer requests and to increase clarity, we decided to combine these developments in the future. As a result of this work, at the end of 2021 we have created the repository [sick_scan_xd](https://github.com/SICKAG/sick_scan_xd), where we will continue future developments. We recommend using this new repository for development so that you can continue to benefit from our improvements and additions to our drivers.\n\n## Table of contents\n\n- [Supported Hardware](#supported-hardware)\n- [Requirements](#requirements)\n- [Start node](#start-node)\n- [Bugs and feature requests](#bugs-and-feature-requests)\n- [Timestamping](doc/timestamping.md)\n- [Creators](#creators)\n\nThis stack provides a ROS2 driver for the SICK laser scanners\nmentioned in the following list.\n\n\n## Supported Hardware\n\nThis driver should work with all of the following products.\n\nROS Device Driver for SICK lidar sensors - supported scanner types:\n\n\n| **device name**    |  **part no.**                                                                                                                | **description**                                | **tested?**     |\n|--------------------|------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------|:---------------:|\n| TiM240             | [1104981](https://www.sick.com/ag/en/detection-and-ranging-solutions/2d-lidar-sensors/tim2xx/tim240-2050300/p/p654443)  | 1 layer max. range: 10 m, ang. resol. 1.00 [deg], 240 [deg]| ✔ [prototype]|\n|                    |                                                                                                                                  | Scan-Rate: 14.5 Hz   |                 |\n| TiM551             | [1060445](https://www.sick.com/de/en/detection-and-ranging-solutions/2d-lidar-sensors/tim5xx/tim551-2050001/p/p343045)                 | 1 layer max. range: 10 m, ang. resol. 1.00[deg] | ✔ [stable]|\n|                    |                                                                                                                                  | Scan-Rate: 15 Hz   |                 |\n| TiM561             | [1071419](https://www.sick.com/de/en/detection-and-ranging-solutions/2d-lidar-sensors/tim5xx/tim561-2050101/p/p369446)                 | 1 layer max. range: 10 m, ang. resol. 0.33 [deg]| ✔ [stable]|\n|                    |                                                                                                                                  | Scan-Rate: 15 Hz   |                 |\n| TiM571             | [1079742](https://www.sick.com/de/en/detection-and-ranging-solutions/2d-lidar-sensors/tim5xx/tim571-2050101/p/p412444)                 | 1 layer max. range: 25 m, ang. resol. 0.33 [deg]| ✔ [stable]|\n|                    |                                                                                                                                  | Scan-Rate: 15 Hz   |                 |\n| TiM781             | [1096807](https://www.sick.com/de/de/mess-und-detektionsloesungen/2d-lidar-sensoren/tim7xx/tim781-2174101/p/p594148)                 | 1 layer max. range: 25 m, ang. resol. 0.33 [deg]| ✔ [stable]|\n|                    |                                                                                                                                  | Scan-Rate: 15 Hz   |                 |\n| TiM781S            | [1096363](https://www.sick.com/de/de/mess-und-detektionsloesungen/2d-lidar-sensoren/tim7xx/tim781s-2174104/p/p594149)                 | 1 layer max. range: 25 m, ang. resol. 0.33 [deg]| ✔ [stable]|\n|                    |                                                                                                                                  | Scan-Rate: 15 Hz   |                 |\n| LMS511-10100 PRO   | [e.g. 1046135](https://www.sick.com/de/en/detection-and-ranging-solutions/2d-lidar-sensors/lms5xx/c/g179651)     | 1 layer max. range: 80 m, ang. resol. 0.167 [deg]| ✔ [stable]|\n|                    |                                                                                                                                  | Scan-Rate: 100 Hz   |                 |\n| LMS1xx-Family      | [e.g. 1041114](https://www.sick.com/de/en/detection-and-ranging-solutions/2d-lidar-sensors/lms1xx/c/g91901) | 1 layer max. range: 28 m, ang. resol. 0.25 [deg]| ✔ [stable]|\n|                    |                                                                                                                                  | Scan-Rate: 15 Hz   |                 |\n| MRS1104            | [1081208](https://www.sick.com/sg/en/detection-and-ranging-solutions/3d-lidar-sensors/mrs1000/mrs1104c-111011/p/p495044)         | 4 layer max. range: 64 m, ang. resol. 0.25 [deg] hor., 2.50 [deg] ver.                                         | ✔ [development]|\n|                    |                                                                                                                                  | Scan-Rate: 50 Hz, 4x12.5 Hz            |                 |\n| LMS1104            | [1092445](https://www.sick.com/ag/en/detection-and-ranging-solutions/2d-lidar-sensors/lms1000/c/g387151)                         | 1 layer max. range: 64 m, ang. resol. 0.25 [deg] |  ✔ [stable]|\n|                    |                                                                                                                                  | Scan-Rate: 150 Hz, 4x37.5 Hz   | \n| LDMRS |   | 4 or 8 layer, max. range: 50/320 m, ang. resol. 0.025°/.../0.25 [deg] | ✔ [development]|\n|       |   | Scan-Rate: 12.5-50 Hz | |\n| LRS4000 |   | 1 layer, max. range: 130 m, ang. resol. 0.125/0.25/0.5 [deg]  | ✔ [development]|\n|       |   | Scan-Rate: 12.5-25 Hz | |\n\n\n## Requirements\n\nsick_scan2 has been developed and tested using Linux ROS-2 Foxy. It should be compatible with other ROS-2 versions (but not fully tested).\n\n##  Start Node\n\nSee quick start for further hints.\n\n## Sopas Mode\nThis driver supports both COLA-B (binary) and COLA-A (ASCII) communication with the laser scanner. Binary mode is activated by default. Since this mode generates less network traffic.\nIf the communication mode set in the scanner memory is different from that used by the driver, the scanner's communication mode is changed. This requires a restart of the TCP-IP connection, which can extend the start time by up to 30 seconds.\nThere are two ways to prevent this:\n1. [Recommended] Set the communication mode with the SOPAS ET software to binary and save this setting in the scanner's EEPROM.\n2. Use the parameter \"use_binary_protocol\" to overwrite the default settings of the driver.\n3. Setting \"use_binary_protocol\" to \"False\" activates COLA-A and disables COLA-B (default)\n### Known issue\nIf the scanner has not been set to binary Sopas in the EEPROM, the automatic restart of the TCP-IP connection does not work after the protocol change. The driver stops in this state:\n![Wrong SOPAS Mode](doc/sopas_mode_start_up.png)\n#### Workaround\nrestart the driver node.\n\n## Bugs and feature requests\n\n- Stability issues: Driver is experimental and brand new\n- Sopas protocol mapping:\n-- All scanners: COLA-B (Binary)\n- Software should be further tested, documented and beautified\n\n## Troubleshooting\n\n1. Check Scanner IP by using fping or SOPAS ET under Windows\n2. Check Ethernet connection to scanner with netcat e.g. ```nc -z -v -w5 $SCANNERIPADDRESS 2112```.\n   For further details about setting up the correct ip settings see [IP configuration](doc/ipconfig/ipconfig.md)\n3. View node startup output wether the IP connection could be established\n4. Check the scanner status using the LEDs on the device. The LED codes are described in the above mentioned operation manuals.\n5. Further testing and troubleshooting informations can found in the file test/readme_testplan.txt\n6. If you stop the scanner in your debugging IDE or by other hard interruption (like Ctrl-C), you must wait until 60 sec. before\n   the scanner is up and running again. During this time the MRS6124 reconnects twice.\n   If you do not wait this waiting time you could see one of the following messages:\n   * TCP connection error\n   * Error-Message 0x0d\n7. Amplitude values in rviz: If you see only one color in rviz try the following:\n   Set the min/max-Range of intensity display in the range [0...200] and switch on the intensity flag in the lauch file  \n8. In case of network problems check your own ip address and the ip address of your laser scanner (by using SOPAS ET).\n   * List of own IP-addresses: ifconfig|grep \"inet addr\"\n   * Try to ping scanner ip address (used in launch file)\n9. If the driver stops during init phase please stop the driver with ctrl-c and restart (could be caused due to protocol ASCII/Binary cola-dialect).\n\n## Support\n\n* In case of technical support please open a new issue. For optimal support, add the following information to your request:\n 1. Scanner model name,\n 2. Ros node startup log,\n 3. Sopas file of your scanner configuration.\n  The instructions at http://sickusablog.com/create-and-download-a-sopas-file/ show how to create the Sopas file.\n* In case of application support please use [https://supportportal.sick.com ](https://supportportal.sick.com).\n* Issue Handling: Issues, for which no reply was received from the questioner for more than 7 days,\t\t\t\t\t\t\n  are closed by us because we assume that the user has solved the problem.\n\n\n## Installation\n\nIn the following instructions, replace `\u003crosdistro\u003e` with the name of your ROS distro (e.g., `dashing`).\n\n### From source\n\n```bash\nsource /opt/ros/$ROS_DISTRO/setup.bash\nmkdir -p ~/sick_scan_ws/src/\ncd ~/sick_scan_ws/src/\ngit clone https://github.com/SICKAG/sick_scan2.git\ncd ..\ncolcon build\nsource ~/sick_scan_ws/install/setup.bash\n```\n\nTo build the sick_scan2 ros driver with LDMRS support, libsick_ldmrs is required and flag BUILD_WITH_LDMRS_SUPPORT must be set:\n\n```bash\nsource /opt/ros/$ROS_DISTRO/setup.bash\nmkdir -p ~/sick_scan_ws/src/\ncd ~/sick_scan_ws/src/\nsudo apt-get install ros-$ROS_DISTRO-diagnostic-updater\ngit clone https://github.com/SICKAG/libsick_ldmrs.git\ngit clone https://github.com/SICKAG/sick_scan2.git\ncd ..\nexport BUILD_WITH_LDMRS_SUPPORT=True\ncolcon build --cmake-args \" -DBUILD_WITH_LDMRS_SUPPORT=$BUILD_WITH_LDMRS_SUPPORT\"\nsource ~/sick_scan_ws/install/setup.bash\n```\n\nThe LDMRS driver is originally taken from sick_lmrs_laser, migrated to ROS2 and integrated into sick_scan2. \nPlease see https://github.com/SICKAG/sick_ldmrs_laser and https://github.com/SICKAG/libsick_ldmrs for further details.\n\n## Quick Start\n\n```bash\ncd ~/sick_scan_ws\nsource ./install/setup.bash\n```\nAttention: Replace the ip address for \"__hostname\" with your scanner ip address.\nDefault ip address of scanner is 192.168.0.1.\nIn this example we use the ip address 192.168.0.71\n\nVia the program argument __frame_id the frame of the laserscan messages can be changed. Default is \"cloud\".\n\nFor TiM240:\n```\nros2 launch sick_scan2 sick_tim_240.launch.py\n```\nFor TiM5xx:\n```\nros2 launch sick_scan2 sick_tim_5xx.launch.py\n```\nFor LMS511:\n```\nros2 launch sick_scan2 sick_lms_5xx.launch.py\n```\n\nFor TiM781:\n```\nros2 launch sick_scan2 sick_tim_7xx.launch.py\n```\nFor TiM781S:\n```\nros2 launch sick_scan2 sick_tim_7xxS.launch.py\n```\n\nFor LMS111:\n```\nros2 launch sick_scan2 sick_lms_5xx.launch.py\n```\n\nFor MRS1104:\n```\nros2 launch sick_scan2 sick_mrs_1xxx.launch.py\n```\n\nFor LMS1104:\n```\nros2 launch sick_scan2 sick_lms_1xxx.launch.py\n```\n\nFor LDMRS:\n```\nros2 launch sick_scan2 sick_ldmrs.launch.py\n```\n\nFor LRS4000:\n```\nros2 launch sick_scan2 sick_lrs4000.launch.py\n```\n\nStart a second terminal window\n```\ncd ~/sick_scan_ws\nsource ./install/setup.bash\nros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 world cloud\n```\nStart a third terminal window\n```\ncd ~/sick_scan_ws\nsource ./install/setup.bash\nrviz2 ./install/sick_scan2/share/sick_scan2/launch/rviz/tim_5xx.rviz\n```\n\nThe result shoud look like this:\n![rviz2_scan](doc/rviz2_scan.png)\n\n## Unit tests\n\nFor a quick unit test after installation without the sensor hardware, a test server is provided to simulate a scanner. \nThe test server generates scan data examples and responds to command requests. \nPlease note, that this test server does not emulate a Lidar sensor. It just sends some simple scan data and response messages to a tcp client.\nIt can be used for a quick unit test after build and install.\n\nFor a unit test, run the following commands in different terminals:\n\nFor LDMRS unit test:\n\n```\ncd ~/sick_scan_ws\nsource ./install/setup.bash\nros2 run sick_scan2 test_server --ros-args --params-file src/sick_scan2/tools/test_server/config/test_server_ldmrs.yaml\nros2 run sick_scan2 sick_generic_caller --ros-args --params-file src/sick_scan2/config/sick_ldmrs_flexres.yaml -p \"hostname:=127.0.0.1\"\nros2 run rviz2 rviz2 -d ./src/sick_scan2/launch/rviz/sick_ldmrs.rviz\n```\n\nFor other scanners supported by sick_scan2, replace $yaml_file by sick_tim_240.yaml, sick_tim_5xx.yaml, sick_tim_7xx.yaml, sick_tim_7xxS.yaml, \nsick_lms_1xx.yaml, sick_lms_5xx.yaml or sick_mrs_1xxx.yaml, and run the following commands:\n\n```\ncd ~/sick_scan_ws\nsource ./install/setup.bash\nros2 run sick_scan2 test_server --ros-args --params-file src/sick_scan2/tools/test_server/config/test_server_cola.yaml\nros2 run sick_scan2 sick_generic_caller --ros-args --params-file src/sick_scan2/config/$yaml_file -p \"hostname:=127.0.0.1\" -p \"port:=2112\" -p \"sw_pll_only_publish:=false\"\nros2 run rviz2 rviz2 -d ./src/sick_scan2/launch/rviz/sick_cola.rviz\n```\n\nFor a quick build, install and run test, some bash scripts are provided in folder `src/sick_scan2/tools/scripts`. Run the following commands:\n\n```\ncd ~/sick_scan_ws/src/sick_scan2/tools/scripts\n./makeall.bash\n./run_simu.bash\n```\n\n## Developing with CLion IDE\n\n* Change to workspace directory, e.g.:\n```\ncd ~/sick_scan_ws\nsource ./install/setup.bash\n```\n\n* Start clion-Shell-Script with directory containing 'CMakeLists.txt', e.g.\n  (see https://groups.google.com/forum/#!topic/ros-sig-ng-ros/UMjVH047nVc, Answer from G. Viola)\n```\n~/.local/share/JetBrains/Toolbox/apps/CLion/ch-0/201.8743.17/bin/clion.sh ./src/sick_scan2\n```\n  Comment: Please modify the path to your local installation.\n\n* If the build step generates a message like `Could NOT find FastRTPS (missing: FastRTPS_INCLUDE_DIR FastRTPS_LIBRARIES)`,\nexport addition path infos by the following command:\n```\nexport CMAKE_PREFIX_PATH=$AMENT_PREFIX_PATH:$CMAKE_PREFIX_PATH\n```\n(see https://answers.ros.org/question/334581/could-not-find-fastrtps-missing-fastrtps_include_dir-fastrtps_libraries/).\nOr try to set the path manualy\n```\nset(FastRTPS_INCLUDE_DIR /opt/ros/foxy/include)\nset(FastRTPS_LIBRARY_RELEASE /opt/ros/foxy/lib/libfastrtps.so)\n```\n\n## Developing with Visual Studio Code\n\nDownload the debian package code_1.47.3-1595520028_amd64.deb (or any later version) from https://code.visualstudio.com and install Visual Studio Code by\n\n```sudo apt install ./code_1.47.3-1595520028_amd64.deb```\n\nOpen Visual Studio Code by running `code` in the console, select `Customize`, `Tools and languages` and install Python, C/C++, ROS, Colcon Tasks and Markdown (and any other usefull extensions you might need).\n\nOpen folder `sick_scan_ws` via `File` menu and save a new workspace with `Save Workspace As...`. Open file `c_cpp_properties.json` in the Visual Studio Code Editor and insert compiler settings:\n```\n\"includePath\": [ \"~/sick_scan_ws/src/sick_scan2/include/**\", \"~/sick_scan_ws/src/sick_scan2/tools/test_server/include/**\", \"~/sick_scan_ws/src/sick_ldmrs_laser/sick_ldmrs_driver/include/**\", \"~/sick_scan_ws/src/sick_ldmrs_laser/sick_ldmrs_msgs/include/**\", \"~/sick_scan_ws/build/**\", \"~/sick_scan_ws/install/**\", \"/opt/ros/eloquent/include\", \"/usr/include/**\" ],\n\"defines\": [ \"LDMRS_SUPPORT=1\" ],\n```\n\n## Keywords\n\nROS LiDAR\nSICK LiDAR\nSICK Laser\nSICK Laserscanner\nTiM5xx\nTiM551\nTiM561\nTiM571\nTiM781\nTiM781S\nLMS111\nLMS511\nMRS1104\nLMS1104\nMRS1xxx\nLMS1xxx\nLDMRS\nLRS4000\n\n## Creators\n\n**Michael Lehning**\n\n- \u003chttp://www.lehning.de\u003e\n\non behalf of SICK AG\n\n- \u003chttp://www.sick.com\u003e\n\n------------------------------------------------------------------------\n\n\u003cimg src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/f/f1/Logo_SICK_AG_2009.svg/1200px-Logo_SICK_AG_2009.svg.png\" width=\"420\"\u003e\n\n![Lehning Logo](http://www.lehning.de/style/banner.jpg \"LEHNING Logo\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSICKAG%2Fsick_scan2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSICKAG%2Fsick_scan2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSICKAG%2Fsick_scan2/lists"}