Skip to content

Commit d2c2971

Browse files
authored
Merge pull request #332 from wentywenty/main
Add the rplidar-ros package
2 parents 88e984e + 5b83ad6 commit d2c2971

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

patch/ros-humble-rplidar-ros.patch

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
diff --git a/CMakeLists.txt b/CMakeLists.txt
2+
index 48123e6..f0cecc7 100644
3+
--- a/CMakeLists.txt
4+
+++ b/CMakeLists.txt
5+
@@ -21,18 +21,25 @@ endif()
6+
set(RPLIDAR_SDK_PATH "./sdk/")
7+
8+
if(APPLE)
9+
-add_compile_definitions(_MACOS)
10+
-FILE(GLOB RPLIDAR_SDK_SRC
11+
- "${RPLIDAR_SDK_PATH}/src/arch/macOS/*.cpp"
12+
- "${RPLIDAR_SDK_PATH}/src/hal/*.cpp"
13+
- "${RPLIDAR_SDK_PATH}/src/*.cpp"
14+
-)
15+
+ add_compile_definitions(_MACOS)
16+
+ FILE(GLOB RPLIDAR_SDK_SRC
17+
+ "${RPLIDAR_SDK_PATH}/src/arch/macOS/*.cpp"
18+
+ "${RPLIDAR_SDK_PATH}/src/hal/*.cpp"
19+
+ "${RPLIDAR_SDK_PATH}/src/*.cpp"
20+
+ )
21+
+elseif(WIN32)
22+
+ add_compile_definitions(_USE_MATH_DEFINES)
23+
+ FILE(GLOB RPLIDAR_SDK_SRC
24+
+ "${RPLIDAR_SDK_PATH}/src/arch/win32/*.cpp"
25+
+ "${RPLIDAR_SDK_PATH}/src/hal/*.cpp"
26+
+ "${RPLIDAR_SDK_PATH}/src/*.cpp"
27+
+ )
28+
else()
29+
-FILE(GLOB RPLIDAR_SDK_SRC
30+
- "${RPLIDAR_SDK_PATH}/src/arch/linux/*.cpp"
31+
- "${RPLIDAR_SDK_PATH}/src/hal/*.cpp"
32+
- "${RPLIDAR_SDK_PATH}/src/*.cpp"
33+
-)
34+
+ FILE(GLOB RPLIDAR_SDK_SRC
35+
+ "${RPLIDAR_SDK_PATH}/src/arch/linux/*.cpp"
36+
+ "${RPLIDAR_SDK_PATH}/src/hal/*.cpp"
37+
+ "${RPLIDAR_SDK_PATH}/src/*.cpp"
38+
+ )
39+
endif()
40+
41+
################################################################################
42+
diff --git a/sdk/Makefile b/sdk/Makefile
43+
index 81215d9..69aec97 100644
44+
--- a/sdk/Makefile
45+
+++ b/sdk/Makefile
46+
@@ -60,6 +60,12 @@ CXXSRC += src/arch/macOS/net_serial.cpp \
47+
src/arch/macOS/timer.cpp
48+
endif
49+
50+
+ifeq ($(BUILD_TARGET_PLATFORM),Windows)
51+
+CXXSRC += src/arch/windows/net_serial.cpp \
52+
+ src/arch/windows/net_socket.cpp \
53+
+ src/arch/windows/timer.cpp
54+
+endif
55+
+
56+
all: build_sdk
57+
58+
include $(HOME_TREE)/mak_common.inc
59+
diff --git a/sdk/src/arch/macOS/net_socket.cpp b/sdk/src/arch/macOS/net_socket.cpp
60+
index f7ddfbf..153de6d 100644
61+
--- a/sdk/src/arch/macOS/net_socket.cpp
62+
+++ b/sdk/src/arch/macOS/net_socket.cpp
63+
@@ -754,6 +754,26 @@ public:
64+
65+
}
66+
67+
+ virtual u_result clearRxCache()
68+
+ {
69+
+ timeval tv;
70+
+ tv.tv_sec = 0;
71+
+ tv.tv_usec = 0;
72+
+ fd_set rdset;
73+
+ FD_ZERO(&rdset);
74+
+ FD_SET(_socket_fd, &rdset);
75+
+
76+
+ int res = -1;
77+
+ char recv_data[2];
78+
+ memset(recv_data, 0, sizeof(recv_data));
79+
+ while (true) {
80+
+ res = select(FD_SETSIZE, &rdset, nullptr, nullptr, &tv);
81+
+ if (res == 0) break;
82+
+ recv(_socket_fd, recv_data, 1, 0);
83+
+ }
84+
+ return RESULT_OK;
85+
+ }
86+
+
87+
virtual u_result recvFrom(void *buf, size_t len, size_t & recv_len, SocketAddress * sourceAddr)
88+
{
89+
struct sockaddr * addr = (sourceAddr?reinterpret_cast<struct sockaddr *>(const_cast<void *>(sourceAddr->getPlatformData())):NULL);

vinca.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ packages_select_by_deps:
313313
# Requested in https://github.com/RoboStack/ros-humble/issues/325
314314
- data_tamer_cpp
315315
- imu_tools
316+
- rplidar_ros
316317

317318
# These packages are only built on Linux as they depend on Linux-specific API
318319
- if: linux

0 commit comments

Comments
 (0)