minimum_sick_scan_api_client.py
Go to the documentation of this file.
1 """Minimalistic usage example for sick_scan_api
2 
3 Usage: minimum_sick_scan_api_client.py launchfile
4 
5 Example:
6  export LD_LIBRARY_PATH=.:./build:$LD_LIBRARY_PATH
7  export PYTHONPATH=.:./python/api:$PYTHONPATH
8  python3 ./examples/python/minimum_sick_scan_api_client.py ./launch/sick_tim_7xx.launch
9 
10 See doc/sick_scan_api/sick_scan_api.md for further information.
11 
12 """
13 
14 import os
15 import sys
16 import time
17 
18 # Make sure sick_scan_api is searched in all folders configured in environment variable PYTHONPATH
20  pythonpath = os.environ['PYTHONPATH']
21  for folder in pythonpath.split(";"):
22  sys.path.append(os.path.abspath(folder))
23 try:
24  # import sick_scan_api
25  from sick_scan_api import *
26 except ModuleNotFoundError:
27  print("import sick_scan_api failed, module sick_scan_api not found, trying with importlib...")
29  import importlib
30  sick_scan_api = importlib.import_module("sick_scan_api")
31 
32 def pyCustomizedPointCloudMsgCb(api_handle, msg):
33  """
34  Implement a callback to process pointcloud messages
35  Data processing to be done
36  """
37  print("Python PointCloudMsgCb: {} x {} pointcloud message received".format(msg.contents.width, msg.contents.height))
38 
39 # Pass launchfile and commandline arguments to sick_scan_library
40 cli_args = " ".join(sys.argv[1:])
41 
42 # Load sick_scan_library
43 if os.name == "nt": # Load windows dll
44  sick_scan_library = SickScanApiLoadLibrary(["build/Debug/", "build_win64/Debug/", "../../build/Debug/", "../../build_win64/Debug/", "./", "../"], "sick_scan_xd_shared_lib.dll")
45 else: # Load linux so
46  sick_scan_library = SickScanApiLoadLibrary(["build/", "build_linux/", "../../build/", "../../build_linux/", "./", "../"], "libsick_scan_xd_shared_lib.so")
47 
48 # Create a sick_scan instance and initialize a TiM-7xx
49 api_handle = SickScanApiCreate(sick_scan_library)
50 SickScanApiInitByLaunchfile(sick_scan_library, api_handle, cli_args)
51 
52 # Register for pointcloud messages
53 cartesian_pointcloud_callback = SickScanPointCloudMsgCallback(pyCustomizedPointCloudMsgCb)
54 SickScanApiRegisterCartesianPointCloudMsg(sick_scan_library, api_handle, cartesian_pointcloud_callback)
55 
56 # Run application or main loop
57 time.sleep(10)
58 
59 # Close lidar and release sick_scan api
60 SickScanApiDeregisterCartesianPointCloudMsg(sick_scan_library, api_handle, cartesian_pointcloud_callback)
61 SickScanApiClose(sick_scan_library, api_handle)
62 SickScanApiRelease(sick_scan_library, api_handle)
63 SickScanApiUnloadLibrary(sick_scan_library)
SickScanApiDeregisterCartesianPointCloudMsg
int32_t SickScanApiDeregisterCartesianPointCloudMsg(SickScanApiHandle apiHandle, SickScanPointCloudMsgCallback callback)
Definition: api_impl.cpp:892
SickScanPointCloudMsgCallback
void(SICK_SCAN_XD_API_CALLING_CONVENTION * SickScanPointCloudMsgCallback)(SickScanApiHandle apiHandle, const SickScanPointCloudMsg *msg)
Definition: sick_scan_api.h:457
SickScanApiUnloadLibrary
int32_t SICK_SCAN_XD_API_CALLING_CONVENTION SickScanApiUnloadLibrary()
Definition: sick_scan_xd_api_wrapper.c:234
minimum_sick_scan_api_client.appendPythonPath
def appendPythonPath()
Definition: minimum_sick_scan_api_client.py:19
roswrap::console::print
ROSCONSOLE_DECL void print(FilterBase *filter, void *logger, Level level, const char *file, int line, const char *function, const char *fmt,...) ROSCONSOLE_PRINTF_ATTRIBUTE(7
Don't call this directly. Use the ROS_LOG() macro instead.
SickScanApiLoadLibrary
int32_t SICK_SCAN_XD_API_CALLING_CONVENTION SickScanApiLoadLibrary(const char *library_filepath)
Definition: sick_scan_xd_api_wrapper.c:218
SickScanApiRelease
int32_t SickScanApiRelease(SickScanApiHandle apiHandle)
Definition: api_impl.cpp:674
SickScanApiClose
int32_t SickScanApiClose(SickScanApiHandle apiHandle)
Definition: api_impl.cpp:830
SickScanApiCreate
SickScanApiHandle SickScanApiCreate(int argc, char **argv)
Definition: api_impl.cpp:637
minimum_sick_scan_api_client.pyCustomizedPointCloudMsgCb
def pyCustomizedPointCloudMsgCb(api_handle, msg)
Definition: minimum_sick_scan_api_client.py:32
SickScanApiRegisterCartesianPointCloudMsg
int32_t SickScanApiRegisterCartesianPointCloudMsg(SickScanApiHandle apiHandle, SickScanPointCloudMsgCallback callback)
Definition: api_impl.cpp:868
SickScanApiInitByLaunchfile
int32_t SickScanApiInitByLaunchfile(SickScanApiHandle apiHandle, const char *launchfile_args)
Definition: api_impl.cpp:710


sick_scan_xd
Author(s): Michael Lehning , Jochen Sprickerhof , Martin Günther
autogenerated on Fri Oct 25 2024 02:47:09