南京企业网站开发,公明网站建设,番禺网站建设怎么样,无锡集团网站建设文章目录
前言
10 系统概述
11 手动设置配套计算机 前言
本文介绍如何将英特尔 Realsense 深度摄像头(Intel Realsense Depth Camera)与 ArduPilot 配合使用#xff0c;以实现避障(obstacle avoidance)。该方法使用在配套计算机上运行的 Python 脚本#xff08;非 ROS以实现避障(obstacle avoidance)。该方法使用在配套计算机上运行的 Python 脚本非 ROS向 ArduPilot 发送距离信息。 10 系统概述
简而言之该脚本会将 Realsense 深度摄像头提供的深度图像转换成与前方障碍物的距离。AP 支持 DISTANCE_SENSOR 和 OBSTACLE_DISTANCE MAVLink 消息前者携带单个距离后者携带距离数组。OBSTACLE_DISTANCE 允许我们同时发送多达 72 个距离因此我们将使用它。 首先必须对原始深度图像应用某种形式的滤波器以避免黑洞和噪音并改进数据以获得更稳定的结果。以下是脚本中包含的滤镜的完整列表(list of filters)你可以单独启用这些滤镜。要测试不同滤镜的设置可以使用 librealsense 提供的 rs-depth-quality 示例或运行 opencv_depth_filtering.py 示例脚本。下图展示了原始左和过滤后右的深度图像水平线是我们计算与障碍物距离的位置
接下来从输入/处理后的深度图像来看由于信息中没有区分不同俯仰角度的区域因此距离需要在同一水平线上如右图所示。我们将摄像头的水平视场划分为 72 条均匀分布的光线。沿着每条射线我们选择与射线末端相对应的像素并提取出深度值随后当飞行器上下俯仰时障碍物线将通过补偿飞行器当前俯仰由 MAVLink 的ATTITUDE 信息提供保持固定最后发送信息的频率应在 10Hz 或更高这取决于飞行器的行驶速度。
11 手动设置配套计算机
只有在尚未将 APSync 安装到配套计算机的情况下才需要执行这些步骤。
用于配套电脑 操作系统Ubuntu 18.04强烈建议使用此版本因为该版本包含最新的所需库Python 3.6 及以上版本这也是 Ubuntu 18.04 的标准版本。使用 $ python3 -V 查看版本应该能看到 Python 3.6.9 或更高版本librealsense从官方资源(official source)下载或安装pyrealsense2 也是必需的。
不同系统的安装过程有很大差异因此请参考 github 官方页面(the official github page)了解具体系统的安装说明
UbuntuJetsonOdroidWindowsRaspbian
安装支持软件包
首先为 Ubuntu 安装 Python3(Python3 for Ubuntu)Ubuntu 18.04 及以上版本无需安装。然后使用 Python3命令运行英特尔提供的示例这些示例位于 ~/librealsense/wrappers/python/examples 文件夹中。
# Update the PYTHONPATH environment variable to add the path to the pyrealsense2 library
export PYTHONPATH$PYTHONPATH:/usr/local/lib cd ~/librealsense/wrappers/python/examples # You should see a stream of depth data coming from the D4xx camera.
python3 python-tutorial-1-depth.py
安装 Python3 的 pip (pip3) 和其他支持软件包
sudo apt-get install python3-pip
pip3 install pyrealsense2
pip3 install transformations
pip3 install dronekit
pip3 install apscheduler
pip3 install pyserial # For serial connection
pip3 install opencv-python
sudo apt -y install python3-gst-1.0 gir1.2-gst-rtsp-server-1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-ugly libx264-dev # Only necessary if you installed the minimal version of Ubuntu
sudo apt install python3-opencv
下载主脚本 d4xx_to_mavlink.py或克隆 vision_to_mavros 软件源并找到脚本文件夹。
cd /path/to/download # Or ROS workspace ~/catkin_ws/src
git clone https://github.com/thien94/vision_to_mavros.git
cd vision_to_mavros/script
chmod x d4xx_to_mavlink.py
chmod x opencv_depth_filtering.py # Useful to test the filtering options
与 AP 一起使用的主要脚本是 d4xx_to_mavlink.py。第二个脚本 opencv_depth_filtering.py可用于在闲暇时测试不同的过滤选项。
修改脚本
如果没有插入监视器可通过设置 debug_enable_default False 禁用脚本 d4xx_to_mavlink.py 中的调试选项或在运行脚本时添加参数 --debug_enable 0
1. 用以下命令运行脚本。
cd /path/to/script
python3 d4xx_to_mavlink.py
2. 如果启用了调试选项请等待显示输入和处理后的深度图像。在右上角可以看到处理速度帧/秒。输出图像右侧上的水平线表示我们找到的与摄像机前方障碍物距离的直线。
设置摄像机 RGB 图像的视频馈送
1. 脚本 d4xx_to_mavlink.py 有一个选项 RTSP_STREAMING_ENABLE。如果启用TrueRealsense 摄像机的 RGB 图像视频流将在 rtsp://ip-address:8554/d4xx 和 UP2 / 配套计算机的 ip-address 上提供。
2. 在 Mission Planner 中右键单击 HUD 视频 设置 GStreamer 源这将打开 Gstreamer url 窗口。将以下示例管道输入 Gstreamer url 窗口。相应更改 ip-address
rtspsrc locationrtsp://ip-address:8554/d4xx caps“application/x-rtp, media(string)video, clock-rate(int)90000, encoding-name(string)H264” latency100 ! queue ! rtph264depay ! avdec_h264 ! videoconvert ! video/x-raw,formatBGRA ! appsink nameoutsink
3. 视频传输的延迟取决于网络和管道配置因此请随时调整/修改参数。
由于深度摄像头在不同设置/环境下的性能各不相同建议在实际飞行前进一步调整脚本设置。以下是根据系统实际实验所做的一些改进
1. 当飞行器在地面上时深度图像的大部分可能会看到地面。在这种情况下可在 d4xx_to_mavlink.py 脚本中减小 obstacle_line_height_ratio参数接近零以向上移动障碍物检测线。
2. 如果深度数据有噪声可以通过修改obstacle_line_thickness_pixel参数来增加障碍物线的厚度。在撰写本文时我们的想法是处理某个边界由该参数定义内的一组像素并找出最低值作为物体的指示器。如果将来开发出更好的方案这一点可以改变。
Tip
深度摄像头可与 Realsense T265 跟踪摄像头一起用于非 GPS 导航(Realsense T265 Tracking camera for non-GPS navigation)。有一些支持脚本(scripts)可以简化同时使用多个摄像头的过程。