autolabor-c1-doc/node/serial.md

4.6 KiB
Raw Permalink Blame History

pantilt_camera_serial

简介

Pantilt_camera_serial节点是一个为 ROS 开发的包,用于控制和管理与相机云台相关的硬件接口。该节点允许用户通过 ROS 控制云台的方向和角度,同时通过摄像头捕获视频数据。

ControlPanel

功能

  • 控制云台的方向和角度。
  • 从摄像头捕获视频。
  • 提供视频流和云台控制的 ROS 话题和服务。

使用方法

1. 编译和安装

确保已安装 pantilt_camera_serial, cv_camera, 和 rviz_pantilt_plugin 包。首先,将这些包克隆到你的 ROS 工作空间的 src 目录下,然后使用以下命令编译:

cd ~/catkin_ws  # 或你的工作空间目录
catkin_make     # 或使用 catkin build如果你使用 catkin_tools

2. 修改 launch 文件

pantiltcamera.launch 文件中,修改 device_pathport_name 参数:

  • device_path:视频设备的路径,如 /dev/v4l/by-path/pci-...
  • port_name:云台控制的串口路径,如 /dev/ttyUSB0

3. 添加设备操作权限

为了让 ROS 节点能够访问硬件设备,你可能需要为当前用户添加设备操作权限:

sudo usermod -a -G dialout $USER
sudo chmod a+rw /dev/ttyUSB0  # 云台控制的串口
sudo chmod a+rw /dev/video0   # 摄像头设备

4. 启动 launch 文件

使用以下命令启动系统:

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.xangular.z 分别用于控制航向heading和俯仰pitch轴的速度。
    • 消息用法:
      • linear.x: 控制航向轴的速度,取值范围 [0,2]
      • angular.z: 控制俯仰轴的速度,取值范围 [0,2]

示例

发送云台控制命令示例:

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]。
  • 使用示例
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 包和库。