typeerror - 使用 Python 在 Microsoft AirSim 上进行线程处理会引发类型错误
问题描述
注意:我最初在机器人论坛上发布了这个问题,但是,由于我没有收到任何答案,所以我也想在这里发布。实际上,我相信我收到的错误与我尝试使用我的线程有关。
希望每个人都做得很好。
我刚刚开始使用 AirSim 进行一些计算机视觉模拟。现在我正在尝试使用 Python 实现用于导航目的的线程。
作为起点,我想创建 2 个线程:其中一个将打印四轴飞行器的当前位置,而另一个将发送 moveOnPathAsync 命令。
这是我的代码:
import threading
from airsim.types import YawMode
from msgpackrpc.client import Client
import airsim
import time
client = airsim.MultirotorClient()
client.reset()
client.confirmConnection()
client.enableApiControl(True)
def logState():
print(client.simGetGroundTruthKinematics().position)
def move():
client.moveOnPath([airsim.Vector3r(125,0,-5),
airsim.Vector3r(125,-60,-5),
airsim.Vector3r(125,-90,-5),
airsim.Vector3r(125,0,-5)],
12, 1000,
airsim.DrivetrainType.ForwardOnly, airsim.YawMode(True,0), 20, 1).join()
wind = airsim.Vector3r(-10, -10, -10)
client.simSetWind(wind)
camera_pose = airsim.Pose(airsim.Vector3r(0, 0, 0), airsim.to_quaternion(-1.57, 0, 0))
client.simSetCameraPose(0, camera_pose)
client.armDisarm(True)
print("Araç kalkışa hazırlanıyor...")
client.takeoffAsync().join()
time.sleep(0.2)
t2 = threading.Thread(target=move, args=[client])
t1 = threading.Thread(target=logState, args=[client])
t2.start()
t1.start()
但是,当我运行此脚本时,我的两个线程都收到错误“TypeError:move() / logState() 采用 0 个位置参数,但给出了 1 个”。我错过了什么?
我还需要问最后一件事。我可以创建一个使用异步方法进行模拟的线程吗?我读到有人说创建包含异步方法的线程可能会有问题。
解决方案
推荐阅读
- python-3.x - 字符串的条件排列
- gcc - libavcodec.a(vc1dsp_mmx.o):针对符号“ff_pw_9”重定位 R_X86_64_PC32
- regex - 使用 cpp11 正则表达式时出现正则表达式错误
- swift - 自定义 UIPickerView 栏 Swift
- android - 如果我的应用程序在我的 Android Studio 模拟器上运行缓慢,我的应用程序在设备上是否会运行缓慢?
- java - 在尤里卡服务器中添加尤里卡客户端时出错,客户端模块无法启动
- mysql - mysql concat csv 从两列转换成密钥对
- ios - Apple 如何在 iOS 12 的 iBooks 应用中为一本书创建阴影效果?
- sql - 我可以在这个维度模型中改进什么?
- mysql - Calculate billing usage for current month