使用无人机套件在任务规划器上显示GPS路线(通过航路点)

2024-09-26 18:07:30 发布

您现在位置:Python中文网/ 问答频道 /正文

希望你们都做得很好。我现在正在做一个导航项目。根据起点和目标位置,我使用开放式路线服务创建GPS路线。我有路线的坐标(横向和纵向)(大约有50个航路点)。我有没有办法把这些坐标逐一添加到任务计划(Ardupilot)中?我的意思是我不想要自动导航。我只想让路线显示在任务计划表上。我尝试创建一个任务,但是车辆(ArduRover)自动移动,我在任务规划器上看不到路线-顺便说一句,车辆只是向前移动,没有跟随我的路线。例如,我将向您展示我的代码:

import openrouteservice
import folium
from openrouteservice.directions import directions
import json
import itertools
import pickle
import numpy as np
import matplotlib.pyplot as plt
from geopy.geocoders import Nominatim
from dronekit import connect, VehicleMode, LocationGlobalRelative, Command, LocationGlobal
from pymavlink import mavutil

print('Connecting...')
vehicle = connect('tcp:127.0.0.1:5762')
vehicle.mode = VehicleMode("AUTO")

coords = ((vehicle.location.global_relative_frame.lon, vehicle.location.global_relative_frame.lat),(28.87180, 41.00560))
client = openrouteservice.Client(key='hidden for safety purposes') # Specify your personal API key

geometry = client.directions(coords)['routes'][0]['geometry']
decoded = openrouteservice.convert.decode_polyline(geometry)
coordsArray = np.zeros((len(decoded["coordinates"]), 2))
for i in range(len(decoded["coordinates"])):
    coordsArray[i][0] = decoded["coordinates"][i][1]
    coordsArray[i][1] = decoded["coordinates"][i][0]

cmds = vehicle.commands
cmds.download()
cmds.wait_ready()
# Save the vehicle commands to a list
missionlist=[]
# Modify the mission as needed. For example, here we change the
# first waypoint into a MAV_CMD_NAV_TAKEOFF command.

for i in range(len(coordsArray)):
    cmd = Command(0,0,0, mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT,
    mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 0, 0, 0, 0, 0, 0,coordsArray[i, 1], coordsArray[i, 0], 100)

    missionlist.append(cmd)
# Araca yükleniyor...
missionlist[0].command=mavutil.mavlink.MAV_CMD_NAV_TAKEOFF
cmds.clear()
for cmd in missionlist:
    cmds.add(cmd)
cmds.upload()

此脚本的结果是车辆(漫游者)仅向前行驶,而不遵循路线。此外,我无法在任务规划器上看到预先计算的路线。你能帮我吗


Tags: fromimportcmdforservice路线decodedcmds

热门问题