精华内容
下载资源
问答
  • Tello 无人机 python 编程

    千次阅读 2020-06-29 09:05:38
    Tello python 编程 添加链接描述 具体看链接吧,https://www.bilibili.com/video/BV1Bg4y1i7MF/ 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新...

    Tello python 编程
    添加链接描述

    具体看链接吧,https://www.bilibili.com/video/BV1Bg4y1i7MF/

    新的改变

    我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

    1. 全新的界面设计 ,将会带来全新的写作体验;
    2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
    3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
    4. 全新的 KaTeX数学公式 语法;
    5. 增加了支持甘特图的mermaid语法1 功能;
    6. 增加了 多屏幕编辑 Markdown文章功能;
    7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
    8. 增加了 检查列表 功能。

    功能快捷键

    撤销:Ctrl/Command + Z
    重做:Ctrl/Command + Y
    加粗:Ctrl/Command + B
    斜体:Ctrl/Command + I
    标题:Ctrl/Command + Shift + H
    无序列表:Ctrl/Command + Shift + U
    有序列表:Ctrl/Command + Shift + O
    检查列表:Ctrl/Command + Shift + C
    插入代码:Ctrl/Command + Shift + K
    插入链接:Ctrl/Command + Shift + L
    插入图片:Ctrl/Command + Shift + G
    查找:Ctrl/Command + F
    替换:Ctrl/Command + G

    合理的创建标题,有助于目录的生成

    直接输入1次#,并按下space后,将生成1级标题。
    输入2次#,并按下space后,将生成2级标题。
    以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

    如何改变文本的样式

    强调文本 强调文本

    加粗文本 加粗文本

    标记文本

    删除文本

    引用文本

    H2O is是液体。

    210 运算结果是 1024.

    插入链接与图片

    链接: link.

    图片: Alt

    带尺寸的图片: Alt

    居中的图片: Alt

    居中并且带尺寸的图片: Alt

    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

    如何插入一段漂亮的代码片

    博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

    // An highlighted block
    var foo = 'bar';
    

    生成一个适合你的列表

    • 项目
      • 项目
        • 项目
    1. 项目1
    2. 项目2
    3. 项目3
    • 计划任务
    • 完成任务

    创建一个表格

    一个简单的表格是这么创建的:

    项目 Value
    电脑 $1600
    手机 $12
    导管 $1

    设定内容居中、居左、居右

    使用:---------:居中
    使用:----------居左
    使用----------:居右

    第一列 第二列 第三列
    第一列文本居中 第二列文本居右 第三列文本居左

    SmartyPants

    SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

    TYPE ASCII HTML
    Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
    Quotes "Isn't this fun?" “Isn’t this fun?”
    Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

    创建一个自定义列表

    Markdown
    Text-to-HTML conversion tool
    Authors
    John
    Luke

    如何创建一个注脚

    一个具有注脚的文本。2

    注释也是必不可少的

    Markdown将文本转换为 HTML

    KaTeX数学公式

    您可以使用渲染LaTeX数学表达式 KaTeX:

    Gamma公式展示 Γ(n)=(n1)!nN\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

    Γ(z)=0tz1etdt. \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

    你可以找到更多关于的信息 LaTeX 数学表达式here.

    新的甘特图功能,丰富你的文章

    Mon 06Mon 13Mon 20已完成 进行中 计划一 计划二 现有任务Adding GANTT diagram functionality to mermaid
    • 关于 甘特图 语法,参考 这儿,

    UML 图表

    可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

    张三李四王五你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!李四想了很长时间,文字太长了不适合放在一行.打量着王五...很好... 王五, 你怎么样?张三李四王五

    这将产生一个流程图。:

    链接
    长方形
    圆角长方形
    菱形
    • 关于 Mermaid 语法,参考 这儿,

    FLowchart流程图

    我们依旧会支持flowchart的流程图:

    Created with Raphaël 2.2.0开始我的操作确认?结束yesno
    • 关于 Flowchart流程图 语法,参考 这儿.

    导出与导入

    导出

    如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

    导入

    如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
    继续你的创作。


    1. mermaid语法说明 ↩︎

    2. 注脚的解释 ↩︎

    展开全文
  • .\n') sock.close() break 我直接给出一个实例,这是连接Dji教育无人机的一段代码,很完整了已经sock.bind(locaddr) 使用bind公开一个端口,使得client可以方便连接 给 创建了一个无人机的地址,IP+端口 可以看到上面...

    TCP 客户端与服务器之间建立连接需要进行三次握手 客户端--->服务器 服务器--->客户端 客户端--->服务器,这样做的好处是可以保证数据的完整缺点是慢.UDP 是用户数据报协议,传输模式是数据报,

    UDP 是无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

    UDP 是简单不可靠的协议,它不提供可靠性,只是把数据包发送出去,并不保证能够到达目的地。由于它不需要在客户端和服务端之间建立连接,也没有超时重发机制,所以传输速度很快。

    UDP 不需要进行三次握手,客户端与服务器之间直接往对方脸上丢数据不管有没有接到,优点是快缺点是无法保证数据的完整.

    UDP数据包一般包含512个字节,当大于512字节时,可能会出现传输不稳定的情况。UDP每个发送的数据都含所有自身的报头,不像TCP那样是流式的数据,所以不存在粘包现象。

    udp的recvfrom是阻塞的,一个recvfrom(x)必须对唯一一个sendto(y),收完了x个字节的数据就算完成,若是y>x数据就丢失,这意味着udp根本不会粘包,但是会丢数据,不可靠。

    tcp 协议的数据不会丢,没有收完的包下一次会接着收取上一次没收完的数据,本端总是在收到ack时才会清除缓冲区内容。数据是可靠的,但是会粘包。

    什么是socket:

    这是为了实现以上的通信过程而建立成来的通信管道,其真实的代表是客户端和服务器端的一个通信进程,双方进程通过socket进行通信,而通信的规则采用指定的协议。socket只是一种连接模式,不是协议,tcp,udp,简单的说(虽然不准确)是两个最基本的协议,很多其它协议都是基于这两个协议如,http就是基于tcp的,.用socket可以创建tcp连接,也可以创建udp连接,这意味着,用socket可以创建任何协议的连接,因为其它协议都是基于此的。

    UDP 传输的流程图

    第一步导入网络编程的库,自带的import socket

    接着就是要调用一个方法socket.socket(AddressFamily, Type)

    就解释一下参数,别的就不说了Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET

    Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)

    前面的名字,按照自己的喜好来import socket

    # 创建udp socket

    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # ...

    # 使用套接字收/发数据

    # 关闭socket

    udp_socket.close()

    上面的代码就是对于UDP的一次完整的调用

    套接字使用流程 与 文件的使用流程很类似:

    1.创建套接字

    2.使用套接字收/发数据

    3.关闭套接字#

    # Tello Python3 Control Demo

    #

    import threading

    import socket

    import sys

    import time

    host = ''

    port = 9000

    locaddr = (host, port)

    # Create a UDP socket

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    tello_address = ('192.168.10.1', 8889)

    sock.bind(locaddr)

    def recv():

    count = 0

    while True:

    try:

    data, server = sock.recvfrom(1518)

    print(data.decode(encoding="utf-8"))

    except Exception:

    print('\nExit . . .\n')

    break

    print('\r\n\r\nTello Python3 Demo.\r\n')

    print('Tello: command takeoff land flip forward back left right \r\n up down cw ccw speed speed?\r\n')

    print('end -- quit demo.\r\n')

    # recvThread create

    recvThread = threading.Thread(target=recv)

    recvThread.start()

    while True:

    try:

    msg = input("")

    if not msg:

    break

    if 'end' in msg:

    print('...')

    sock.close()

    break

    # Send data

    msg = msg.encode(encoding="utf-8")

    sent = sock.sendto(msg, tello_address)

    except KeyboardInterrupt:

    print('\n . . .\n')

    sock.close()

    break

    我直接给出一个实例,这是连接Dji教育无人机的一段代码,很完整了已经sock.bind(locaddr)

    使用bind公开一个端口,使得client可以方便连接

    创建了一个无人机的地址,IP+端口

    可以看到上面的tello_address是作为一个参数的函数使用.# 发送数据

    send_addr = ('192.168.92.190', 7878)

    udp_socket.sendto(send_data.encode('GBK'), send_addr)

    如果是字符集在两个目标上面不一样,还可以去更改编码模式

    此时先下载一个调试工具,随便下载import socket

    def main():

    # 创建套接字

    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 读取输入的数据

    send_data = input('请输入要发送的数据:')

    # 发送数据

    send_addr = ('192.168.92.190', 7878)

    udp_socket.sendto(send_data.encode('GBK'), send_addr)

    # 关闭

    udp_socket.close()

    if __name__ == '__main__':

    main()http://www.zlmcu.com/document/tcp_debug_tools.html

    我上面的软件没有调试出来,我换了一个软件,调试成功

    这个地方用wireshark看一下

    选择内部的回环接口

    设置这里看见是BSD

    这个地方输入三个1,a,b

    位置信息

    可以看到是这个地址确实发了三次信息

    打开看看

    数据31,长度1

    可以用ifconfig看看自己的ipimport socket

    def main():

    # 创建套接字

    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 绑定一个本地信息

    localaddr = ("", 8080)

    udp_socket.bind(localaddr)

    # 接收数据

    recv_data = udp_socket.recvfrom(1024)

    # recv_data是一个元组(接收到的数据, (发送方的IP, port))

    recv_msg = recv_data[0] # 存储接收到的数据

    send_addr = recv_data[1] # 存储发送方的地址

    # 打印收到的消息

    # print(recv_data)

    print("%s:%s" % (str(send_addr), recv_msg.decode('GBK')))

    # 关闭

    udp_socket.close()

    if __name__ == '__main__':

    main()

    这段代码是接收代码,写的很明白

    udp端口绑定一个udp网络程序,运行时没有绑定端口,系统会给它分配一个随机的端口,如果再次运行,端口可能发生变化

    一个udp网络程序,也可以绑定信息(ip地址,端口号),如果绑定成功,那么操作系统用这个端口号来进行区别收到的网络数据是否是此进程的

    什么时候需要绑定端口呢?

    一般来说,如果要做成一个服务端的应用程序的话,是需要绑定固定端口的。

    python3中的编码转换使用socket发送的是数据的二进制,需要将字符串转换成bytesstr.encode()使用socket接收的是数据的二进制,需要将bytes转换成字符bytes.decode()

    展开全文
  • Python编程

    2020-03-20 22:36:07
    Python编程 ctime:2020-03-19 23:47:37 +0900|1584629257 标签(空格分隔): 技术 ...之前用Python无人机的仿真,为了写得舒服一点,在里面也实现了一些元编程的东西,这里记录一下。 调用父类的某函数...

    Python元编程

    ctime:2020-03-19 23:47:37 +0900|1584629257

    标签(空格分隔): 技术


    元编程其实Ruby比较出名,因为Ruby的语法糖实在太多了,而且Ruby的对象模型比Python纯净,因此经常来说用Ruby来作为元编程的介绍。

    之前用Python写无人机的仿真,为了写得舒服一点,在里面也实现了一些元编程的东西,这里记录一下。

    • 调用父类的某函数:super().__init__()调用父类的初始化函数。

    • 运算符重载

      • Python的运算符重载比较麻烦,按照定义为特定的函数名,如+的运算符函数为__add__(self,other),还有__radd__(self,other),与add的区别是,本函数中,other是作为+的第二个操作数的。当调用+函数的时候,Python会先调用第一个函数的__add__(),如果找不到,就调用第二个操作数的__radd__()。关于加法,还有一个__iadd__(self,other),该函数重载的是+=。需要注意的是,本函数定义的时候要仔细考虑一下要返回一个新对象还是在源对象基础上做更改。
    • 其他运算的操作也跟+差不多,就不一一列举了。

    • __getattr__(self,name)__setattr__(self,name,value),这两个函数用于定义给对象的属性赋值的情况。需要注意的是,__getattr__会在对象找不到某个方法或者属性是调用,可以用来实现元编程中的Missing Method。 __setattr__则在每次对属性赋值的时候调用,需要注意,即使在__init__对属性赋值,也是会调用__setattr__的。

    • 实现像Ruby那样,方法即属性。如在Ruby中写Obj.x,是不需要知道x到底是一个方法还是一个属性的。Python也可以实现,可以在类中定义一个def x(self)函数。默认情况下,如果要调用这个函数,需要使用Obj.x()才能调用。那么可以在函数定义上面,加上@property,则可以直接使用Obj.x来调用。

    • 重定义某属性的赋值函数。在Ruby中的写法是def x=(value),在Python中是定义一个def x(self,value),同时在上面加上@x.setter

    • Python的类初始化顺序,首先是调用__new__函数,调用完之后,会生成一个对象,但此时类的属性都还没初始化。在__new__函数中,会再调用__init__(self)函数,其中self这个参数传进去的就是刚生成的对象。

      • 例子:在仿真中,写了一个Vector3,是三维的矢量类,为了不自己实现矩阵的运算,让它继承了numpy.ndarray。正常来说作为子类,是调用父类的__init__来初始化,但是numpy.ndarray的初始化直接在__new__完成了,它并没有写__init__函数(可以在其手册找到关于这个的说明),因此我们也只要重写__new__就行,至于__init__,就用Object类的就行,我们不用管。
          def __new__(cls, *args, **kwargs):
            buffer=np.array(args[0],dtype=np.float)
            return super().__new__(cls,(3,),buffer=buffer)
        
        def __eq__(self, other):
            return super(object).__eq__(other)
        
        • 附带实现了一个__eq__函数,因为numpy中判断矩阵是否相等,是没有用==函数的,必须用.all或者.any,来判断到底使矩阵完全一样,还是只要有一个元素一样。但我只想判断是否是同一个对象,因此直接调用Object的__eq__就行了。

    适当使用元编程的思想,还是可以让Python写起来很快乐的。

    例子可以看看:https://github.com/Ncerzzk/UAV_Sim/blob/master/physics.py

    展开全文
  • 开发人员招聘平台CodinGame的最新年度调查已发布。... 这不是秘密,开发人员喜欢Python! 在调查中,有35.97%的受访者说这是他们最喜欢的编程语言。 还请参见: 在第二和第三位,我们可以看...

    无人机开发编程python

    开发人员招聘平台CodinGame的最新年度调查已发布。 2020年开发人员调查报告中 ,向参与者询问了他们对编程语言的偏爱,工作的幸福感等等。

    首先,让我们回答这个紧迫的问题:什么是最受欢迎的编程语言,什么是最可怕的编程语言?

    最喜欢的编程语言

    这不是秘密,开发人员喜欢Python! 在调查中,有35.97%的受访者认为这是他们最喜欢的编程语言。

    还请参见:

    在第二和第三位,我们可以看到流行语言JavaScript(29.48%)和Java(29.10%)之间的激烈竞争。 C#紧随其后,占24.98%,C ++紧随其后,占24.26%,C占13.15%。 参与调查PHP中有11.47%的开发人员喜欢PHP。

    查看十大最受欢迎的语言:

    资料来源: CodinGame

    最可怕的编程语言

    爱与恨之间的界限很短,因此,一些最受欢迎的语言也是最可怕的语言之一。

    最心爱的语言荣登榜首,因为受访者超过四分之一(25.10%)的7害怕PHP。 前三名的其余部分看起来非常熟悉,因为Java的恐惧率为23.93%,JavaScript的恐惧率为21.29%。 甚至是开发人员最喜欢的Python,也排在第9位(8.39%)。

    亲自了解十种最可怕的语言:

    资料来源: CodinGame

    开发人员最快乐的地方在哪里?

    开发人员很高兴,但是有些人比其他人更快乐。 CodinGame仔细研究了他们所工作的国家,位置和行业的影响,幸福感的等级从0到10。

    事实证明,开发人员总体上对他们的工作感到满意,因为他们的平均评分为7,但有些国家的评分甚至更高。 最幸福的开发商位于英国(7.40),而加拿大(7.38),美国(7.33),巴西(7.16)和德国(7.14)的评分也高于平均水平。

    还请参见:

    排名最高的行业是技术(7.29),媒体(7.28)和教育(7.22)。 满意度最高的职位是数据科学家/机器学习专家(7.30)和游戏开发人员/工程师(7.29)。 教师,教育者,培训者或学术研究人员的开发人员职位(7.23)排名第三。

    客层

    来自全球的21,000多名开发人员参加了CodinGame 2020开发人员调查报告。 代表最多的五个国家是法国(27%),美国(15%),印度(15%),德国(10%)和俄罗斯(8%)。 大多数受访者年龄在20至34岁之间(64.09%),并且全职工作(50.13%)或正在学习(31.34%)。 尽管女性参与者仍然只占11.5%的一小部分,但这一数字与去年的调查中的8.7%相比有所上升。

    有关更多详细信息,请参见完整报告

    翻译自: https://jaxenter.com/codingame-2020-developer-survey-166930.html

    无人机开发编程python

    展开全文
  • 导语概要哈尔滨童程童美教育培训智能机器人编程,小编在这里为您推荐的是哈尔滨童程童美教育智能机器人编程培训,让机器人陪伴中国儿童成长,锻炼学生的多方面能力的课程,是知名品牌,名师执教、通俗易懂、深受广大...
  • DIY一个基于树莓派和Python无人机视觉跟踪系统

    万次阅读 多人点赞 2017-02-02 21:26:15
    DIY一个基于树莓派和Python无人机视觉跟踪系统 无人机通过图传将航拍到的图像存储并实时传送回地面站几乎已经是标配。如果想来点高级的——在无人机上直接处理拍摄的图像并实现自动控制要怎么实现呢?其实视觉...
  • 机器人Python极客编程入门与实战电子书售价:¥纸质售价:¥40.70购买纸书866人正在读 | 2人评论6.3作者:出版社:出版时间:2017-08-01字数:4.6万温馨提示:此类商品不支持退换货,不支持下载打印为你推荐读书简介...
  • Python的应用 常规软件开发 科学计算 Numpy模块,2D、3D图形等 自动化运维 自动化测试 WEB开发 网络爬虫 模块支持 数据分析 人工智能 智能家居,智能语音,人脸识别,无人驾驶无人机等。 2.1.3 Python语言的特色 ...
  • 有哪些python写的游戏python编程游戏有哪些?给介绍几款由Python开发的游戏:1. Github上面项目Free Python Games,里面了不少的Python开发的小游戏,能玩,也适合新手用来练练手,另外 PyGame 这个网站里面里面集合...
  • 来源:Python中文社区 智能无人机路径规划仿真系统是一个具有操作控制精细、平台整合性强、全方向模型建立与应用自动化特点的软件。它以A、B两国在C区开展无人机战争为背景,该系统的核心功...
  • 省人工智能和创意编程教学研讨会学习心得博兴乐安实验学校刘凯月11月28日到29日为期两天的人工智能和创意编程的教学研讨会学习活动结束了,我有幸参加了这次会议,活动内容十分丰富,我也学习到了很多东西。...
  • Python是全球前4的流行编程语言之一,因其具有语法简洁、功能强大、上手简单等特点,在人工智能、云计算开发、大数据开发、数据分析、科学运算、网站开发、爬虫、自动化运维、自动化测试和游戏开发等领域得到了广泛...
  • Python是一门简单优雅的计算机程序设计语言,相比于C语言、Java语言,Python编程具有以下特点: 1. Python语法简单,代码可读性高,容易入门; 2. Python代码具有一定的规范性,初学者可根据代码规则规范代码书写...
  • 无人机Python SDK使用

    千次阅读 2021-03-09 12:59:14
    无人机Python SDK SDK主要通过Wi-Fi UDP协议与无人机连接,让用户可以通过文本指令控制无人机,共享文件夹的Python SDK文件夹中的Tello3.py文件包含了一个基于Python建立UDP通信端口的程序样例,可以实现与Tello的...
  • DIY一个基于树莓派和Python无人机视觉跟踪系统无人机通过图传将航拍到的图像存储并实时传送回地面站差点儿已经是标配。假设想来点高级的——在无人机上直接处理拍摄的图像并实现自己主动控制要怎么实现呢?事实上...
  • python编程无人机,其实一点也不复杂。步骤为以下几点: 安装python以及Python IDLE的基础操作 阅读无人机的相关sdk 安装无人机相关库 接下来就是写代码编程啦 一:安装python(这里以win作为案例) 1.下载安装包:...
  • blender不仅仅可以通过软件的UI界面用鼠标和键盘手工建模,也可以通过python编写程序自动批量建模。 如果你用过EXCEL VBA,你就会知道,VBA这种通过编写宏来自动化操作EXCEL非常方便,就像为EXCEL插上了双翼,爽到...
  • 虽然python是当今的热门编程语言,在云计算、大数据、人工智能、web端都有广泛应用,学习python可以从事的工作岗位很多,发展前景也很广阔的,但是计划学习python的学习者对就业和学费仍然十分关注,为了方便大家...
  • 迷你世界迷你编程是一款简单易学图形化编程软件,软件采用图形化的编程方式,过程就像组合积木一样简单,不但可以帮助青少年学习基础的编程知识,也提高了数学逻辑思维能力,还可以让孩子们感受到创造三维立体世界的...
  • 我司无人机入选湖北省中小学竞赛设备 我司无人机入选湖北省中小学竞赛设备 一、活动主题 电脑制作活动的主题是实践、探索与创新。旨在丰富中小学生学习生活,提升学生信息素养,全面推进素质教育,培养具有创新...
  • python编程---example23

    2019-09-11 13:40:01
    filename = '../learning_python.txt' with open(filename) as f: lines = f.readlines() for line in lines: line = line.rstrip() print(line.replace('python','C'))

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,936
精华内容 774
关键字:

python无人机编程

python 订阅