一、依赖
1、Ceres Solver(前文关于视觉惯性里程计的有安装步骤)
1、PCL(不要安装,这个自带PCL1.8,安装其他的会有问题)
二、编译
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激光雷达插件无法在仿真环境中启用。
source ~/.bashrc
三、启动仿真
机械激光雷达包括3d_lidar和3d_gpu_lidar,前者使用CPU计算,后者使用GPU计算,其他没有区别,您可以根据您的需要选择。在模型中可以设置激光雷达的线数,以3d_gpu_lidar.sdf为例,本教程用的是32线,您可以修改为其他线数,其他参数也都可以修改。注意刷新率不能改的太高,否则ALOAM算不过来。
修改outdoor1.launch文件,可复制一份。
3d_lidar和3d_gpu_lidar,
<?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.world"/>
<!-- gazebo configs -->
<arg name="gui" default="true"/>
<arg name="debug" default="false"/>
<arg name="verbose" default="false"/>
<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>
<!-- typhoon_h480_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