应用程序接口 (API)
Last updated
Was this helpful?
Last updated
Was this helpful?
我们为Kerloud无人机系列的开发提供开源API,可选的API接口将会支持C++、python及其他语言,详情会在本部分持续更新。 请注意,我们假设用户熟悉 ROS 的基本概念,不了解的用户建议阅读中的官方教程。
ROS(Robot Operating System)中的 API 是基于PX4 社区的官方实现的。
我们维护的资源库为:
mavros(dev_kerlouduav 分支):
mavlink(dev_kerlouduav 分支):
请注意,offboard控制演示代码仅随 Kerloud 机器提供,因此不是开源的。更多编程细节将在教程部分 中阐述。本文介绍我们 Kerloud 无人机案例中常用的话题和服务。
可以通过订阅该主题来获取当前的无人机状态,消息类型在定义。 我们可以相应地获取着陆状态,例如:如果landed_state等于LANDED_STATE_IN_AIR,则无人机在空中。
举例来说,假定我们要对机体进行解锁,则需要三个步骤。
第 1 步,我们必须定义服务客户端:
第2步,我们定义arm命令如下:
第3步,我们可以调用服务了:
与 C++ 版的 ROS API 类似,ROS python API 也是基于我们维护的 mavros 和 mavlink 包来。唯一的区别是上面提到的所有主题和服务都应基于python 使用。
我们维护的资源库为:
move(x,y,z, BODY_FLU=False):请求机体移动到 FLU 坐标系或 ENU坐标系下定义的所需位置。
turn(yaw_degree):请求飞行器在飞行过程中转向所需的偏航角。
land():请求机体着陆。
hover():请求机体悬停在当前位置。
arm():请求机体解锁。
disarm():请求机体上锁。
return_home(height):请求机体返回。
该主题用于在本地或全局坐标系下发布位置设定值,然后无人机将被引导至所需位置。请注意,ROS 中使用的坐标系为ENU坐标系,而自驾仪中使用NED坐标系。消息类型则分别为或。
这两个主题可用于在本地坐标系中发布速度设定点,车模式和多旋翼模式下通用。它们间的唯一区别是在速度信息中是否带有时间戳。消息类型为。
该服务用于设置无人机的各种模式,如上锁/解锁、设置offboard模式等。消息类型为。
mavros(dev_kerlouduav 分支):
mavlink(dev_kerlouduav 分支):
offboard控制例程代码也随 Kerloud 机器一起提供,在教程部分中有详细阐述。为简洁起见,低级别消息通信在 Px4Controller 类中处理,而用于用户编程的友好 API 则包装在 Commander 类中,部分列举如下: