diff --git a/node/imgs/control-panel.png b/node/imgs/control-panel.png new file mode 100644 index 0000000..7d707a1 Binary files /dev/null and b/node/imgs/control-panel.png differ diff --git a/node/imgs/rviz-angle-control.png b/node/imgs/rviz-angle-control.png new file mode 100644 index 0000000..7f4781c Binary files /dev/null and b/node/imgs/rviz-angle-control.png differ diff --git a/node/imgs/rviz-angle-feedback.png b/node/imgs/rviz-angle-feedback.png new file mode 100644 index 0000000..d866036 Binary files /dev/null and b/node/imgs/rviz-angle-feedback.png differ diff --git a/node/imgs/rviz-mode-setting.png b/node/imgs/rviz-mode-setting.png new file mode 100644 index 0000000..9d373a1 Binary files /dev/null and b/node/imgs/rviz-mode-setting.png differ diff --git a/node/imgs/rviz-node-selector.png b/node/imgs/rviz-node-selector.png new file mode 100644 index 0000000..ff992a7 Binary files /dev/null and b/node/imgs/rviz-node-selector.png differ diff --git a/node/imgs/rviz-panel.png b/node/imgs/rviz-panel.png new file mode 100644 index 0000000..7f3255e Binary files /dev/null and b/node/imgs/rviz-panel.png differ diff --git a/node/opencv.md b/node/opencv.md index e69de29..9cd5fa1 100644 --- a/node/opencv.md +++ b/node/opencv.md @@ -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*) + diff --git a/node/rviz.md b/node/rviz.md index e69de29..5a6c748 100644 --- a/node/rviz.md +++ b/node/rviz.md @@ -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。 + diff --git a/node/serial.md b/node/serial.md index e69de29..48b6ab3 100644 --- a/node/serial.md +++ b/node/serial.md @@ -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 包和库。 + +``` diff --git a/pro/imgs/control-panel.png b/pro/imgs/control-panel.png new file mode 100644 index 0000000..7d707a1 Binary files /dev/null and b/pro/imgs/control-panel.png differ diff --git a/pro/imgs/pro-size.png b/pro/imgs/pro-size.png new file mode 100644 index 0000000..1d9cd53 Binary files /dev/null and b/pro/imgs/pro-size.png differ diff --git a/pro/imgs/pro-socket.png b/pro/imgs/pro-socket.png new file mode 100644 index 0000000..3d97248 Binary files /dev/null and b/pro/imgs/pro-socket.png differ diff --git a/pro/overview.md b/pro/overview.md index e69de29..bbc7e4f 100644 --- a/pro/overview.md +++ b/pro/overview.md @@ -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 | 个 | + +### 安全使用注意事项 + +产品安装使用过程中,必须严格遵守国家和使用地区的各项电气安全规定。 + +请使用正规厂家提供的电源适配器,电源适配器具体要求请参见产品参数表。 + +为减少火灾或电击危险,请勿让产品受到雨淋或受潮。 + +在安装时,请确保产品固定牢固。(对未经认可的修改或维修导致的问题,本公司不承担任何责任)。 + +避免将产品安装到振动或冲击环境,并使产品远离电磁干扰的地点。(忽视此项可能会损坏产品)。 + +请勿直接触碰产品散热部件,以免烫伤。 + +室内产品请勿安装在可能淋到水或其他液体的环境。 + +请勿在极热、极冷、多尘、腐蚀或者高湿度的环境下使用产品,具体 温、湿度要求参见产品的参数表。 + +避免将镜头对准强光(如灯光照明太阳光或激光束等),否则会损坏图像传感器。 + +避免热量积蓄,保持产品周边通风流畅。 + +请勿直接触碰到图像传感器,若有必要清洁,请将柔软的干净布用酒精稍微湿润,轻轻拭去尘污。 + +请妥善保存设备的全部原包装材料,以便出现问题时,使用包装材料将 设备包装好,寄到代理商或返回厂家处理。非原包装材料导致的运输途 +中的意外损坏,由使用者承担责任。 \ No newline at end of file diff --git a/pro/parameter.md b/pro/parameter.md index e69de29..a853710 100644 --- a/pro/parameter.md +++ b/pro/parameter.md @@ -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°
翻滚: ±40°
航向: ±140° | +| 外形尺寸 | 104.3 x 78.5 x 53.5 mm | +| 质量 | 380g | +| 工作电压 | 12V | +| 功耗 | 10W | +| 工作环境温度 | -10°C ~ +60°C | +| 接口 | USB-B 视频
USB-B 控制
DC 供电 | + +### 产品尺寸 + +![](./imgs/pro-size.png) + +### 产品接口 + +![](./imgs/pro-socket.png) + + + + + diff --git a/pro/quick.md b/pro/quick.md index e69de29..49c972d 100644 --- a/pro/quick.md +++ b/pro/quick.md @@ -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 可视化控制云台角度,并显示实时图像。 + +按照这些步骤操作,你可以快速上手并有效控制你的云台相机系统。 \ No newline at end of file