feat: 填充文档内容

main
杨明 2024-08-16 18:03:07 +08:00
parent eb62447c87
commit a52da28ee4
15 changed files with 490 additions and 0 deletions

BIN
node/imgs/control-panel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
node/imgs/rviz-panel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

View File

@ -0,0 +1,107 @@
## Autolabor 云台相机图像驱动程序
### 简介
cv_camera节点采用OpenCV捕获视频设备发布图像和相机信息话题。
驱动包中提供了Autolabor云台相机的标定参数和原始图像。
用户可直接启动launch查看矫正前后的数据。
如果你在寻找 ROS2 驱动程序,请查看 [这里](https://github.com/Kapernikov/cv_camera)。
### 使用方法
#### 1、依赖项
安装image_proc包用于矫正图像。
```bash
sudo apt-get install ros-noetic-image-proc
```
#### 2、编译和安装
首先,将这个包克隆到你的 ROS 工作空间的 `src` 目录下,然后使用以下命令编译:
```bash
cd ~/catkin_ws # 或你的工作空间目录
catkin_make # 或使用 catkin build如果你使用 catkin_tools
```
#### 3、修改launch文件
`cv_camera.launch` 文件中,修改 `device_path` 参数。
可以通过以下命令查看设备路径:
```bash
ls /dev/v4l/by-path
```
#### 4、启动launch文件
使用以下命令启动系统:
```bash
roslaunch cv_camera camera1920.launch
```
该launch文件会启动一个节点发布分辨率为1920x1080的图像以及矫正后的图像。
### 文件说明
- launch文件夹
- camera1280.launch发布分辨率为1280x720的图像以及矫正后的图像。
- camera1920.launch发布分辨率为192x1080的图像以及矫正后的图像。
- camera3840.launch发布分辨率为3840x2160的图像以及矫正后的图像。
- calibrationdata文件夹
- 1280x720.yaml 分辨率为1280x720的相机标定参数。
- 1920x1080.yaml分辨率为1920x1080的相机标定参数。
- 3840x2160.yaml分辨率为3840x2160的相机标定参数。
- 12880x720.tar.gz分辨率为1280x720的标定图像。
- 1920x1080.gz分辨率为1920x1080的标定图像。
- 3840x2160.gz分辨率为3840x2160的标定图像。
### 发布的话题
* `~image_raw` (*sensor_msgs/Image*)
* `~camera_info` (*sensor_msgs/CameraInfo*)
### 服务
* `~set_camera_info` (*sensor_msgs/SetCameraInfo*)
### 参数
* `~rate` (*double*, 默认值: 30.0) 发布频率 [Hz]。
* `~device_id` (*int*, 默认值: 0) 捕获设备 ID。
* `~device_path` (*string*, 默认值: "") 相机设备文件路径,例如 `/dev/video0`
* `~frame_id` (*string*, 默认值: "camera") 消息头的 `frame_id`
* `~image_width` (*int*) 尝试设置捕获图像的宽度。
* `~image_height` (*int*) 尝试设置捕获图像的高度。
* `~camera_info_url` (*string*) 相机信息 yaml 文件的 URL。
* `~file` (*string*, 默认值: "") 如果不为空,则使用电影文件而不是设备。
* `~capture_delay` (*double*, 默认值: 0) 捕获和接收图像的估计持续时间。
* `~rescale_camera_info` (*bool*, 默认值: false) 自动缩放相机校准信息。
* `~camera_name` (*bool*, 默认值: 与 `frame_id` 相同) `camera_info_manager` 的相机名称。
支持 CV_CAP_PROP_*,通过以下参数。
* `~cv_cap_prop_pos_msec` (*double*)
* `~cv_cap_prop_pos_avi_ratio` (*double*)
* `~cv_cap_prop_frame_width` (*double*)
* `~cv_cap_prop_frame_height` (*double*)
* `~cv_cap_prop_fps` (*double*)
* `~cv_cap_prop_fourcc` (*double*)
* `~cv_cap_prop_frame_count` (*double*)
* `~cv_cap_prop_format` (*double*)
* `~cv_cap_prop_mode` (*double*)
* `~cv_cap_prop_brightness` (*double*)
* `~cv_cap_prop_contrast` (*double*)
* `~cv_cap_prop_saturation` (*double*)
* `~cv_cap_prop_hue` (*double*)
* `~cv_cap_prop_gain` (*double*)
* `~cv_cap_prop_exposure` (*double*)
* `~cv_cap_prop_convert_rgb` (*double*)
* `~cv_cap_prop_rectification` (*double*)
* `~cv_cap_prop_iso_speed` (*double*)

View File

@ -0,0 +1,68 @@
## Autolabor云台相机使用说明
### 简介
`PantiltRvizPanel` 是为 ROS rviz
环境开发的一个插件,旨在提供一个交互式的用户界面,用于控制和监视一个可调节的摄像头平台。此插件允许用户通过图形界面发送命令,控制摄像头的方向和行为,以及接收和显示摄像头的当前角度信息。
![Panel](./imgs/rviz-panel.png)
### 功能
- **节点选择**:用户可以从下拉列表中选择当前活动的摄像头节点。
- **模式设置**:用户可以设置摄像头的工作模式,包括锁定模式、跟随头部模式、跟随头部和俯仰模式及全跟随模式。
- **键盘控制**:用户可以使用键盘的 W、S、A、D 键来控制摄像头的上下左右移动。
- **角度设置**:用户可以输入具体的角度值,直接调整摄像头的方向。
- **角度反馈**:实时显示当前摄像头的角度信息。
### 使用方法
1. **选择摄像头节点**
在节点选择器下拉菜单中选择您希望控制的摄像头节点。
![NodeSelector](./imgs/rviz-node-selector.png)
2. **设置工作模式**
提供四种工作模式的按钮:
- **SetLockMode**:锁定当前方向。
- **SetHeadingFollow**:摄像头跟随主体的头部方向。
- **SetHeadingPitchFollow**:摄像头跟随主体的头部和俯仰方向。
- **SetFullFollowMode**:摄像头全方位跟随主体。
![ModeSetting](./imgs/rviz-mode-setting.png)
3. **键盘控制**
- 在使用键盘控制时要将单击PantiltRvizPanel窗口使其获得焦点然后按下键盘上的相应按键。
- `W`或`Up`键:摄像头向上。
- `S`或`Down`键:摄像头向下。
- `A`或`Left`键:摄像头向左。
- `D`或`Right`键:摄像头向右。
4. **角度设置**
- 在界面提供的文本框中输入希望设置的角度值,单位是度,然后点击发送角度按钮。
- **Heading**方向的取值范围是:**[-160, 160]**
- **Roll**方向的取值范围是:**[-40, 40]**
- **Pitch**方向的取值范围是:**[-90, 90]**
![AngleControl](./imgs/rviz-angle-control.png)
> 注意:此处的角度都是相对于摄像头的初始位置而言的,初始位置是固定的。
5. **角度反馈**
界面将实时显示摄像头当前的角度信息。
![AngleFeedBack](./imgs/rviz-angle-feedback.png)
> 注意:此处的角度都是相对于摄像头的初始位置而言的,初始位置是固定的。
### 安装
确保您的 ROS 环境已安装 rviz并将此插件编译后加载到 rviz 中。
### 依赖
此插件依赖于 ROS 的通信机制和 rviz 的插件架构。确保您的系统中已正确安装 ROS 和 rviz。

View File

@ -0,0 +1,126 @@
## Autolabor相机云台串口控制节点
### 简介
Pantilt_camera_serial节点是一个为 ROS 开发的包,用于控制和管理与相机云台相关的硬件接口。该节点允许用户通过 ROS
控制云台的方向和角度,同时通过摄像头捕获视频数据。
![ControlPanel](./imgs/control-panel.png)
### 功能
- 控制云台的方向和角度。
- 从摄像头捕获视频。
- 提供视频流和云台控制的 ROS 话题和服务。
### 使用方法
#### 1. 编译和安装
确保已安装 `pantilt_camera_serial`, `cv_camera`, 和 `rviz_pantilt_plugin` 包。首先,将这些包克隆到你的 ROS
工作空间的 `src` 目录下,然后使用以下命令编译:
```bash
cd ~/catkin_ws # 或你的工作空间目录
catkin_make # 或使用 catkin build如果你使用 catkin_tools
```
#### 2. 修改 launch 文件
`pantiltcamera.launch` 文件中,修改 `device_path``port_name` 参数:
- `device_path`:视频设备的路径,如 `/dev/v4l/by-path/pci-...`
- `port_name`:云台控制的串口路径,如 `/dev/ttyUSB0`
#### 3. 添加设备操作权限
为了让 ROS 节点能够访问硬件设备,你可能需要为当前用户添加设备操作权限:
```bash
sudo usermod -a -G dialout $USER
sudo chmod a+rw /dev/ttyUSB0 # 云台控制的串口
sudo chmod a+rw /dev/video0 # 摄像头设备
```
#### 4. 启动 launch 文件
使用以下命令启动系统:
```bash
roslaunch pantilt_camera_serial pantiltcamera.launch
```
#### 5. 订阅和发布话题
此节点与其他 ROS 节点交互主要通过以下话题:
##### 发布话题
- **/node_name/pantilt_angle_info**
- **类型**: `pantilt_camera_serial/PantiltAngleInfo`
- **描述**: 发布云台当前的角度信息,包括对地航向角、横滚角和俯仰角,以及对应的相对基座读数。
- **单位**角度单位均为度degrees
- **消息结构**:
- `heading`: 对地航向角degrees
- `roll`: 对地横滚角degrees
- `pitch`: 对地俯仰角degrees
- `encoder_heading`: 相对基座航向角读数
- `encoder_roll`: 相对基座横滚角读数
- `encoder_pitch`: 相对基座俯仰角读数
##### 订阅话题
- **/node_name/pantilt_vel**
- **类型**: `geometry_msgs/Twist`
- **描述**: 接收控制云台的速度和方向的指令。`linear.x` 和 `angular.z` 分别用于控制航向heading和俯仰pitch轴的速度。
- **消息用法**:
- `linear.x`: 控制航向轴的速度,取值范围 [0,2]
- `angular.z`: 控制俯仰轴的速度,取值范围 [0,2]
#### 示例
发送云台控制命令示例:
```bash
rostopic pub /pantilt_camera_serial/pantilt_vel geometry_msgs/Twist '{linear: {x: 0.5}, angular: {z: 0.3}}'
```
#### 6. 服务节点
提供服务 `/node_name/send_command`,允许用户发送具体的控制命令到云台。
- **SetLockMode**
- 描述:锁定当前云台的方向,使其不随输入改变。
- **SetHeadingFollow**
- 描述:设置云台仅跟随航向(水平方向),俯仰方向(垂直方向)保持锁定。
- **SetHeadingPitchFollow**
- 描述:设置云台跟随航向和俯仰方向,即云台将根据输入完全动态调整。
- **SetFullFollowMode**
- 描述:云台将完全跟随输入的方向移动,包括水平和垂直方向的全方位跟随。
- **BackToCenter**
- 描述:命令云台回到中心位置,即所有方向重置为初始状态。
- **SetPantiltSpeed**
- 描述:设置云台的运动速度,适用于需要控制运动快慢的场景。
- **SetPantiltAngle**
- 描述直接设置云台的目标角度参数为三个角度值Head角度、Roll角度和Pitch角度如果有
- 需要添加参数data[0]: Head角度data[1]: Roll角度data[2]: Pitch角度。
- 取值范围分别为Head角度[-160,160]Roll角度[-40,40]Pitch角度[-90,90]。
- **使用示例**
```bash
rosservice call /pantilt_camera_serial/send_command "{command_name: 'SetLockMode', data: []}"
rosservice call /pantilt_camera_serial/send_command "{command_name: 'SetPantiltAngle', data: [10.0,0.0,0.0]}"
```
#### 7. 使用 rviz_pantilt_plugins
在 RViz 中加载 `rviz_pantilt_plugin` 来实时查看和控制云台及摄像头。确保在 RViz 配置中加载了正确的 `.rviz`
配置文件,以查看相应的视图和控制界面。
> 注:详细说明参考(http://www.autolabor.com.cn/usedoc/c1/node/rviz)
### 注意
在使用之前,请确保所有硬件设备都已正确连接,并且系统上已正确安装了所有依赖的 ROS 包和库。
```

BIN
pro/imgs/control-panel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 KiB

BIN
pro/imgs/pro-size.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
pro/imgs/pro-socket.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

View File

@ -0,0 +1,53 @@
## 产品概述
### 产品概述
Autolabor
C1专为机器人设计的高性能摄像头即使在没有减震装置或不平坦的路面上也能提供清晰稳定的图像。它拥有先进的主动式机械防抖和数字ISP防抖技术图像效果媲美主流智能手机。该摄像头集成高端ISP芯片支持4K分辨率、HDR、自动曝光和自动白平衡显著提升图像质量。多种防抖模式和云台接口使其适应不同场景。兼容ROS系统提供即插即用的驱动包支持相机参数标定和畸变矫正易于集成。
### 主要特性
支持4K分辨率下的30帧视频输出。
配备HDR、自动曝光和自动白平衡。
主动式机械防抖功能结合数字ISP防抖。
支持ROS开发提供ROS驱动包。
内参和畸变的标定,配备了畸变矫正插件。
### 产品清单
| 序号 | 产品 | 数量 | 单位 |
|----|----------|----|----|
| 1 | C1摄像头 | 1 | 个 |
| 2 | USB-B线 | 2 | 根 |
| 3 | 12V电源适配器 | 1 | 个 |
### 安全使用注意事项
产品安装使用过程中,必须严格遵守国家和使用地区的各项电气安全规定。
请使用正规厂家提供的电源适配器,电源适配器具体要求请参见产品参数表。
为减少火灾或电击危险,请勿让产品受到雨淋或受潮。
在安装时,请确保产品固定牢固。(对未经认可的修改或维修导致的问题,本公司不承担任何责任)。
避免将产品安装到振动或冲击环境,并使产品远离电磁干扰的地点。(忽视此项可能会损坏产品)。
请勿直接触碰产品散热部件,以免烫伤。
室内产品请勿安装在可能淋到水或其他液体的环境。
请勿在极热、极冷、多尘、腐蚀或者高湿度的环境下使用产品,具体 温、湿度要求参见产品的参数表。
避免将镜头对准强光(如灯光照明太阳光或激光束等),否则会损坏图像传感器。
避免热量积蓄,保持产品周边通风流畅。
请勿直接触碰到图像传感器,若有必要清洁,请将柔软的干净布用酒精稍微湿润,轻轻拭去尘污。
请妥善保存设备的全部原包装材料,以便出现问题时,使用包装材料将 设备包装好,寄到代理商或返回厂家处理。非原包装材料导致的运输途
中的意外损坏,由使用者承担责任。

View File

@ -0,0 +1,37 @@
## 产品参数
### 产品参数
| 参数 | 规格 |
|--------------|------------------------------------|
| 分辨率 | 4K @ 30 fps |
| 有效像素 | 1100万 |
| 焦距 | 2.95mm |
| 光圈 | f/2.0 |
| 对角视场角 (DFOV) | 143° |
| 垂直视场角 (VFOV) | 69° |
| 水平视场角 (HFOV) | 125° |
| 镜头总长度 (TTL) | 15.89mm |
| 畸变 | < -33% |
| 相对亮度 | > 66% |
| 防抖功能 | 三轴机械防抖,图像增稳 |
| 可控转动范围 | 俯仰: ±120°<br>翻滚: ±40°<br>航向: ±140° |
| 外形尺寸 | 104.3 x 78.5 x 53.5 mm |
| 质量 | 380g |
| 工作电压 | 12V |
| 功耗 | 10W |
| 工作环境温度 | -10°C ~ +60°C |
| 接口 | USB-B 视频<br>USB-B 控制<br>DC 供电 |
### 产品尺寸
![](./imgs/pro-size.png)
### 产品接口
![](./imgs/pro-socket.png)

View File

@ -0,0 +1,99 @@
## 云台相机快速上手指南
### 1. 编译与安装
#### 依赖项:
安装image_proc包用于矫正图像。
```bash
sudo apt-get install ros-noetic-image-proc
```
#### 步骤:
1. 打开终端并导航到你的 ROS 工作空间目录:
```bash
cd ~/catkin_ws
```
2. 下载以下三个包到 `src` 目录下:
- `cv_camera`:用于图像获取和标定数据。
- `pantilt_camera_serial`:用于云台串口驱动,控制云台转动。
- `rviz_pantilt_plugin`:云台控制的 RViz 可视化插件。
3. 进入 `src` 目录后,使用以下命令编译工作空间:
```bash
catkin_make
```
如果你使用的是 `catkin_tools`,则可以使用:
```bash
catkin build
```
4. Source 你的工作空间:
```bash
source ~/catkin_ws/devel/setup.bash
```
### 2. 配置摄像头路径和串口路径
#### 步骤:
1. 找到你的摄像头设备路径和云台串口路径:
```bash
ls /dev/v4l/by-path
```
```bash
ls /dev/ttyUSB*
```
2. 修改 `pantiltcamera.launch` 文件中的 `device_path``port_name` 参数:
- `device_path`:摄像头设备路径,如 `/dev/video0`
- `port_name`:云台控制的串口路径,如 `/dev/ttyUSB0`
3. 确保当前用户有设备操作权限,使用以下命令添加权限:
```bash
sudo usermod -a -G dialout $USER
sudo chmod a+rw /dev/ttyUSB0
sudo chmod a+rw /dev/video0
```
### 3. 启动Launch文件
![ControlPanel](./imgs/control-panel.png)
```bash
roslaunch pantilt_camera_serial pantiltcamera.launch
```
这将启动云台控制节点,允许你通过话题或服务控制云台的转动。
在 RViz 中,你可以通过插件界面实时控制云台,并查看摄像头的图像变化。
### 4. ROS节点说明
#### 节点功能:
- **cv_camera**:用于图像捕获和发布标定数据,提供矫正前后的图像。
- **pantilt_camera_serial**:通过串口控制云台的转动,发布当前的云台角度,并响应来自其他节点的控制命令。
- **rviz_pantilt_plugin**:提供 RViz 可视化控制界面,允许用户通过图形界面控制云台,并查看实时图像。
#### 话题和服务:
- **cv_camera节点**
- 发布话题:
- `/cv_camera/image_raw`:发布原始图像。
- `/cv_camera/camera_info`:发布相机的标定信息。
- **pantilt_camera_serial节点**
- 发布话题:
- `/pantilt_camera_serial/pantilt_angle_info`:发布当前的云台角度信息。
- 订阅话题:
- `/pantilt_camera_serial/pantilt_vel`:接收并执行云台速度控制指令。
- 提供服务:
- `/pantilt_camera_serial/send_command`:允许用户发送控制命令,如设置云台角度、速度等。
- **rviz_pantilt_plugin节点**
- 提供一个交互式界面,通过 RViz 可视化控制云台角度,并显示实时图像。
按照这些步骤操作,你可以快速上手并有效控制你的云台相机系统。