Astra相机的ROS开发环境配置与使用
Astra相机的ROS开发环境配置与使用
- 一、Astra相机简介
- 二、搭建ROS工作空间
- 1.下载ROS驱动功能包
- 2.安装依赖
- 3.配置工作空间
- 三、配置设备节点
- 1.固定设备串口号
- 2.获取设备信息
- 3.修改launch文件
- 四、启动相机节点
- 五、配置相机内参
- 1.下载内参文件
- 2.使用内参文件
- 3.启动launch
- 六、RVIZ查看点云
- 1.启动rviz
- 2.查看点云
- 3.快捷启动rviz
- 4.保存点云信息
- 5.查看pcd文件
一、Astra相机简介
Astra相机(售价150)是由乐视与奥比中光合作生产的一款体感相机,其对标微软Kinect相机(售价800+),可用于机器视觉、3D点云、opencv、SLAM学习,支持ROS框架能够在ubuntu、windows、Android等系统下进行开发。其官方(https://orbbec3d.com/develop/)提供了相应的SDK供开发者使用。
相机的具体参数如下所示,本文主要讲解如何在Ubuntu端搭建基于ROS的开发环境。
二、搭建ROS工作空间
1.下载ROS驱动功能包
Astra相机官方提供了ROS驱动进行开发,该驱动目前仅支持ROS Kinetic 和 Melodic版本。
该项目的官方地址为https://github.com/orbbec/ros_astra_camera,由于处于外网原因,建议将其搬运至国内码云后进行下载,此处提供我搬运的码云地址:https://gitee.com/jasonli0012/ros_astra_camera
2.安装依赖
下载完项目源码后,需要先进行安装依赖文件。此处安装命令中的**$ROS_DISTRO**将根据你的ROS版本不同而不同,此处我选择Melodic版本进行开发,Astra相机同样支持ROS Kinetic版本的开发。
sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros
3.配置工作空间
完成安装依赖文件后,需要新建一个工作空间用于对Astra相机的ROS开发。
# 新建工作空间
mkdir -p astra/src
cd astra
catkin_make
source devel/setup.bash
# 将下载的源码移动至src目录下
cd src
mv ~/ros_astra_camera ~/ws/astra/src/
# 编译
cd ..
catkin_make
编译成功后如图所示:
此处建议大家将source devel/setup.bash
写入 .bashrc文件中,以防止之后重复操作。此处我用的命令行为zsh所以修改的文件为 .zshrc,加载的文件为 setup.zsh。
# bash
sudo vi ~/.bashrc
# 填写你自己的工作空间目录
source ~/ws/astra/devel/setup.bash# zsh
sudo vi ~/.zshrc
# 填写你自己的工作空间目录
source ~/ws/astra/devel/setup.zsh
三、配置设备节点
1.固定设备串口号
为了方便之后进行开发,需要将Astra相机的串口号固定表示。其官方功能包中就自带脚本,只需要直接运行即可。
roscd astra_camera
# 运行脚本
./scripts/create_udev_rules
出现如下图所示内容即表明成功。
随后再次编译工作空间即可。
# 到达工作空间下
roscd astra_camera
cd ../..
# 编译
catkin_make -j7
上述命令中编译命令catkin_make后带的参数表示使用几核(CPU核心)进行编译,此处表明使用7核心进行编译以达到快速编译。
2.获取设备信息
由于官方提供的launch文件是通过设备的 vendor (设备贴牌)和 product (设备ID)进行启动节点的,所以首先我们需要确定设备的贴牌和ID 。
在命令行输入命令lsusb
分别查看Astra相机插拔前后的设备信息,可以发现设备信息。
通过对比,排除多出的USB驱动外,剩余的两项即为设备信息
Bus 001 Device 019: ID 2bc5:0502
Bus 001 Device 018: ID 2bc5:0403
其中设备的贴牌为 2bc5 ,而0502 代表彩色摄像头,0403代表深度摄像头。
3.修改launch文件
在获取设备信息后,我们需要修改官方提供的launch文件。
# 找到launch文件所在目录
roscd astra_camera/launch
# 编辑launch文件
sudo gedit astra_pro。launch
打开launch文件后,找到第71行,将设备的属性修改为彩色相机的设备ID。
四、启动相机节点
启动launch文件,运行节点。出现如下图所示内容即表示运行成功。此处黄色报警内容可暂时忽略。
roslaunch astra_carma astrapro.launch
另开命令行运行rqt节点
rosrun rqt_image_view rqt_image_view
在rqt工具上方选择所需订阅的话题即可调出不同的图片,此处展示为彩色图片(rgb)中的原图(image_raw),此外也可以选择深度、红外等所需图像。
五、配置相机内参
1.下载内参文件
由于相机本身存在畸变,所以需要使用一些配置文件来完成去畸变工作。此处给出Astra相机中彩色相机和深度相机的内参配置文件。
camera.yaml文件
image_width: 640
image_height: 480
camera_name: camera
camera_matrix:rows: 3cols: 3data: [577.54679, 0. , 310.24326,0. , 578.63325, 253.65539,0. , 0. , 1. ]
camera_model: plumb_bob
distortion_model: plumb_bob
distortion_coefficients:rows: 1cols: 5data: [0.125197, -0.196591, 0.006816, -0.006225, 0.000000]
rectification_matrix:rows: 3cols: 3data: [1., 0., 0.,0., 1., 0.,0., 0., 1.]
projection_matrix:rows: 3cols: 4data: [590.55457, 0. , 306.57339, 0. ,0. , 592.83978, 256.43008, 0. ,0. , 0. , 1. , 0. ]
depth.yaml 文件
image_width: 640
image_height: 480
camera_name: depth_Astra_Orbbec
camera_matrix:rows: 3cols: 3data: [582.795354, 0.000000, 326.415982, 0.000000, 584.395006, 249.989410, 0.000000, 0.000000, 1.000000]
distortion_model: plumb_bob
distortion_coefficients:rows: 1cols: 5data: [-0.068613, 0.174404, 0.001015, 0.006240, 0.000000]
rectification_matrix:rows: 3cols: 3data: [1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000]
projection_matrix:rows: 3cols: 4data: [586.186035, 0.000000, 329.702427, 0.000000, 0.000000, 590.631409, 250.167765, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000]
复制上述文件并放置到cfg文件夹中即可。
#路径
roscd astra_camera/cfg
2.使用内参文件
为了在启动launch文件时调用内参文件,需要对其进行修改。
roscd astra_camera/launch
sudo gedit astrapro.launch
此处使用gedit编辑器打开launch文件并修改其25、26行内容,将内参文件的地址填写入内。
# 原内容:
<arg name="rgb_camera_info_url" default="" />
<arg name="depth_camera_info_url" default="" />
# 替换为:
<arg name="rgb_camera_info_url" default="file://$(find astra_camera)/cfg/camera.yaml" />
<arg name="depth_camera_info_url" default="file://$(find astra_camera)/cfg/depth.yaml" />
随后向下,找到第84行修改为如下内容:
# 原内容:
<param name="camera_info_url" value="" />
# 替换为:
<param name="camera_info_url" type="string" value="$(arg rgb_camera_info_url)" />
3.启动launch
配置完成后可以再次启动节点,查看校准后的图像内容。
原始的深度图:
校准后的深度图:
六、RVIZ查看点云
1.启动rviz
除了使用rqt工具进行查看图像外,还可以使用rviz工具进行查看图像。命令行中直接启动rviz工具。
rviz
此时的rviz内尚未订阅任何节点,此时可以订阅查看图像信息。点击左下方Add按钮选择image类型,添加图像节点。
随后在左侧打开选项卡image,在image Topic中选择自己订阅的节点即可。
上述步骤可重复进行,从而达到订阅多个摄像头节点。如下图即为同时打开三个摄像头。
2.查看点云
同样再次点击左下方Add按钮,选择PointCloud2类型新建内容。
随后,在左侧PointCloud2选项下订阅 /camera/depth_registered/points话题,并将Global Options下Fixed Frame选为camera_depth_optical_frame。完成上述操作后,即可在中央查看到点云选项。
3.快捷启动rviz
为了方便之后减少重复打开rviz添加上述内容的工作,此处提供了rviz的参数文件以方便再次打开。
Panels:- Class: rviz/DisplaysHelp Height: 0Name: DisplaysProperty Tree Widget:Expanded:- /Global Options1- /Status1- /PointCloud21- /Depth1- /ir1- /RGB1Splitter Ratio: 0.5Tree Height: 361- Class: rviz/SelectionName: Selection- Class: rviz/Tool PropertiesExpanded:- /2D Pose Estimate1- /2D Nav Goal1- /Publish Point1Name: Tool PropertiesSplitter Ratio: 0.5886790156364441- Class: rviz/ViewsExpanded:- /Current View1Name: ViewsSplitter Ratio: 0.5- Class: rviz/TimeExperimental: falseName: TimeSyncMode: 0SyncSource: PointCloud2
Preferences:PromptSaveOnExit: true
Toolbars:toolButtonStyle: 2
Visualization Manager:Class: ""Displays:- Alpha: 0.5Cell Size: 1Class: rviz/GridColor: 159; 147; 147Enabled: trueLine Style:Line Width: 0.029999999329447746Value: LinesName: GridNormal Cell Count: 0Offset:X: 0Y: 0Z: 0Plane: XZPlane Cell Count: 10Reference Frame: camera_depth_optical_frameValue: true- Alpha: 1Autocompute Intensity Bounds: trueAutocompute Value Bounds:Max Value: 9.859000205993652Min Value: 0.5799999833106995Value: trueAxis: XChannel Name: intensityClass: rviz/PointCloud2Color: 255; 255; 255Color Transformer: RGB8Decay Time: 0Enabled: trueInvert Rainbow: falseMax Color: 255; 255; 255Max Intensity: 4096Min Color: 0; 0; 0Min Intensity: 0Name: PointCloud2Position Transformer: XYZQueue Size: 10Selectable: trueSize (Pixels): 3Size (m): 0.009999999776482582Style: SquaresTopic: /camera/depth_registered/pointsUnreliable: falseUse Fixed Frame: trueUse rainbow: trueValue: true- Class: rviz/ImageEnabled: trueImage Topic: /camera/depth/image_rectMax Value: 1Median window: 5Min Value: 0Name: DepthNormalize Range: trueQueue Size: 2Transport Hint: rawUnreliable: falseValue: true- Class: rviz/ImageEnabled: trueImage Topic: /camera/ir/imageMax Value: 1Median window: 5Min Value: 0Name: irNormalize Range: trueQueue Size: 2Transport Hint: rawUnreliable: falseValue: true- Class: rviz/ImageEnabled: trueImage Topic: /camera/rgb/image_rawMax Value: 1Median window: 5Min Value: 0Name: RGBNormalize Range: trueQueue Size: 2Transport Hint: rawUnreliable: falseValue: trueEnabled: trueGlobal Options:Background Color: 48; 48; 48Default Light: trueFixed Frame: camera_depth_frameFrame Rate: 30Name: rootTools:- Class: rviz/InteractHide Inactive Objects: true- Class: rviz/MoveCamera- Class: rviz/Select- Class: rviz/FocusCamera- Class: rviz/Measure- Class: rviz/SetInitialPoseTheta std deviation: 0.2617993950843811Topic: /initialposeX std deviation: 0.5Y std deviation: 0.5- Class: rviz/SetGoalTopic: /move_base_simple/goal- Class: rviz/PublishPointSingle click: trueTopic: /clicked_pointValue: trueViews:Current:Class: rviz/OrbitDistance: 3.863161325454712Enable Stereo Rendering:Stereo Eye Separation: 0.05999999865889549Stereo Focal Distance: 1Swap Stereo Eyes: falseValue: falseFocal Point:X: 2.0370023250579834Y: -1.0987344980239868Z: -0.031386714428663254Focal Shape Fixed Size: trueFocal Shape Size: 0.05000000074505806Invert Z Axis: falseName: Current ViewNear Clip Distance: 0.009999999776482582Pitch: 0.004796733148396015Target Frame: <Fixed Frame>Value: Orbit (rviz)Yaw: 2.4886555671691895Saved: ~
Window Geometry:Depth:collapsed: falseDisplays:collapsed: falseHeight: 961Hide Left Dock: falseHide Right Dock: falseQMainWindow State: 000000ff00000000fd0000000400000000000001fa00000323fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f0070006500720074006900650073020000019b000001b500000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001a6000000c900fffffffb0000000a0044006500700074006801000001e9000000ae0000001600fffffffb00000006005200470042010000029d000000c30000001600fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000019200000323fc0200000005fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000211000000a400fffffffb000000040069007201000002540000010c0000001600fffffffb0000000a0049006d00610067006501000002fb000000c00000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000003e80000032300000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000RGB:collapsed: falseSelection:collapsed: falseTime:collapsed: falseTool Properties:collapsed: falseViews:collapsed: falseWidth: 1920X: 0Y: 27ir:collapsed: false
新建文件astra_camera.rviz并将上述文件保存其内,最后将文件反正如下目录即可。
# 打开功能包根目录
roscd astra_camera
# 新建文件夹
mkdir rviz
cd rviz
# 复制上述文件至astra_camera.rviz
sudo vi astra_camera.rviz
最后,即可快捷启动rviz环境了!
roscd astra_camera/
rviz -d rviz/astra_camera.rviz
4.保存点云信息
如果需要实时保存当前点云信息,可以直接运行如下节点。该节点将把当前点云信息保存至当前目录下。
rosrun pcl_ros pointcloud_to_pcd input:=/camera/depth_registered/points
保存点云信息时,要注意及时停止(Ctrl+C)否则会生产大量的pcd文件。
5.查看pcd文件
查看pcd文件需要使用特定工具,此处介绍工具pcl_viewer
# 安装
sudo apt-get install pcl-tools
查看文件的方式如下,其中xxxx替换为所需查看的文件名。
pcl_viewer xxxx.pcd
打开后,可以使用鼠标进行放大、缩小、移动,操作同rviz一样。同时可以点击键盘上的数字键1~5切换不同的颜色。
Astra相机的ROS开发环境配置与使用相关推荐
- ubuntu18.04系统ros melodic 安装orbslam2,Astra相机的ROS环境
ubuntu18.04 安装orbslam2,rosbag,Astra相机的ROS环境 ubuntu20.04系统 ros noetic下安裝orbslam2 打开下面链接: CSDNhttps:/ ...
- Go1 头部相机传图到自己电脑上进行开发—环境配置相关
Go1 相机传图到自己电脑上进行开发-环境配置Trick 0 以头部相机为例发送 Go 1头部相机发送可以参考宇树B站的camera_sdk教程. 本文主要解决在自己电脑上接收图像camera_sdk ...
- ROS入门(ROS安装+编译器配置)详细教程 ROSneotic安装 VScode的ROS开发环境的简单配置
ROS安装 + vscode简单配置 假设你已经安装好了Ubuntu 20.04,并且只有国内网络环境. 换源 Ctrl + Alt + T打开终端 备份并打开 sudo cp /etc/apt/so ...
- Windows上最全wsl2使用配置,包含基础配置、高级配置、开发工具、机器学习环境配置、机器人与自动驾驶环境配置(如Ros及百度的无人驾驶系统apollo)、服务器及Web开发环境配置等等
Windows上最全wsl2使用配置,包含基础配置.高级配置.开发工具.机器学习环境配置.机器人与自动驾驶环境配置(如Ros及百度的无人驾驶系统apollo).服务器及Web开发环境配置等等. 文章比 ...
- 搭建DJI 无人机Onboard SDK ROS开发环境及测试
搭建DJI 无人机Onboard SDK ROS开发环境及测试 功能包简介 开发环境搭建 测试功能包 连接设备 启动SDK 功能包简介 ROS功能包名称:dji_sdk 功能包功能:用于DJI 板载S ...
- Python开发环境配置
好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...
- vue如何配置服务器端跨域_vue开发环境配置跨域,一步到位
本文要实现的是:使用vue-cli搭建的项目在开发时配置跨域,上线后不做任何任何修改,接口也可以访问 阅读时间需要三分钟 production:产品 生产环境 development:开发 开发环境 ...
- 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
1.下载和安装OpenCV SDK VS2010不用说,肯定都安装了吧.来说说当前最新的OpenCV版本2.4.8(2014年2月24日),2.4.9 (2014年4月)的下载和安装.与其说是安装,不 ...
- ug二次开发环境可以用c语言吗,NX二次开发(1):开发环境配置
最近小编开始走上NX的二次开发之路,驱动我学习NX二次开发主要是兴趣使然.对NX进行二次开发,首先需要配置好开发环境,下面跟着小编踏上二次开发的道路吧! 本文以NX11.0为例,介绍如何在VS2013 ...
最新文章
- 如何创建一个用弹出窗口来查看详细信息的超链接列
- [转载] CSS模块化【封装-继承-多态】
- Java中的带参方法
- 方正ceb阅读器手机版_海信阅读手机A5Pro 经典版评测:体验和阅读完美平衡
- 15、sql语句集,Linux 下PHP查询mysql
- 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
- zookeeper集群安装部署
- nginx 非80、443端口跳转到80、443
- apk ionic 破损_ionic3-android打包完美解决
- JSP自定义标签(2)
- Python小白的数学建模课-11.偏微分方程数值解法
- win10系统对计算机要求,Win10系统对电脑配置要求 win10专业版教程
- 基于JDK1.8的JVM 内存结构【JVM篇三】
- 学生成绩信息管理系统
- 移植tas5707功放芯片驱动注意事项
- 将texlive带的字体安装进linux系统字体库
- 使用Photoshop CS 扣公章
- 3650m5设置u盘启动_联想启天M415设置u盘启动步骤(支持uefi/bios双启动)
- 汇编程序语言 输入数字n和n个数字并对n个数字排序(带注释)
- flex 最后一行 左对齐
热门文章
- LEARNING_CRYPTO|搭建个人以太坊测试网络+测试Solidity部署(Ganache+truffle)
- Golang教程:(十三)Map
- StNet: Local and Global Spatial-Temporal Modeling for Action Recognition
- 谷歌浏览器打不开网址解决办法
- Mac病毒安全防护软件推荐:Symantec Endpoint Protection
- 从概念到底层技术,一文看懂区块链架构设计(附知识图谱)
- 火车票购买问题模拟-同步
- Android studio 打开monitor 出现error提示 的解决办法 特别是使用了JDK-9
- 数据库、表、基本增删改查
- Pytorch随记(3)