开发环境:NX+Ubuntu18.04+ROS-melodic
一、 ARM架构下 Realsense D435i 环境搭建
因为NVIDIA Xavier NX是一款arm架构的嵌入式开发板,因此安装方式与x86架构有所不同,虽然官网上提供了Nano的安装方式,但是按照这个流程安装后,在实测过程中仍有许多错误(例如数据丢失、imu显示不出来等等),接下来提供一个没有报错的安装方式。
核心板:NVIDIA Xavier NX
系统:Ubuntu18.04
内核:4.9.140
JetPack:4.3
L4T:32.4.3
!!!Librealsense和 realsense-ros的版本要对应起来
1.源码安装Librealsense-SDK 2.0 的 v2.50.0版本
现在官网已经停止ROS1的后续开发了,现在用 git clone都是默认最新的版本,仅支持ROS2了!!!建议去官网下载 v2.50.0版本(试过的最稳的版本了)
https://github.com/IntelRealSense/librealsense,去下载v2.50.0版本,如下位置:
1.1 安装相关依赖
sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev
1.2 新建一个文件夹用来存放 下载并解压后的的SDK
mkdir D435i-sdk
//之后放入你下载的librealsense文件夹
1.3 下载arm架构下所需的文件,这一步如果不做,后面必然会报错!!!
cd D435i-sdk
./scripts/patch-realsense-ubuntu-L4T.sh //时间很长~你可以去喝杯茶了
1.4 安装权限脚本
cd librealsense
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
1.5开始编译
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make -j4
sudo make install
正常来说编译不会报错,然后插入d435i 相机
1.6 ubuntu下查看d435i效果
realsense-viewer
封面就可以看到版本号
2.安装ROS Wrapper
2.1 源码下载
https://github.com/IntelRealSense/realsense-ros,进入官网切换到2.3.2版本
切换到2.3.2版本后,往下拉你应该能看到,在 README.md 里有说明需要的librealsense对应的 v2.50.0版本 :
2.2 新建一个名为realsense_ws的工作空间
mkdir -p /realsense_ws/src
cd realsense_ws
catkin_make
souce devel setup.bash
之后将下载的realsense-ros放入src中
2.3 下载其它相关包并编译
cd src
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
cd ..
catkin_make
2.4 更改相机launch文件的发布参数
进入 /realsense_ws/src/realsense-ros/realsense2_camera/launch,我们打开rs_camera.launch文件进行参数修改,这里如果想使用 “RGB+IMU” 的 贴出修改后的文件,参数都有说明:
<launch>
<arg name="serial_no" default=""/>
<arg name="usb_port_id" default=""/>
<arg name="device_type" default=""/>
<arg name="json_file_path" default=""/>
<arg name="camera" default="camera"/>
<arg name="tf_prefix" default="$(arg camera)"/>
<arg name="external_manager" default="false"/>
<arg name="manager" default="realsense2_camera_manager"/>
<arg name="output" default="screen"/>
<arg name="respawn" default="false"/>
<!-- 鱼眼相机参数,不用开启 -->
<arg name="fisheye_width" default="-1"/>
<arg name="fisheye_height" default="-1"/>
<arg name="enable_fisheye" default="false"/>
<!-- 深度信息参数 -->
<arg name="depth_width" default="640"/>
<arg name="depth_height" default="480"/>
<arg name="enable_depth" default="true"/>
<arg name="confidence_width" default="-1"/>
<arg name="confidence_height" default="-1"/>
<arg name="enable_confidence" default="false"/>
<arg name="confidence_fps" default="-1"/>
<!-- 双目相机参数,这里没用到,不开启 -->
<arg name="infra_width" default="640"/>
<arg name="infra_height" default="480"/>
<arg name="enable_infra" default="false"/>
<arg name="enable_infra1" default="false"/>
<arg name="enable_infra2" default="false"/>
<arg name="infra_rgb" default="false"/>
<!-- RGB相机参数 ,分辨率640*480 -->
<arg name="color_width" default="640"/>
<arg name="color_height" default="480"/>
<arg name="enable_color" default="true"/>
<!-- 各种相机的fps参数,slam的话,30足够了 -->
<arg name="fisheye_fps" default="-1"/>
<arg name="depth_fps" default="30"/>
<arg name="infra_fps" default="30"/>
<arg name="color_fps" default="30"/>
<!--imu参数,分别为角速度和加速度 -->
<arg name="gyro_fps" default="200"/>
<arg name="accel_fps" default="100"/>
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>
<arg name="enable_pointcloud" default="false"/>
<arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/>
<arg name="pointcloud_texture_index" default="0"/>
<arg name="allow_no_texture_points" default="false"/>
<arg name="ordered_pc" default="false"/>
<!-- 时间戳对齐 -->
<arg name="enable_sync" default="true"/>
<arg name="align_depth" default="true"/>
<arg name="publish_tf" default="true"/>
<arg name="tf_publish_rate" default="0"/>
<!-- 这里有个"unite_imu_method"是将 imu的加速度和角速度的发布为一个topic -->
<arg name="filters" default=""/>
<arg name="clip_distance" default="-2"/>
<arg name="linear_accel_cov" default="0.01"/>
<arg name="initial_reset" default="false"/>
<arg name="reconnect_timeout" default="6.0"/>
<arg name="wait_for_device_timeout" default="-1.0"/>
<arg name="unite_imu_method" default="linear_interpolation"/>
<arg name="topic_odom_in" default="odom_in"/>
<arg name="calib_odom_file" default=""/>
<arg name="publish_odom_tf" default="true"/>
<arg name="stereo_module/exposure/1" default="7500"/>
<arg name="stereo_module/gain/1" default="16"/>
<arg name="stereo_module/exposure/2" default="1"/>
<arg name="stereo_module/gain/2" default="16"/>
<group ns="$(arg camera)">
<include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
<arg name="tf_prefix" value="$(arg tf_prefix)"/>
<arg name="external_manager" value="$(arg external_manager)"/>
<arg name="manager" value="$(arg manager)"/>
<arg name="output" value="$(arg output)"/>
<arg name="respawn" value="$(arg respawn)"/>
<arg name="serial_no" value="$(arg serial_no)"/>
<arg name="usb_port_id" value="$(arg usb_port_id)"/>
<arg name="device_type" value="$(arg device_type)"/>
<arg name="json_file_path" value="$(arg json_file_path)"/>
<arg name="enable_pointcloud" value="$(arg enable_pointcloud)"/>
<arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/>
<arg name="pointcloud_texture_index" value="$(arg pointcloud_texture_index)"/>
<arg name="enable_sync" value="$(arg enable_sync)"/>
<arg name="align_depth" value="$(arg align_depth)"/>
<arg name="fisheye_width" value="$(arg fisheye_width)"/>
<arg name="fisheye_height" value="$(arg fisheye_height)"/>
<arg name="enable_fisheye" value="$(arg enable_fisheye)"/>
<arg name="depth_width" value="$(arg depth_width)"/>
<arg name="depth_height" value="$(arg depth_height)"/>
<arg name="enable_depth" value="$(arg enable_depth)"/>
<arg name="confidence_width" value="$(arg confidence_width)"/>
<arg name="confidence_height" value="$(arg confidence_height)"/>
<arg name="enable_confidence" value="$(arg enable_confidence)"/>
<arg name="confidence_fps" value="$(arg confidence_fps)"/>
<arg name="color_width" value="$(arg color_width)"/>
<arg name="color_height" value="$(arg color_height)"/>
<arg name="enable_color" value="$(arg enable_color)"/>
<arg name="infra_width" value="$(arg infra_width)"/>
<arg name="infra_height" value="$(arg infra_height)"/>
<arg name="enable_infra" value="$(arg enable_infra)"/>
<arg name="enable_infra1" value="$(arg enable_infra1)"/>
<arg name="enable_infra2" value="$(arg enable_infra2)"/>
<arg name="infra_rgb" value="$(arg infra_rgb)"/>
<arg name="fisheye_fps" value="$(arg fisheye_fps)"/>
<arg name="depth_fps" value="$(arg depth_fps)"/>
<arg name="infra_fps" value="$(arg infra_fps)"/>
<arg name="color_fps" value="$(arg color_fps)"/>
<arg name="gyro_fps" value="$(arg gyro_fps)"/>
<arg name="accel_fps" value="$(arg accel_fps)"/>
<arg name="enable_gyro" value="$(arg enable_gyro)"/>
<arg name="enable_accel" value="$(arg enable_accel)"/>
<arg name="publish_tf" value="$(arg publish_tf)"/>
<arg name="tf_publish_rate" value="$(arg tf_publish_rate)"/>
<arg name="filters" value="$(arg filters)"/>
<arg name="clip_distance" value="$(arg clip_distance)"/>
<arg name="linear_accel_cov" value="$(arg linear_accel_cov)"/>
<arg name="initial_reset" value="$(arg initial_reset)"/>
<arg name="reconnect_timeout" value="$(arg reconnect_timeout)"/>
<arg name="wait_for_device_timeout" value="$(arg wait_for_device_timeout)"/>
<arg name="unite_imu_method" value="$(arg unite_imu_method)"/>
<arg name="topic_odom_in" value="$(arg topic_odom_in)"/>
<arg name="calib_odom_file" value="$(arg calib_odom_file)"/>
<arg name="publish_odom_tf" value="$(arg publish_odom_tf)"/>
<arg name="stereo_module/exposure/1" value="$(arg stereo_module/exposure/1)"/>
<arg name="stereo_module/gain/1" value="$(arg stereo_module/gain/1)"/>
<arg name="stereo_module/exposure/2" value="$(arg stereo_module/exposure/2)"/>
<arg name="stereo_module/gain/2" value="$(arg stereo_module/gain/2)"/>
<arg name="allow_no_texture_points" value="$(arg allow_no_texture_points)"/>
<arg name="ordered_pc" value="$(arg ordered_pc)"/>
</include>
</group>
</launch>
2.5 相机试验
cd realsense_ws
source devel setup.bash
roslaunch realsense2_camera rs_camera.launch
再打开另一个终端打开rviz,查看话题发布
rviz
到此ARM架构下 Realsense D435i 环境搭建完成,下一篇将开始进行orb-slam2的稠密回环建图工作,未完待续~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)