简体   繁体   English

Ardupilot - 无人机套件设置车辆的当前位置

[英]Ardupilot - Dronekit Setting the Current Location of the Vehicle

Hello everybody, hope you are all doing well.大家好,希望你们一切都好。

I am doing in a project in which I receive GPS data (Longitude, and Latitude) from an Android device via an SQL server.我正在做一个项目,我通过 SQL 服务器从 Android 设备接收 GPS 数据(经度和纬度)。 What I am trying to do is to send this Longitude - Latitude data to my SITL vehicle in Ardupilot.我想做的是将这个经度 - 纬度数据发送到我在 Ardupilot 的 SITL 车辆。 I thought about using Dronekit Python API as such:我考虑过这样使用 Dronekit Python API:

from dronekit import connect, VehicleMode

import time
import mysql.connector
import time

#--- Start the Software In The Loop (SITL)
import dronekit_sitl
#
sitl = dronekit_sitl.start_default()   #(sitl.start)
#connection_string = sitl.connection_string()

mydb = mysql.connector.connect(
  host="******",
  user="******",
  password="*****",
  database="koordinat"
)
mycursor = mydb.cursor()

#--- Now that we have started the SITL and we have the connection string (basically the ip and udp port)...
print("Araca bağlanılıyor")
vehicle = connect('tcp:127.0.0.1:5762', wait_ready=False, baud = 115200) 
vehicle.wait_ready(True, raise_exception=False)

#-- Read information from the autopilot:
#- Version and attributes
vehicle.wait_ready('autopilot_version')
print('Autopilot version: %s'%vehicle.version)

#- Does the firmware support the companion pc to set the attitude?
print('Supports set attitude from companion: %s'%vehicle.capabilities.set_attitude_target_local_ned)

vehicle.mode = VehicleMode("GUIDED")
vehicle.armed = True


while(True):

    mycursor.execute("SELECT * FROM koordinat WHERE 1")

    location = str(mycursor.fetchall())
    location = location.split(",")

    location[0] = location[0].replace("[", "")
    location[0] = location[0].replace("(", "")
    location[0] = location[0].replace("'", "")

    location[1] = location[1].replace("[", "")
    location[1] = location[1].replace(")", "")
    location[1] = location[1].replace("'", "")
    location[1] = location[1].replace(")", "")

    # Converting the longitude and latitude to float, before assigning to the vehicle GPS data:

    location[0] = float(location[0])
    location[1] = float(location[1])
    
    # Setting the location of the vehicle:

    vehicle.location.global_frame.lat = location[0]
    vehicle.location.global_frame.lon = location[1]

    print('Konum:', str(vehicle.location.global_frame.lat)+str(","), str(vehicle.location.global_frame.lon)+str(","), str(vehicle.location.global_frame.alt))

   
    #- When did we receive the last heartbeat
    print('Son bilgi gelişi: %s'%vehicle.last_heartbeat)


    time.sleep(1)

However, when I check from the SITL and Mission Planner (also from the print statement from my code) the location does not change;但是,当我从 SITL 和 Mission Planner(也从我的代码的打印语句)检查时,位置没有改变; the simulator simply ignores those commands sent by the Dronekit.模拟器只是忽略了 Dronekit 发送的那些命令。 Is there a working method to accomplish what I am trying to do?有没有一种工作方法可以完成我想做的事情? I tried to change the sim_vehicle.py script which I use to start the simulation.我试图更改用于启动模拟的 sim_vehicle.py 脚本。 But I was only able to change the starting/home location of the vehicle.但我只能更改车辆的起始/起始位置。 I was not able to change the current location of the vehicle on SITL and Mission Planner.我无法在 SITL 和 Mission Planner 上更改车辆的当前位置。

This is incorrect.这是不正确的。 You're modifying the attribute of the vehicle object that's connected to the SITL, not sending any commands to the actual autopilot.您正在修改连接到 SITL 的车辆 object 的属性,而不是向实际的自动驾驶仪发送任何命令。

vehicle.location.global_frame.lat = location[0]
vehicle.location.global_frame.lon = location[1]

What you want to do is set the mode to GUIDED and use the simple_goto function in dronekit to make the drone move to lat/lon/alt coordinates.你想要做的是将模式设置为 GUIDED 并使用 dronekit 中的simple_goto function 使无人机移动到 lat/lon/alt 坐标。

Otherwise, you can also send this MAVLink command SET_POSITION_TARGET_GLOBAL_INT to guide it.否则,您也可以发送此 MAVLink 命令SET_POSITION_TARGET_GLOBAL_INT来引导它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM