Jetson Xavier Vins-fusion安装使用和与px4通信

一.Vins-fusion参考这篇

NVIDIA Jetson Xavier NX部署VINS-fusion-GPU-CSDN博客

二.参考时候遇到的问题

1.在第四步安装opencv的cmake命令遇到报错CMake Error: The source directory "/home/jetson/opencv-3.4.1/build/WITH_TBB=ON" does not exist.

解决方法:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN=7.2 \
-D CUDA_ARCH_PTX="" \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D WITH_LIBV4L=ON \
-D WITH_GSTREAMER=ON \
-D WITH_GSTREAMER_0_10=OFF \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \
-D WITH_TBB=ON \
..

原因是空格出现问题以及最后的 .. 忘记加了

2.第四步安装opencv的make 命令太慢了

解决方法:

改成 make -j4,报错的话再换回make

3.git的时候显示error: RPC failed; curl 18 transfer closed with outstanding read data remaining fatal: The remote end hung up unexpectedly

解决办法:

直接网页端打开,Download zip就可以了

三.数据集上的使用

太大了,不下了

四.安装D435i的驱动

参考这篇

实测(一) NVIDIA Xavier NX + D435i / 奥比中光Astrapro 相机+ ORB-SLAM 2 + 3 稠密回环建图_d435i slam-CSDN博客

但是这里的v2.5太旧不支持现在使用的内核,进那个sh文件里改一下支持的版本就可以了

五.对配置文件的一些修改

1.~/realsense_ws/src/realsense-ros-2.3.2/realsense2_camera/launch/rs_camera.launch

<arg name="enable_gyro"         default="true"/>
<arg name="enable_accel"        default="true"/>

这两个由false改成true

<arg name="unite_imu_method"          default="linear_interpolation"/>

这个的default原本是"",改为"linear_interpolation"

这样就有imu话题了

  <arg name="enable_infra"        default="true"/>
  <arg name="enable_infra1"       default="true"/>
  <arg name="enable_infra2"       default="true"/>

这仨改成true,就有infra1和infra2话题了

添加以下内容:

<arg name="emitter_enable"   		      default="false"/>

<!-- rosparam set /camera/stereo_module/emitter_enabled false -->
<rosparam>
 /camera/stereo_module/emitter_enabled: false
</rosparam>

<rosparam if="$(arg emitter_enable)">
/camera/stereo_module/emitter_enabled: true
</rosparam>

这样就可以关闭结构光了

如果不行

roslaunch realsense2_camera rs_camera.launch
rosrun rqt_reconfigure rqt_reconfigure

 打开后将camera->stereo_module中的emitter_enabled设置为off(0)

2.~/offboard_ws/src/VINS-Fusion-gpu-master/config/realsense_d435i/realsense_stereo_imu_config.yaml

output_path: "/home/jetson/output/"

这是结果输出的位置,改成自己的

rostopic echo /camera/infra1/camera_info

a5021730216c4dbabc2a22d8eacf38d5.png

根据这个改 left.yaml和right.yaml

六.相机校准

https://blog.csdn.net/u010196944/article/details/127240169

1.标定相机内参

棋盘格文件缩放到25%,经测量边到边是0.029m

所以配置文件改为

target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.029           #size of apriltag, edge to edge [m]
tagSpacing: 0.3          #ratio of space between tags to tagSize

 装好了,提示importing libraries 非法指令 (核心已转储)

解决方法:python版本的问题,deactivate conda

又提示没有权限

sudo su

source devel/setup.bash

命令有问题,少了个空格,应该改成

rosrun kalibr kalibr_calibrate_cameras --target src/kalibr/data/checkerboard.yaml --bag src/kalibr/data/d435i_infra_left.bag --models pinhole-radtan --topics /left --bag-from -10 100 --show-extractio

rosrun kalibr kalibr_calibrate_cameras --target src/kalibr/data/checkerboard.yaml --bag src/kalibr/data/d435i_infra_right.bag --models pinhole-radtan --topics /right --bag-from -10 100 --show-extractio

 

2.imu随机游走标定

3.标定相机外参

run.sh有点问题,我修改了一下(roslaunch应该改成rosrun)

roslaunch vins vins_rviz.launch & sleep 5;
rosbag play shfiles/bag/IndoorScene.bag & sleep 5;
rosrun vins vins_node src/VINS-Fusion-gpu-master/config/realsense_d435i/realsense_stereo_imu_config.yaml & sleep 3;
rosrun loop_fusion loop_fusion_node src/VINS-Fusion-gpu-master/config/realsense_d435i/realsense_stereo_imu_config.yaml;
wait;

 在外参输出结果路径,将extrinsic_parameter.txt中数据替换掉realsense_stereo_imu_config.yaml中外参数据

这句话的意思是,在 realsense_stereo_imu_config.yaml设置的输出路径里去找extrinsic_parameter.csv文件(不知道是不是VINS版本不一样)

七.桥接程序

将slam程序发布的ros话题,接收下来转换成mavros的话题格式,再传输给px4

https://blog.csdn.net/u010196944/article/details/134466325

八.Vins-Fusion 延迟十几秒

/home/jetson/offboard_ws/src/VINS-Fusion-gpu-master/vins_estimator/src/rosNodeTest.cpp

在此文件中第31行,修改为

bool x = true;//!
bool y = true;//!
void img0_callback(const sensor_msgs::ImageConstPtr &img_msg)
{
    
    //!
    if(x){
        x = false;
    }else{
        m_buf.lock();
        img0_buf.push(img_msg);
        x = true;
        m_buf.unlock();
    }
    //!
    //m_buf.lock();
    //img0_buf.push(img_msg);
    //m_buf.unlock();
}

void img1_callback(const sensor_msgs::ImageConstPtr &img_msg)
{
    
    //!
    if(y){
        y = false;
    }else{
        m_buf.lock();
        img1_buf.push(img_msg);
        y = true;
        m_buf.unlock();
    }
    //!
    //m_buf.lock();
    //img1_buf.push(img_msg);
    //m_buf.unlock();
}

修改了话题接收的频率(主要没找到D435i发布话题的频率在哪里修改)

九.高度数据的来源

参考的博客里没提,实际要把高度信息来源给改了eb1e5138edc941338991a1bbfff16199.jpg

 十.飞控连不上

roslaunch mavros px4.launch结果显示xxxstarted

原因是新的飞控的telem2口需要接地,不接地rx灯不亮,见鬼

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

做一瓶独立的花露水

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

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

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

打赏作者

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

抵扣说明:

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

余额充值