奥比中光Orbbec Astra深度相机在ROS Melodic的使用

目录

个人搭建介绍:

一.安装依赖

二. 配置工作空间

三.下载功能包

四. 创建 astra udev 规则

六.在工作区下进行编译astra_camera

七.筛选器启用(不推荐:建议首先尝试主分支)

八.运行astra_camera

1.打开一个新终端,输入:roscore(不要关闭)

2. 回到原终端下(不要关闭)

3.再打开一个新的终端(不要关闭)

4.订阅节点

5.查看点云

结语:


个人搭建介绍:

Ubuntu:18.04

安装教程:VMware+Ubuntu18.04

ROS:Melodic

安装教程:Ubuntu18.04安装Ros

Orbbec Astra:环境搭建

教程:Ubuntu 20.04下搭建奥比中光-Astra (18.04版与20.04版步骤相同)

请在上述均搭建后在进行以下操作

一.安装依赖

sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros

二. 配置工作空间

1.完成安装依赖文件后,需要新建一个工作空间用于对Astra相机的ROS开发(如果您没有工作区)

mkdir -p ~/catkin_ws/src

 2.配置工作空间的环境变量

cd ~/catkin_ws/
catkin_make
source devel/setup.bash

 

(使用zsh终端的直接将bash换成zsh就可以了,下同)
如果这样设置环境变量,那么这个环境变量只对于此个终端有效,再打开一个终端是还需要再设置一下环境变量才行(暂时没解决)

3.检查环境变量是否生效

输入:

echo $ROS_PACKAGE_PATH

输出: 

三.下载功能包

cd ~/catkin_ws/src
git clone https://github.com/orbbec/ros_astra_camera

 如果没有“科学上网”的方法,git clone https://github.com/orbbec/ros_astra_camera 这一步可能无法执行,可以尝试在自己本机上进行下载,然后将下载的文件夹放置在~/catkin_ws/src下

四. 创建 astra udev 规则

roscd astra_camera
./scripts/create_udev_rules

 

六.在工作区下进行编译astra_camera

cd ~/catkin_ws
catkin_make --pkg astra_camera

七.筛选器启用(不推荐:建议首先尝试主分支)

Astra 驱动程序提供正常和过滤方法。使用过滤器驱动程序,我们可以获得更精确的深度数据,但它会花费更多的计算资源。如果程序将在嵌入式系统上执行,我们建议使用普通方法。您可以使用如下方式更改方法。-DFILTER=ON / OFF 
catkin_make --pkg astra_camera -DFILTER=OFF

 

八.运行astra_camera

1.打开一个新终端,输入:roscore(不要关闭)

2. 回到原终端下(不要关闭)

①使用Astra

roslaunch astra_camera astra.launch

②使用Astra Stereo S (w/ UVC)

roslaunch astra_camera stereo_s.launch

3.再打开一个新的终端(不要关闭)

在终端输入:rviz

4.订阅节点

当前的rviz内尚未订阅任何节点,此时可以订阅查看图像信息。点击左下方Add按钮选择image类型,添加图像节点。

 随后在左侧打开选项卡image,在image Topic中选择自己订阅的节点即可。

 随后重复以上操作,选择不同的节点便可显示不同的图像

 

5.查看点云

再次点击左下方Add按钮,选择PointCloud2类型新建内容。

 

 在左侧PointCloud2选项下订阅 /camera/depth_registered/points话题,并将Global OptionsFixed Frame选为camera_depth_optical_frame。完成上述操作后,即可在中央查看到点云选项。

结语:

由于Astra相机官方提供了ROS驱动进行开发,该驱动目前仅支持ROS Kinetic 和 Melodic版本,

而Ubuntu20.04对应的ROS版本为 Noetic,所以转战Ubuntu18.04。

希望这篇文章可以帮到大家。

​​​​​

  • 8
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
你可以使用以下示例代码来开始使用奥比中光OrbbecAstra深度摄像头: ```cpp #include <astra/astra.hpp> #include <iostream> class SampleFrameListener : public astra::FrameListener { public: void on_frame_ready(astra::StreamReader& reader, astra::Frame& frame) override { const astra::DepthFrame depthFrame = frame.get<astra::DepthFrame>(); if (!depthFrame.is_valid()) { std::cout << "Invalid depth frame!" << std::endl; return; } const int width = depthFrame.width(); const int height = depthFrame.height(); const int frameIndex = depthFrame.frame_index(); std::cout << "Depth frame " << frameIndex << " ready: " << width << "x" << height << std::endl; const astra::Vector3f* depthData = depthFrame.data(); const int numPixels = width * height; for (int i = 0; i < numPixels; ++i) { const float depth = depthData[i].z; // 处理深度数据,例如将其可视化或进行其他计算 } } }; int main(int argc, char** argv) { astra::initialize(); astra::StreamSet streamSet; astra::StreamReader reader = streamSet.create_reader(); SampleFrameListener listener; reader.stream<astra::DepthStream>().start(); reader.add_listener(listener); while (true) { astra_update(); // 执行其他任务,或者在这里添加退出循环的条件 } astra::terminate(); return 0; } ``` 这个示例代码演示了如何使用Astra SDK来读取并处理深度帧数据。你可以在`on_frame_ready`函数中处理深度数据,例如将其可视化或进行其他计算。 请确保已经正确安装Astra SDK,并将其相关库文件和头文件链接到你的项目中。此外,你还需要为你的程序提供适当的权限来访问Astra摄像头设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LCH南安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值