自主无人机定义
功能框架
开发流程
项目代码框架
项目流程
gazebo的文件类型
仿真的类型
⮚ SITL 全称为Software in the loop,即软件在换仿真。
⮚
仿真首先分为软件在环仿真(SITL)和硬件在环仿真(HITL)。目前来看,软件在环仿真更简单实现及方便。我博士就读的课题组就是专门做导弹的半实物仿真的,个人认为硬件在环仿真需要加上转台才能真正意义发
挥出作用,不然只是在Pixhawk板子上跑仿真环境,毫无指导意义。
⮚
软件在环仿真一共是有jMAVSim、Gazebo、AirSim这三种。jMAVSim是一个轻量级的仿真器,目前只支持四旋翼仿真。AirSim我不太清楚,没有使用过,这里就不评价了。Gazebo是我们今
天的主角,支持旋翼、固定翼、倾转、小车等,是所有仿真器里支持平台最多的,也能支持多个无人机的仿真,在各个仿真器比较的表格里。
⮚ Flight stack代表飞控即PX4,Simulator代表仿真器(如Gazebo)。所有仿真器与PX4的通讯都是
通过MAVLink消息来进行的,SITL使用simulator模块中的simulator_mavlink.cpp来处理这些消息,而HITL是使用mavlink模块中的mavlink_receiver.
cpp来处理这些消息。梳理一下这里的消息流向:
⮚ PX4到仿真器。PX4给仿真器只会发送一个HIL_ACTUATOR_CONTROLS的MAVLink消息,熟悉PX4的应该知道这个对应的uORB消息是
actuator_outputs.msg,也就是姿态控制器最后的输出控制量。这里也就意味着,混控是在仿真器中进行的,仿真器中也包含电机的模型。
⮚ 仿真器到PX4。仿真器的作用就是模拟真实飞行,即模拟计算出真实飞行时的传感器状态,包括GPS,IMU等,将这些信息发送给飞控后,再由飞控中的估计模块计算出飞机状态量。
⮚ 外部到PX4。这里的外部就比如地面站QGC(可以外接遥控器),Mavros,Dronecode SDK等,这里也就可以模拟我们平时控制飞机的方式。
启动gazebo仿真
切换到对应的固件文件夹(注意每个人的文件夹是不一样的)
cd ~/src/Firmware
make px4_sitl_default gazebo
设置终端环境,因为需要终端ROS的包存在那个路径下,相当于我们Windows系统的添加环境变量。
运行仿真
roslaunch px4 posix_sitl.launch
运行 Mavros
roslaunch mavros px4.launch fcu_url:=“udp://:14540@127.0.0.1:14557”
udp为UDP通信的端口,一个无人机默认端口
运行之后可以启动QGC地面站,自己可以查看各种传感器的数据,我以IMU为类
rostopic echo /mavros/imu/data
其他传感器数据可以使用rostopic list查看