| RMVL 2.3.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
光源控制器

作者
  赵曦

日期
  2023/10/05

上一篇教程：相机设备
下一篇教程：函数插值方法

相关类

- 奥普特 GigE 光源控制器 rm::OPTLightController
- 海康机器人 RS-232 光源控制器 rm::HikLightController

## 1. 如何使用

海康机器人光源控制器使用 RS-232 串口进行数据传输，RMVL 在 Windows 和 Linux 平台上分别做了设计，可以很方便的开发，并且随附了 `rmvl_hik_lightctl` 命令行可执行程序。

奥普特 GigE 光源控制器在使用前需安装驱动，详情参考：构建并安装 RMVL

## 2. 调试与开发

### HikRobot 光源控制器可执行程序

`rmvl_hik_lightctl` 是一个命令行程序，用于控制海康机器人 RS-232 光源控制器，使用以下命令可以使用串口与光源控制器进行通信，其中 Windows 平台下的串口号为 `COM<?>`，Linux 平台下的串口号为 `/dev/ttyUSB<?>`，`<?>` 为具体的串口号，例如 `COM1` 或 `/dev/ttyUSB0`。

例如 Windows 平台可以使用以下命令：

rmvl_hik_lightctl COM1

而 Linux 平台可以使用以下命令：

rmvl_hik_lightctl /dev/ttyUSB0

在建立连接之后，可以输入 `help`、`h`、`usage` 或 `?` 来查看帮助信息，可以输入 `exit`、`quit` 或 `q` 来退出程序，具体的帮助信息如下：

Common functions usage:
h, help, ?, usage # show this help message
exit, quit, q # exit the program
Parameters control usage:
ctl get delay # get the delay time after writing
ctl set delay <val> # set the delay time after writing
Commands usage:
open # open all the channels
close # close all the channels
get <chn> # get the brightness of the specified channel
set <chn> <val> # set the brightness of the specified channel

### OPT 光源控制器示例代码

不同的光源控制器有不同的使用方法，由于奥普特 GigE 光源控制器使用较复杂，这里以奥普特 GigE 光源控制器为例。

C++
#include <rmvl/light/opt_light_control.h>
int main() {
// 创建光源控制器对象
auto light_controller = rm::OPTLightController();
// 连接光源控制器
auto lipc = rm::OPTLightIpConfig{"192.168.1.100", "192.168.1.1", "255.255.255.0"};
light_controller.connect(lipc);
// 打开指定的通道
light_controller.openChannels({1});
// 设置光源强度
light_controller.setIntensity(1, 100);
// 触发光源 50×10ms = 500ms
light_controller.trigger(1, 50);
}
rm::OPTLightController
OPT 奥普特光源控制器
定义 opt_light_control.h:27
opt_light_control.h
OPT 奥普特 GigE 光源控制库
Python
import rm
# 创建光源控制器对象
light_controller = rm.OPTLightController()
# 连接光源控制器
cfg = rm.OPTLightIpConfig()
cfg.ip = "192.168.1.100"
cfg.gateway = "192.168.1.1"
cfg.netmask = "255.255.255.0"
light_controller.connect(cfg)
# 打开指定的通道
light_controller.openChannels([1])
# 设置光源强度
light_controller.setIntensity(1, 100)
# 触发光源 50×10ms = 500ms
light_controller.trigger(1, 50)