wkwghzbc 2024-04-20 10:15 采纳率: 0%
浏览 18

dronekit实现通信

img

                ktoD:/testspython3                                                connect.Py
 Traceback                 <(mostrecentcallLast):
    File       /home/wkk/test/connect.Py",Line1,in<module>
        fromdronekitimportconnect
    FLLe/us/ocal/lib/python3.10/dist-packages/dronekit/_init_·Py",Line2689
    in<modulez
         CLassParameters(collections.MutableMapping,Hasobservers):
 AttributeError:module                                                                         hasno  ecollections                                             attributeMutableMapping

想用dronekit实现树莓派与pix飞控的通信 但就卡在这一步了 佬们 帮俺看看咋改呢?

  • 写回答

7条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-20 10:15
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试使用DroneKit-Python库连接Pixhawk飞控板,但是在导入dronekit模块时遇到了一个错误,这个错误提示说collections模块没有名为MutableMapping的属性。实际上,在Python标准库的collections模块中,应该是有一个名为MutableMapping的抽象基类(Abstract Base Class, ABC)。这个问题可能是由于你的Python环境中的collections模块版本过低,或者是有其他原因导致的。

    为了解决这个问题,可以按照以下步骤操作:

    1. 首先,确认一下你的Python环境是否正确安装了DroneKit-Python库。如果没有安装,可以通过pip进行安装:
    pip install dronekit
    
    1. 如果已经安装,检查一下是否有多个版本的Python或DroneKit-Python存在于系统中,这可能会引起冲突。确保你使用的Python是3.x版本,并且只存在一个DroneKit-Python版本。

    2. 检查你的Python环境是否正常工作,尝试运行一个简单的Python脚本,比如打印"Hello World!",确认环境无误。

    3. 确保你的代码文件名不是connect.py,因为这是DroneKit的一个内置模块名称,可能会引发命名冲突。将你的脚本重命名为其他名字,例如drone_connection.py

    4. 尝试更新Python的collections模块或者其他可能引起冲突的模块,尽管这通常不会是一个问题,但如果所有上述步骤都无法解决,可以试一试:

    pip install --upgrade collections
    
    1. 最后,如果你仍然遇到问题,建议你创建一个新的虚拟环境(venv),并在这个新环境中仅安装DroneKit-Python,这样可以避免与其他项目或已安装软件的冲突。以下是创建和激活虚拟环境的命令:
    python3 -m venv my_dronekit_env
    source my_dronekit_env/bin/activate
    pip install dronekit
    

    在新的虚拟环境中运行你的脚本,看是否能解决问题。

    下面是一个基本的DroneKit-Python连接Pixhawk的示例代码,用于参考:

    # 注意:确保你的设备连接正确,波特率设置为115200
    import time
    from dronekit import connect
    
    def main():
        connection_string = "udp:127.0.0.1:14550"  # 这个地址可能需要根据实际物理连接进行调整
        print("Connecting to vehicle on: %s" % connection_string)
        vehicle = connect(connection_string, wait_ready=True)
    
        while True:
            print("Altitude: %f meters" % vehicle.location.alt)
            time.sleep(1)
    
    if __name__ == "__main__":
        try:
            main()
        except KeyboardInterrupt:
            print("Shutting down")
            vehicle.close()
            exit(0)
    

    将这段代码保存到drone_connection.py,然后在虚拟环境中运行它:

    python3 drone_connection.py
    

    如果你仍然遇到问题,请提供更详细的错误信息,以便我能进一步协助你。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月20日

悬赏问题

  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题