# ir_camera (ROS2 Humble)

基于厂家 `libir_sample_uvc_single` 示例改造的 ROS2 节点，适配 Ubuntu 22.04 + aarch64（RDK S100P），发布：

- 红外图像：`/ir/image_raw`（`sensor_msgs/msg/Image`, `bgr8`）
- 整帧温度：`/ir/temperature_celsius`（`sensor_msgs/msg/Image`, `32FC1`，单位摄氏度）

---

## 1. 目录说明

- `include/`：厂家 SDK 头文件（已从 DEMO 复制）
- `libs/`：厂家 SDK 库（`libiruvc.so`、`libirparse.so`、`libirtemp.so`、`libirprocess.so`、`libusb-1.0.so`）
- `src/ir_camera_node.cpp`：ROS2 节点实现

---

## 2. 编译环境

- 系统：Ubuntu 22.04 (aarch64)
- ROS2：Humble
- 工具：`colcon`、`ament_cmake`

建议先确认：

```bash
source /opt/ros/humble/setup.bash
ros2 --version
colcon --version
```

---

## 3. 编译方法

假设工作空间根目录为 `~/ws`，包路径为 `~/ws/src/ir_camera`：

```bash
cd ~/ws
source /opt/ros/humble/setup.bash
colcon build --packages-select ir_camera --cmake-args -DCMAKE_BUILD_TYPE=Release
```

编译完成后：

```bash
source ~/ws/install/setup.bash
```

---

## 4. 启动节点

```bash
source /opt/ros/humble/setup.bash
source ~/ws/install/setup.bash
ros2 run ir_camera ir_camera_node
```

可选参数（默认值）：

- `pid`：`0x5840`
- `vid`：`0x0BDA`
- `resolution_index`：`1`
- `frame_id`：`ir_camera`

示例：

```bash
ros2 run ir_camera ir_camera_node --ros-args -p resolution_index:=1 -p frame_id:=thermal_link
```

---

## 5. 话题检查

查看话题：

```bash
ros2 topic list
```

查看图像信息：

```bash
ros2 topic echo /ir/image_raw --once
```

查看温度帧信息：

```bash
ros2 topic echo /ir/temperature_celsius --once
```

如需可视化图像（若已安装 image_tools / rqt）：

```bash
ros2 run rqt_image_view rqt_image_view
```

---

## 6. 温度数据定义

`/ir/temperature_celsius` 采用 `32FC1`：

- 每个像素是 `float32`
- 单位：摄氏度 (°C)
- 公式来自 DEMO 温度换算：

\[
T_{\circ C} = \frac{raw}{64.0} - 273.15
\]

---

## 7. 常见问题

1) 找不到设备（vid/pid）
- 检查 USB 连接与权限；
- 使用 `lsusb` 确认设备；
- 必要时改 `pid/vid` 参数。

2) 动态库加载失败
- 本包会安装 `.so` 到 `install/lib/ir_camera` 并设置 `RPATH=$ORIGIN`；
- 如仍失败，可手动：

```bash
export LD_LIBRARY_PATH=~/ws/install/ir_camera/lib/ir_camera:$LD_LIBRARY_PATH
```

3) 图像分辨率不符合预期
- 尝试调整 `resolution_index`（0/1/...），与设备支持流配置相关。

