refactor: rename driver_sick_code plugin to driver_sick_tim
The driver targets the SICK TiM 5xx/7xx family over CoLa-A; "code" described neither the devices nor the protocol. driver_id stays sick_tim_driver. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -29,7 +29,7 @@ xlidar_driver/
|
||||
│ ├── common/plugin_helpers.hpp
|
||||
│ ├── driver_rplidar/ # → driver_rplidar.so (rplidar_c1_driver)
|
||||
│ ├── driver_olei/ # → driver_olei.so (olei_lidar_driver)
|
||||
│ ├── driver_sick_code/ # → driver_sick_code.so (sick_tim_driver)
|
||||
│ ├── driver_sick_tim/ # → driver_sick_tim.so (sick_tim_driver)
|
||||
│ ├── driver_sick_safety/ # → driver_sick_safety.so (sick_nanoscan3_driver)
|
||||
│ └── driver_espe/ # → driver_espe.so (espe_lga60_driver)
|
||||
├── examples/ # list_drivers, example, lidar_app
|
||||
@@ -211,7 +211,7 @@ khi load: `brand`+`model` → `driver_id`, cặp `angle_*_deg` cũ → remap.
|
||||
|---|---|---|---|---|---|
|
||||
| `rplidar_c1_driver` | `driver_rplidar.so` | Slamtec RPLIDAR | serial | `AUTO`, `C1` | Build trên SDK vendor; default C1 @ 460800; A/S series dùng được với baud tương ứng. Health check lúc `open()`, model/firmware tự nhận |
|
||||
| `olei_lidar_driver` | `driver_olei.so` | OLEI 2D | udp | `AUTO`, `VB`, `VF`, `LR-1F`, `LR-1FMI`, `LR-1BS5`, `LR-16F`, `GS1-5` | Tự nhận diện giao thức Family A/B/C theo frame ID từng gói; `AUTO` tự dò model (Family B/C). Port mặc định 2368 |
|
||||
| `sick_tim_driver` | `driver_sick_code.so` | SICK TiM 5xx/7xx | tcp | `SICK-TIM5xx`, `SICK-TIM571`, `SICK-TIM7xx` | SOPAS/CoLa-A; `open()` tự start stream. Port 2111. Verify trên TiM781S thật |
|
||||
| `sick_tim_driver` | `driver_sick_tim.so` | SICK TiM 5xx/7xx | tcp | `SICK-TIM5xx`, `SICK-TIM571`, `SICK-TIM7xx` | SOPAS/CoLa-A; `open()` tự start stream. Port 2111. Verify trên TiM781S thật |
|
||||
| `sick_nanoscan3_driver` | `driver_sick_safety.so` | SICK nanoScan3/microScan3 | udp | `SICK-nanoScan3` | Receiver thụ động UDP safety-data; đích UDP cấu hình sẵn bằng Safety Designer. Port 6060. Chưa verify phần cứng |
|
||||
| `espe_lga60_driver` | `driver_espe.so` | ESPE LGA60 | tcp (+udp) | `ESPE-LGA60` | FOV 320°; `open()` gửi `RAuto`; tham số thiết bị theo tool Windows của hãng. Port 8080. Chưa verify phần cứng |
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ function(xlidar_add_plugin name)
|
||||
endfunction()
|
||||
|
||||
add_subdirectory(driver_olei)
|
||||
add_subdirectory(driver_sick_code)
|
||||
add_subdirectory(driver_sick_tim)
|
||||
add_subdirectory(driver_sick_safety)
|
||||
add_subdirectory(driver_espe)
|
||||
add_subdirectory(driver_rplidar)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
xlidar_add_plugin(driver_sick_code sick_code_driver.cpp)
|
||||
1
plugins/driver_sick_tim/CMakeLists.txt
Normal file
1
plugins/driver_sick_tim/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
xlidar_add_plugin(driver_sick_tim sick_tim_driver.cpp)
|
||||
@@ -1,6 +1,6 @@
|
||||
// SICK TiM 5xx/7xx — SOPAS/CoLa-A ASCII telegrams over TCP ("sSN/sRA
|
||||
// LMDscandata" parsing).
|
||||
#include "sick_code_driver.hpp"
|
||||
#include "sick_tim_driver.hpp"
|
||||
#include "plugin_helpers.hpp"
|
||||
|
||||
#include <cctype>
|
||||
@@ -42,14 +42,14 @@ std::vector<std::string> tokenize(const std::string& s) {
|
||||
}
|
||||
} // namespace
|
||||
|
||||
SickCodeDriver::SickCodeDriver(const ModelConfig& cfg, const std::string& ip, uint16_t port,
|
||||
SickTimDriver::SickTimDriver(const ModelConfig& cfg, const std::string& ip, uint16_t port,
|
||||
bool inverted)
|
||||
: cfg_(cfg), detected_model_name_(cfg.name ? cfg.name : ""), ip_(ip), port_(port),
|
||||
inverted_(inverted) {}
|
||||
|
||||
SickCodeDriver::~SickCodeDriver() { close(); }
|
||||
SickTimDriver::~SickTimDriver() { close(); }
|
||||
|
||||
ErrorCode SickCodeDriver::open() {
|
||||
ErrorCode SickTimDriver::open() {
|
||||
if (is_open()) return set_error(ErrorCode::AlreadyOpen);
|
||||
|
||||
sockaddr_in addr{};
|
||||
@@ -79,7 +79,7 @@ ErrorCode SickCodeDriver::open() {
|
||||
return set_error(ErrorCode::Ok);
|
||||
}
|
||||
|
||||
void SickCodeDriver::close() {
|
||||
void SickTimDriver::close() {
|
||||
if (sock_fd_ >= 0) {
|
||||
send_telegram("sEN LMDscandata 0"); // best-effort
|
||||
::close(sock_fd_);
|
||||
@@ -87,7 +87,7 @@ void SickCodeDriver::close() {
|
||||
}
|
||||
}
|
||||
|
||||
bool SickCodeDriver::send_telegram(const std::string& body) {
|
||||
bool SickTimDriver::send_telegram(const std::string& body) {
|
||||
if (sock_fd_ < 0) return false;
|
||||
std::string framed;
|
||||
framed.reserve(body.size() + 2);
|
||||
@@ -106,7 +106,7 @@ bool SickCodeDriver::send_telegram(const std::string& body) {
|
||||
|
||||
// CoLa-A has no length prefix, so ETX is the only frame boundary; recv_buf_
|
||||
// carries leftover bytes across calls.
|
||||
bool SickCodeDriver::read_telegram(std::string& out, int timeout_ms) {
|
||||
bool SickTimDriver::read_telegram(std::string& out, int timeout_ms) {
|
||||
if (!is_open()) { set_error(ErrorCode::NotOpen); return false; }
|
||||
|
||||
for (;;) {
|
||||
@@ -139,7 +139,7 @@ bool SickCodeDriver::read_telegram(std::string& out, int timeout_ms) {
|
||||
}
|
||||
}
|
||||
|
||||
bool SickCodeDriver::recv_scan(ScanResult& out, int timeout_ms) {
|
||||
bool SickTimDriver::recv_scan(ScanResult& out, int timeout_ms) {
|
||||
for (;;) {
|
||||
std::string telegram;
|
||||
if (!read_telegram(telegram, timeout_ms)) return false;
|
||||
@@ -148,7 +148,7 @@ bool SickCodeDriver::recv_scan(ScanResult& out, int timeout_ms) {
|
||||
}
|
||||
}
|
||||
|
||||
bool SickCodeDriver::spin_once() {
|
||||
bool SickTimDriver::spin_once() {
|
||||
std::string telegram;
|
||||
if (!read_telegram(telegram, 0)) return false;
|
||||
|
||||
@@ -160,7 +160,7 @@ bool SickCodeDriver::spin_once() {
|
||||
|
||||
// CoLa-A "sSN/sRA LMDscandata": space-separated ASCII hex tokens, field order
|
||||
// per SICK's Telegram Listing. "DIST1" → ranges, "RSSI1" → intensities.
|
||||
bool SickCodeDriver::parse_lmdscandata(const std::string& telegram, ScanResult& out) {
|
||||
bool SickTimDriver::parse_lmdscandata(const std::string& telegram, ScanResult& out) {
|
||||
std::vector<std::string> tok = tokenize(telegram);
|
||||
if (tok.size() < 20) return false;
|
||||
if (tok[0] != "sSN" && tok[0] != "sRA") return false;
|
||||
@@ -301,7 +301,7 @@ const ModelConfig* model_by_name(const std::string& name) {
|
||||
|
||||
} // namespace
|
||||
|
||||
DriverInfo SickCodeDriver::get_driver_info() const { return kDriverInfo; }
|
||||
DriverInfo SickTimDriver::get_driver_info() const { return kDriverInfo; }
|
||||
|
||||
} // namespace xlidar
|
||||
|
||||
@@ -315,5 +315,5 @@ create_driver_instance(const xlidar::DeviceConfig* cfg) {
|
||||
const ModelConfig* preset = model_by_name(cfg->model);
|
||||
if (!preset) preset = &MODEL_SICK_TIM571; // brand default
|
||||
const uint16_t port = cfg->port ? cfg->port : 2111;
|
||||
return new SickCodeDriver(apply_device_config(*preset, *cfg), cfg->ip, port, cfg->inverted);
|
||||
return new SickTimDriver(apply_device_config(*preset, *cfg), cfg->ip, port, cfg->inverted);
|
||||
}
|
||||
@@ -17,17 +17,17 @@ inline constexpr ModelConfig MODEL_SICK_TIM7XX { "SICK-TIM7xx", -135.f, 135.f, 0
|
||||
// SICK TiM5xx/7xx over SOPAS/CoLa-A (TCP, default port 2111).
|
||||
// Verified against a real TiM781S (FW V5.11). NOT verified: NumEncoders > 0,
|
||||
// the 8-bit channel branch, and the TIM5xx/TIM571 FOV/range numbers.
|
||||
class SickCodeDriver : public LidarDriverInterface {
|
||||
class SickTimDriver : public LidarDriverInterface {
|
||||
public:
|
||||
// inverted: unit mounted upside-down → mirror the scan.
|
||||
explicit SickCodeDriver(const ModelConfig& cfg,
|
||||
explicit SickTimDriver(const ModelConfig& cfg,
|
||||
const std::string& ip,
|
||||
uint16_t port = 2111,
|
||||
bool inverted = false);
|
||||
~SickCodeDriver();
|
||||
~SickTimDriver();
|
||||
|
||||
SickCodeDriver(const SickCodeDriver&) = delete;
|
||||
SickCodeDriver& operator=(const SickCodeDriver&) = delete;
|
||||
SickTimDriver(const SickTimDriver&) = delete;
|
||||
SickTimDriver& operator=(const SickTimDriver&) = delete;
|
||||
|
||||
DriverInfo get_driver_info() const override;
|
||||
|
||||
Reference in New Issue
Block a user