ubuntu20.04、noetic环境安装PX4和XTDrone(一)
环境安装
如果系统是ubuntu20.04,基于x86/amd64的架构,可以使用脚本一键安装:
具体链接参考:https://www.yuque.com/xtdrone/manual_cn/install_scripts#
● 此脚本将会一键安装ros noetic、px4 1.13固件、Gazebo 11、以及XTDrone仿真环境
● 为避免冲突,此脚本会将home目录下的catkin_ws 重命名为 catkin_ws_back,请自行处理重命名后的文件
● 本脚本只安装了python3的依赖,如果需要使用键盘控制无人机的功能,请自行安装python2的依赖。
需要注意的是:
自动安装后会生成三个文件夹:catkin_ws文件夹、PX4_Firmware文件夹、XTDrone文件夹。
设置环境变量。
(1)PX4_Firmware文件夹主要是调用gazebo打开仿真环境、加载sdf模型、发布相关传感器数据。示例指令:roslaunch px4 indoor1.launch。如果执行成功出现环境和无人机,说明环境配置成功(会配置错误会出现只有房子没有无人机的情况)。
(2)XTDrone文件夹主要是通信和键盘控制:
示例:
先启动通信脚本,solo代表子机型,0代表飞机的编号。
cd ~/XTDrone/communication
python multirotor_communication.py solo 0
再启动键盘控制脚本,solo代表子机型,1代表飞机的个数,vel代表速度控制
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py solo 1 vel
简单介绍一下具体控制:
在控制终端页面输入“i”,用来设置垂直方向上的速度。
再输入“b”,
然后输入“t”,实现无人机解锁,就可以看到无人机旋翼旋转和起飞了。
其他:“s“表示悬停,“w和x”表示前进后退,“a和d”表示左右移动。
到这里,基本电脑环境,仿真环境、通信和控制没问题就可以继续研究了。
SLAM算法相关编译
这里需要用到刚才生成的catkin_ws文件夹了,这个ROS工程文件夹主要用来存放和编译ROS相关的功能包,可例如:VINS-FUSION、Fast-lio2以及fast-planner等定位和路径规划的功能包。当然,如果不是研究SLAM和路径规划的同学可以直接通过指令使用ROS里面集成好的SLAM算法,例如:HectorSLAM、Cartographer等算法包,sudo apt install ros-noetic-hector-slam*等。
以3D激光SLAM为例
(1)编译3D-SLAM代码
XTDrone文件夹下的~/XTDrone/sensing/slam/laser_slam/目录有A-LOAM文件。
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 build #建议使用catkin build,也可以使用catkin_make
需要强调:catkin_ws空间一定要和环境变量中的名称对应(如果在其他工作空间中编译catkin_slam_px4_ws,需要在环境变量中设置source路径,source ~/WorkSpace/catkin_slam_px4_ws/devel/setup.bash),这是因为在编译A-LOAM中还编译了“velodyne_simulator”,如果环境变量没有设置,在后续启动3D激光雷达环境的时候,会无法发布3D激光雷达话题(使用rostopic list查看)。
(2)修改环境代码
<?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/indoor1.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>
<!-- 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="7.5"/>
<arg name="z" value="0.5"/>
<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 -->
(3)开始仿真
a、启动环境:
roslaunch px4 outdoor1.launch
b、启动SLAM:
roslaunch aloam_velodyne aloam_velodyne_HDL_32.launch
c、使用laser_transfer.py将ALOAM发布的位姿数据通过mavros发布
cd ~/XTDrone/sensing/slam/laser_slam/script
python laser_transfer.py iris 0 aloam
d、建立通信,键盘控制起飞即可
cd ~/XTDrone/communication
python multirotor_communication.py iris 0
e、键盘控制起飞即可
cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel
需要注意:“iris”、“solo”等为无人机型号,在输入控制指令的时候,要与环境代码(indoor.launch之类的)中的无人机对应。
到此,三维激光SLAM仿真完成!
效果:


后续会更新使用mid360运行fast-lio2的相关教程。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)