三维激光SLAM

ALOAM与3D激光雷达插件编译

ALOAM与3D激光雷达插件编译

先安装ALOAM链接中提到的依赖,然后编译ALOAM
1、依赖安装
参考博客“XTDrone仿真平台示例解析(四)——三维激光SLAM”里面安装依赖,但其实这些依赖似乎在视觉SLAM视觉惯性里程计(VIO)里面都安装过

sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev
tar zxf ceres-solver-2.2.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.2.0
make -j
sudo make install

2.编译ALOAM

cp -r ~/XTDrone/sensing/slam/laser_slam/A-LOAM ~/catkin_ws/src/
cp -r ~/XTDrone/sitl_config/gazebo_plugin/velodyne/* ~/catkin_ws/src/ #这里是3D激光雷达插件
cd ~/catkin_ws
catkin_make #或catkin build,取决于您的编译工具

再次强调,一定要在.bashrc里source ~/catkin_ws/devel/setup.bash,否则3D激光雷达插件无法在仿真环境中启用。
这段话我没看懂,但是似乎不影响后续操作

启动仿真

机械激光雷达包括3d_lidar和3d_gpu_lidar,前者使用CPU计算,后者使用GPU计算,其他没有区别,您可以根据您的需要选择。在模型中可以设置激光雷达的线数,以3d_gpu_lidar.sdf为例,本教程用的是32线,您可以修改为其他线数,其他参数也都可以修改。注意刷新率不能改的太高,否则ALOAM算不过来。
在这里插入图片描述
修改后的outdoor1_1.launch文件如下

<?xml version="1.0"?>
<launch>
    <!-- MAVROS posix SITL environment launch script -->
    <!-- launches Gazebo environment and 2x: MAVROS, PX4 SITL, and spawns vehicle -->
    <!-- vehicle model and world -->
    <arg name="est" default="ekf2"/>
    <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/outdoor1_light.world"/>
    <!-- gazebo configs -->
    <arg name="gui" default="true"/>
    <arg name="debug" default="false"/>
    <arg name="verbose" default="true"/>
    <arg name="paused" default="false"/>
    <!-- Gazebo sim -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="gui" value="$(arg gui)"/>
        <arg name="world_name" value="$(arg world)"/>
        <arg name="debug" value="$(arg debug)"/>
        <arg name="verbose" value="$(arg verbose)"/>
        <arg name="paused" value="$(arg paused)"/>
    </include>
     <!-- iris_0 -->
     <group ns="iris_0">
        <!-- MAVROS and vehicle configs -->
            <arg name="ID" value="0"/>
            <arg name="ID_in_group" value="0"/>
            <arg name="fcu_url" default="udp://:24540@localhost:34580"/>
        <!-- PX4 SITL and vehicle spawn -->
        <include file="$(find px4)/launch/single_vehicle_spawn_xtd.launch">
            <arg name="x" value="0"/>
            <arg name="y" value="0"/>
            <arg name="z" value="0"/>
            <arg name="R" value="0"/>
            <arg name="P" value="0"/>
            <arg name="Y" value="0"/>
            <arg name="vehicle" value="iris"/>
            <arg name="sdf" value="iris_3d_gpu_lidar"/>
            <arg name="mavlink_udp_port" value="18570"/>
            <arg name="mavlink_tcp_port" value="4560"/>
            <arg name="ID" value="$(arg ID)"/>
            <arg name="ID_in_group" value="$(arg ID_in_group)"/>
        </include>
        <!-- MAVROS -->
        <include file="$(find mavros)/launch/px4.launch">
            <arg name="fcu_url" value="$(arg fcu_url)"/>
            <arg name="gcs_url" value=""/>
            <arg name="tgt_system" value="$(eval 1 + arg('ID'))"/>
            <arg name="tgt_component" value="1"/>
        </include>
    </group>
</launch>
<!--the launch file is generated by XTDrone multi-vehicle generator.py  -->

启动仿真文件

roslaunch px4 outdoor1.launch

启动ALOAM,由于本教程给激光雷达设置的是32线,因此启动对应32线的launch文件

roslaunch aloam_velodyne aloam_velodyne_HDL_32.launch

在这里插入图片描述
然后使用laser_transfer.py将ALOAM发布的位姿数据通过mavros发布

cd ~/XTDrone/sensing/slam/laser_slam/script
python laser_transfer.py iris 0 aloam

然后建立通信,键盘控制起飞即可

cd ~/XTDrone/communication
python multirotor_communication.py iris 0 
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel

三维激光SLAM

我这里飞的乱七八糟,如果飞行路线正确,可以得到下图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值