Mavros在线控制 (C++)
注意:本文适用于所有Kerloud无人机产品
mavros ROS程序包可视为运行ROS的计算机、启用MAVLink的无人机和启用MAVLink的地面站三者间的网关,其安装流程可参考: https://dev.px4.io/v1.9.0/en/ros/mavros_installation.html 或 https://github.com/mavlink/mavros/tree/master/mavros#installation. 我们提供了一个现成的工程环境,用户可以在如下目录中开发其应用程序:~/catkinws_open,该目录下包含三个文件夹:mavlink、mavros和off_mission。由于国内网络限制,如果用户想从头开始操作,可能会在尝试访问github资源或 rosdep时出现中断。
鉴于持续的软件更新,工作目录逐步迁移到: ~/src/uav_workspace/catkinws_offboard
Pixhawk设置
为了使能Pixhawk的offboard控制模式,建议用户参照如下网页中的介绍: https://dev.px4.io/master/en/ros/offboard_control.html, https://dev.px4.io/master/en/companion_computer/pixhawk_companion.html。 在我们的环境下,用户可以按如下内容对Pixhawk板载参数进行设置:
针对默认安装的Kerloud mini自驾仪:
如何编译
编译环节我们采用catkin-tools,它比常规的catkin_make快很多。 有关catkin工具的详细信息,请参见:https://catkin-tools.readthedocs.io。 用户可以按以下指令对工程环境进行编译:
编译过程耗时超过十分钟,首次操作请耐心等待。使用如下指令可清除工程环境:
例程代码讲解
off_mission文件夹下的例程实现航点飞行任务。航点信息在yaml文件中定义,其路径为src/ off_mission/launch/waypoints_xyzy.yaml,文件中还包含ENU坐标和相应的偏航值。该软件包支持SITL(软件在环)仿真,用户可以在实际飞行前对自身软件进行测试。 为了描述清晰,我们按顺序对main()函数进行讲解。
(1) 对于订阅、发布和服务信息的声明
我们通常会在main程序的开头对ROS订阅、发布和服务信息进行声明。 mavros软件包中的各类主题、服务易于使用,可用于查询状态信息、发送指令等,细节详见:http://wiki.ros.org/mavros。例如,若要获取飞机的本地位置信息, 则需要订阅mavros/setpoint_position/local主题。需注意,采用ENU(East-North-Up,东北上)坐标系。
(2) 载入航点信息,检查仿真结果
正常通过后,航点数据将从参数管理器中进行加载,并初始化为航点目标。
(3) 在SITL仿真中解锁飞机
实际飞行中,我们只需要解锁飞机、切换到OFFBOARD模式即可开启任务。在SITL仿真中,我们需使用mavros/cmd/arming服务来解锁飞机。
(4) 发布当前航点
程序将通过mavros主题将当前航点坐标发布到无人机。请注意,该主题必须在OFFBOARD模式下一直发布,否则Pixhawk将启动故障安全机制、关闭OFFBOARD模式。
(5) 降落后锁定
到达最终航点并成功降落后,程序将调用mavros/cmd/arming服务自动对飞机进行锁定。
如何使用
软件在环仿真
软件在环仿真(Software In The Loop)需要和PX4固件一起运行,我们推荐用户使用我们维护的版本https://gitee.com/cloudkernel-tech/Firmware,以确保和飞机软件兼容性。
因为依赖特定的软件环境,软件在环仿真目前只支持在安装ubuntu 18.04的PC电脑中运行,而不能直接在机载电脑中运行。详细设置软件环境的说明可以参考http://cloudkernel-tech.gitee.io/kerloud_mini/en/ADVANCEDDEV.html。 用户还需要把位于~/catkinws_open/的整个offmision control软件包迁移到PC中,
假设PX4固件在~/src/Firmware位置,那么基于gazebo的软件在环仿真可以按以下指令启动:
然后通过如下指令启动offboard控制飞机:
实际飞行
实际飞行中,需严格按如下顺序操作以避免出现未知异常:
将带有接口的电池可靠安装到飞机,确保飞行中不会脱落;
确保遥控器所有开关均处于初始位置,且油门降到最低;
电池接通上电;
等待GPS锁星:通常可在2-3分钟后听到提示音,且pixhawk主灯变绿;
确保飞机出于正常待机模式,且飞机周围无人;
按下安全按钮(保持1S)预解锁无人机,按钮指示灯将变为双闪;
机载电脑启动需等待几分钟,通过本地wifi网络进行登录,确认路径~/catkinws_open/src/off_mission/launch/waypoints_xyzy.yaml下的 航行任务,运行如下指令启动offboard控制模块:
提示: 机载电脑也可以在启动期间自动执行offboard任务,用户可将工程目录下的 startup.sh作为参考模板。
同时拉低油门、右推偏航摇杆解锁无人机,解锁成功将听到一次长音提示;
使用指定的摇杆(如通道7)切换到OFFBOARD模式,然后无人机将自动开始航点飞行任务。恭喜飞行成功!
Last updated