如何使用DJI OSDK ROS控制主题进行位置控制?

时间:2020-04-03 15:54:21

标签: ros dji-sdk

在过去的几个月中,我和我的团队一直在努力充分利用DJI的OSDK。我们正在应用程序中使用其ROS wrapper。正在运行ROS Melodic。

我们已经成功地研究和试验了它的几乎所有方面,除了一个方面:命令 position 偏移量。

首先,进行一些设置-只是为了排除一些建议。我们在使用控制主题之前先运行此代码:

roslaunch dji_sdk sdk.launch
rosservice call /dji_sdk/set_local_pos_ref
rosservice call /dji_sdk/drone_task_control "task: 4"
rosservice call /dji_sdk/sdk_control_authority "control_enable: 1"
简而言之,我们启动OSDK ROS包装器,将本地参考框架设置为无人机的当前位置,发送起飞命令,然后将控制权交给车载计算机。

那是问题开始的时间。我可以将问题分解为以下两个命令,但均无法按预期工作:

rostopic pub /dji_sdk/flight_control_setpoint_generic sensor_msgs/Joy '{header: auto, axes: [10.0, 0.0, 3.0, 0.0, 145.0]}' -s -r 5 

或者:

rostopic pub /dji_sdk/flight_control_setpoint_generic sensor_msgs/Joy '{header: auto, axes: [10.0, 0.0, 3.0, 0.0, 145.0]}' -s -1

第一个以5Hz频率发布主题,第二个仅发布一次。

第一个将不断更新设定值,从而将其推离无人机并因此永远无法达到其目标。我们尝试过这种想法,认为它会被解释为我们设置的本地框架中的一个设定点,但是它似乎设置在由无人机收到消息后的位置所定义的框架中。

第二个发送一次。无人机开始向设定点移动,但是大约一秒钟后,它停止移动。我想如果没有更新,有一个故障保护功能可以使其停止移动。

请您帮忙找到使用此控制主题的正确方法,或者找到我们解释中的错误。谢谢您的帮助!

0 个答案:

没有答案
相关问题