前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ROS2 中 使用奥比中光 Orbbec Astra Pro 深度相机

ROS2 中 使用奥比中光 Orbbec Astra Pro 深度相机

作者头像
桑榆肖物
发布2023-08-22 10:30:06
1.1K0
发布2023-08-22 10:30:06
举报
文章被收录于专栏:桑榆肖物

本文将以 Ubuntu 20.04 和 ROS2 foxy 环境为例,详细介绍如何在 ROS2 中使用奥比中光 Orbbec Astra Pro 深度相机。在这一篇文章中,你会学到如何创建工作空间,使用 usb_cam 功能包,编译安装使用 ros_astra_camera 等。

1. 引言

前面的文章《ROS2 机器人操作系统入门和安装以及如何使用 .NET 进行开发》中提到,组成机器人的关键部分主要是电机、传感器、软件和电池。机器人的智能感知主要通过视觉传感器,视觉传感器对于机器人来说,就像人类之于眼睛的关系,可说非常重要。那么如何通过 ROS 获取远端机器人的摄像机传感器的图像信息呢?

1.1 视觉传感器

视觉传感器是机器人的一种常用传感器,用于检测机器人周围的环境信息,并将其转化为机器人可以理解的信息。机器人视觉传感器可以分为两类:光学传感器和摄像机传感器。

光学传感器是通过检测周围环境的光线强度变化来获取信息的。常见的光学传感器有激光雷达传感器、光敏电阻传感器等。

摄像机传感器是通过摄像头来获取信息的。摄像机传感器可以分为两类:彩色摄像机传感器和黑白摄像机传感器。彩色摄像机传感器可以检测周围环境的颜色信息,而黑白摄像机传感器只能检测周围环境的亮度信息。

深度相机是一种特殊的视觉传感器,它可以在图像中测量每个像素点的深度信息。通常,深度相机使用激光或其他方法来测量物体到相机的距离,并在图像中标记出来。这样,机器人就可以通过深度相机获取到周围环境中物体的三维信息。

机器人视觉传感器在机器人导航、物品检测、物品抓取等方面有着广泛的应用。例如,机器人可以通过视觉传感器来识别路径,然后按照规划的路径导航;机器人也可以通过视觉传感器来检测周围环境中的物品,然后通过机械臂或其他装置进行物品抓取。

1.2 常见的视觉传感器

USB 摄像头是一种常见的视觉传感器,通过USB接口连接到计算机或嵌入式设备,实现图像采集和传输。这类摄像头具有易于安装、兼容性好、成本相对较低等优点,广泛应用于计算机视觉、机器人导航、人脸识别等领域。

在 ROS 中使用这一类设备非常简单,我们可以直接通过 usb_cam 功能包来驱动它,获取 USB 摄像头的二维图像数据,这一系列的文章,我们也从这类设备开始。

对于此功能包的测试,我们可以直接使用 Orbbec Astra Pro 深度相机,因为其和普通的 USB 摄像头一样,遵循 UVC(USB Video Class)协议,可以直接免驱使用。在 Ubuntu 20.04 中我们可以通过系统自动的应用“茄子”直接打开看到摄像头画面。

摄像头画面

在 ROS 中使用

普通摄像头

安装

对于 usb_cam 功能包的安装,我们可以直接使用 apt 来安装:

代码语言:javascript
复制
sudo apt install ros-foxy-usb-cam

也可以使用源码进行编译安装,但是不建议尝试。

测试

安装完成后,使用下面的命令启动节点:

代码语言:javascript
复制
ros2 run usb_cam usb_cam_node_exe

然后即可在 rqt 的插件 Image View 中查看或者通过 rviz2 查看 /image_raw 话题发布的图像信息。

usb_cam

另外,根据控制台我们可以看到程序启动会加载用户目录的配置文件 ~/.ros/camera_info/default_cam.yaml ,若不存在,则会使用 /opt/ros/foxy/share/usb_cam/config/params.yaml 这个配置文件,默认使用摄像头设备为 /dev/video0。关于详细的配置和参数设置可以前往 ROS wiki usb_cam[1] 查询。

RGB-D 摄像头

奥比中光 Orbbec Astra Pro 是一款 RGB-D 摄像头,在许多场景下,我们可以利用它获取更丰富的环境信息。

操作前准备

在操作前我们需要先创建好自己的 ROS 工作空间,如果你已经拥有了自己的工作空间,可以跳过这一步骤。

创建一个新的文件夹来作为工作空间的根目录,名字可以自定义。在该文件夹中创建一个名为 "src" 的子文件夹,用于存放工作空间中的软件包。例如:

代码语言:javascript
复制
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

然后需要前往奥比中光官网下载最新的ROS2 SDK 驱动包[2]。虽然有个 orbbec/ros_astra_camera 的github仓库的ros2-development分支,但内容不是最新的,需要去官网下载。

下载后上传到 ~/ros2_ws/src ,执行解压缩:

代码语言:javascript
复制
tar -zxvf OpenNI_SDK_ROS2_v1.0.2_20220809_b32e47_linux.tar.gz -C src

编译依赖安装

编译前,需要安装好一些编译所需要的依赖:

代码语言:javascript
复制
sudo apt install libgflags-dev nlohmann-json3-dev ros-foxy-image-transport ros-foxy-image-publisher

安装 glog,这个是谷歌的日志记录模块。

代码语言:javascript
复制
cd ~/ros2_ws
wget -c https://github.com/google/glog/archive/refs/tags/v0.6.0.tar.gz  -O glog-0.6.0.tar.gz
tar -xzvf glog-0.6.0.tar.gz
cd glog-0.6.0
mkdir build && cd build
cmake .. && make -j6
sudo make install
sudo ldconfig
cd ~/ros2_ws
rm glog-0.6.0 -rf
rm glog-0.6.0.tar.gz

安装 magic_enum

代码语言:javascript
复制
wget -c https://github.com/Neargye/magic_enum/archive/refs/tags/v0.8.2.tar.gz -O  magic_enum-0.8.2.tar.gz
tar -xzvf magic_enum-0.8.2.tar.gz
cd magic_enum-0.8.2
mkdir build && cd build
cmake .. && make -j6
sudo make install
sudo ldconfig
cd ~/ros2_ws
rm magic_enum-0.8.2 -rf
rm magic_enum-0.8.2.tar.gz

安装 libuvc

代码语言:javascript
复制
git clone https://github.com/libuvc/libuvc.git
cd libuvc
mkdir build && cd build
cmake .. && make -j6
sudo make install
sudo ldconfig
cd ~/ros2_ws
rm libuvc -rf

编译安装 ros_astra_camera

在编译前先按照说明处理 libusb 的一些规则。执行 install.sh

代码语言:javascript
复制
cd ~/ros2_ws/src/ros2_astra_camera/astra_camera/scripts
sudo bash install.sh
sudo udevadm control --reload-rules && sudo udevadm trigger

然后转到工作目录,开始编译:

代码语言:javascript
复制
cd ~/ros2_ws
colcon build --event-handlers  console_direct+  --cmake-args  -DCMAKE_BUILD_TYPE=Release

整体编译速度还是非常快的,等待编译完成即可:

编译完成

注意:如果你在看本教程之前尝试过编译 astra_camera 并出现问题,则需要先清理该工作目录的 buildinstall

测试

首先使环境生效,启动相机节点:

代码语言:javascript
复制
source ~/ros2_ws/install/setup.bash
ros2 launch astra_camera astra_mini.launch.py

然后另开一个控制台,打开 rviz2 添加一个 Image 控件选择 /camera/depth/image_raw 话题或者直接通过该话题创建 Image 控件。需要注意的是:下图的三个 Policy 设置均需选择为 System Default 否则不会显示画面。

测试深度图

References

[1] ROS wiki usb_cam: http://wiki.ros.org/usb_cam [2] 奥比中光官网下载最新的ROS2 SDK 驱动包: https://developer.orbbec.com.cn/download.html?id=180

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 桑榆肖物 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 引言
    • 1.1 视觉传感器
      • 1.2 常见的视觉传感器
      • 在 ROS 中使用
        • 普通摄像头
          • 安装
          • 测试
        • RGB-D 摄像头
          • 操作前准备
          • 编译依赖安装
          • 编译安装 ros_astra_camera
          • 测试
          • References
      相关产品与服务
      腾讯云服务器利旧
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档