mavros的常用服务介绍(怪不得普罗米修斯解锁和切offboard是通过调用服务实现的,PX4官方的offboard示例代码也是通过调用服务切offboard的,原来服务是在MAVROS里写的!)

怪不得普罗米修斯解锁和切offboard是通过调用服务实现的(输入999的方式),PX4官方的offboard示例代码也是通过调用服务切offboard的,我之前还好奇服务是写在哪里的,原来是MAVROS的!!!!

找了下,确实就是的。

https://gitee.com/maxibooksiyi/mavros/blob/master/mavros_msgs/srv/SetMode.srv

见下面这篇博文

https://blog.csdn.net/sinat_16643223/article/details/114060304

转载自:https://blog.csdn.net/zouxu634866/article/details/104112964

mavros的常用服务介绍

总被蚊子叮的小旭 2020-01-30 11:13:21 498 收藏 4

分类专栏: offboard ros

最后发布:2020-01-30 11:13:21首次发布:2020-01-30 11:13:21

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/zouxu634866/article/details/104112964

版权

mavros中,最常用的服务就两个,一个是解锁,还有一个就是模式切换。当然还有其他的服务,比如通过mavros修改航点信息,但是不常用,所以下面只介绍解锁和模式切换,这在前面的博客offboard源码解析里面已经介绍了。


这两种服务的用法参考之前的博客,这里不再赘述,这里补充一下模式切换服务里面可以切换哪些模式,除了offboard模式外还有那些模式。

这里需要用到mavros源码:位置:

/home/zouxu/mavros_ws/src/mavros/mavros/src/lib

当然,这个位置的前提是你在安装mavros时用到了源码安装方式,在电脑上存在mavros的工作空间mavros_ws,如果你没有这个,可以在github上下载源码也还是可以的。

我们打开目录下的:uas_stringify.cpp

它里面有针对apm固件的模式,我们只看px4的固件部分:

//! PX4 custom mode -> string
static const cmode_map px4_cmode_map{
   
   {
	{ px4::define_mode(px4::custom_mode::MAIN_MODE_MANUAL),           "MANUAL" },
	{ px4::define_mode(px4::custom_mode::MAIN_MODE_ACRO),             "ACRO" },
	{ px4::define_mode(px4::custom_mode::MAIN_MODE_ALTCTL),           "ALTCTL" },
	{ px4::define_mode(px4::custom_mode::MAIN_MODE_POSCTL),           "POSCTL" },
	{ px4::define_mode(px4::custom_mode::MAIN_MODE_OFFBOARD),         "OFFBOARD" },
	{ px4::define_mode(px4::custom_mode::MAIN_MODE_STABILIZED),       "STABILIZED" },
	{ px4::define_mode(px4::custom_mode::MAIN_MODE_RATTITUDE),        "RATTITUDE" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_MISSION), "AUTO.MISSION" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_LOITER),  "AUTO.LOITER" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_RTL),     "AUTO.RTL" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_LAND),    "AUTO.LAND" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_RTGS),    "AUTO.RTGS" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_READY),   "AUTO.READY" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_TAKEOFF), "AUTO.TAKEOFF" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_FOLLOW_TARGET), "AUTO.FOLLOW_TARGET" },
	{ px4::define_mode_auto(px4::custom_mode::SUB_MODE_AUTO_PRECLAND), "AUTO.PRECLAND" },
}};

后面所列出来的就是可以切换的模式。

猜你喜欢

转载自blog.csdn.net/sinat_16643223/article/details/114796332