RoboMaster SDK解读.2

这个是车子的直接控制模式

也可以通过路由器拥连接

中间因为有了路由器,所以有了更加稳定的数据传输链路

也可以用喜闻乐见的UART来连接,什么?你居然不爱串口???

这里也给出了串口连接的接线图

pip install robomaster

如果网络较差,多次都安装失败,可以尝试:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple robomaster

以上是在Win系统下安装SDK的执行命令

当使用WIFI直接连接以后

from robomaster import robot

if __name__ == '__main__': # 如果本地IP 自动获取不正确,手动指定本地IP地址 # robomaster.config.LOCAL_IP_STR = "192.168.2.20" ep_robot = robot.Robot()
# 指定连接方式为AP 直连模式 ep_robot.initialize(conn_type='ap')
version = ep_robot.get_version() print("Robot version: {0}".format(version)) ep_robot.close()

执行以上code会打印SDK的版本

Robot Version: xx.xx.xx.xx

就像这样


https://en.wikipedia.org/wiki/RNDIS

NDIS是指Remote NDIS,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡。

UDP 使用具有最小协议机制的简单无连接通信模型。UDP提供数据完整性的校验和,以及用于在数据报的源和目标寻址不同函数的端口号。它没有握手对话,因此将用户的程序暴露在底层网络的任何不可靠的方面;没有交货、订购或重复保护的保证。如果在网络接口级别需要纠错功能,应用程序可以使用为此目的设计的传输控制协议(TCP) 或流控制传输协议 (SCTP)。

UDP 适用于不需要错误检查和更正或在应用程序中执行错误检查和更正的用途;UDP 避免了协议堆栈中此类处理的开销。时间敏感的应用程序通常使用 UDP,因为丢弃数据包比等待由于重新传输而延迟的数据包更可取,在实时系统中,这可能不是一个选项。

TCP是面向连接的 ,在发送数据之前建立客户端和服务器之间的连接。在建立连接之前,服务器必须侦听(被动打开)来自客户端的连接请求。三向握手(主动打开)、重新传输和错误检测增加了可靠性,但延长了延迟。不需要可靠数据流服务的应用程序可以使用用户数据报协议 (UDP),该协议提供无连接数据报服务,将时间置于可靠性的优先级。TCP 采用网络拥塞避免。但是,TCP 存在漏洞,包括拒绝服务、连接劫持、TCP否决和重置攻击。

看这里只支持UDP通信

netstat -an

本机端口打印

懂了。两个参数,发射什么子弹,以及射几个,之前先建立一个对象

import timefrom robomaster import robotfrom robomaster import blaster

if __name__ == '__main__': ep_robot = robot.Robot() ep_robot.initialize(conn_type="sta")
ep_blaster = ep_robot.blaster
# 发射1颗水弹 ep_blaster.fire(times=1) time.sleep(2)
# 发射3颗水弹 ep_blaster.fire(fire_type=blaster.WATER_FIRE, times=3) time.sleep(2)
# 发射1颗红外子弹 ep_blaster.fire(fire_type=blaster.INFRARED_FIRE) time.sleep(2)
# 发射3颗红外子弹 ep_blaster.fire(fire_type=blaster.INFRARED_FIRE, times=3) time.sleep(2)
ep_robot.close()

代码通俗易懂,一开始库是为了释放资源用

接下来发射系统和时间库相搭配,延时射击各种类型的炮弹

接下来又是一个控制底盘的,先建立对象

然后设置速度,后面三个参数是运动参数

以及超时stop的机制,我写SDK的时候要重点考虑

from robomaster import robotif __name__ == '__main__': ep_robot = robot.Robot()    ep_robot.initialize(conn_type="sta")    ep_chassis = ep_robot.chassis x_val = 0.5 y_val = 0.6    z_val = 90 # 前进 0.5米    ep_chassis.move(x=x_val, y=0, z=0, xy_speed=0.7).wait_for_completed() # 后退 0.5米    ep_chassis.move(x=-x_val, y=0, z=0, xy_speed=0.7).wait_for_completed() # 左移 0.6米    ep_chassis.move(x=0, y=-y_val, z=0, xy_speed=0.7).wait_for_completed() # 右移 0.6米    ep_chassis.move(x=0, y=y_val, z=0, xy_speed=0.7).wait_for_completed() # 左转 90度    ep_chassis.move(x=0, y=0, z=z_val, z_speed=45).wait_for_completed() # 右转 90度    ep_chassis.move(x=0, y=0, z=-z_val, z_speed=45).wait_for_completed()    ep_robot.close()

先看这段,导包我就不说了

接下来是__main__方法,因为这段代码当做一个独立的PY文件区运行

接着是初始化,机器的是一种什么样的媒介被控制

接下来新建一个对象,接着是三个常量

这是三个量的作用

我们就看一个语句,调用move方法

只有前进有值,速度0.7

这段里面的干货就比较多。这里可以提炼的知识有,对于未来的SDK设计方面,可以抽象出一种任务类型,就是需要一段时间才能执行完毕~


  1. 考虑信息回应,在发出任务后,执行机构回馈收到。执行时回馈开始执行并加入执行时间统计,以及相关时间计数。

(0)

相关推荐

  • 怎样做出正确选择 EP081

    自己有清晰明确的价值观的吗?

  • 你真正懂得自己和别人吗? EP008(下)

    你也能做出比麦当劳更好的汉堡包吧!

  • 什么真正决定了你的选择?EP079

    方向不对努力白费,你最初选择的时候已经确定下来了你最终的那个结果.

  • 大疆的全新RoboMaster-EP能够兼容乐高?有意思啊!

    今天无意中看到大疆的最新产品发布会,提到了即将推出市场的RoboMaster-EP.这是个什么玩意?在我看来,根本就是个成人高精度可编程机器人啊! 我记得去年大疆公布机甲大师 ROBOMASTER S ...

  • RoboMaster SDK解读.1

    对于这次的比赛的这个平台我有点蒙???不太会用 这个是TT飞行,完全是积木式的.我还是喜欢Mnid+可以看到生成的代码 在挨打反击的界面有两段,这是第一段 里面一些模块的意思我也看不懂 看字面意思就好 ...

  • RoboMaster SDK 解读.4

    我们不可能把所有的API都看完,就按照我未来要写一套机器人的系统来看 首先可以看到这个的class是最大的robomaste的类,后面是**kw 到目前为止我们遇到看第一个知识点,为什么要在这里设计一 ...

  • RoboMaster SDK 解读.3

    家中布偶猫镇楼 import timefrom robomaster import robotfrom robomaster import ledif __name__ == '__main__': ...

  • Robomaster SDK源码解读.Camera.上

    先搜索关键字 在这里 对应的引入的库,机器库 相机的库,里面有TT 开始读这个camera的源码,主要是要了解是有什么方法. 我主要是要一个逐帧的方法,因为需要算法去处理每一帧的照片 里面主要是有三个 ...

  • Robomaster SDK安装(Win10+Py3.8)

    这个是dji官网里面自带的开发工具库,如果不是写C++的话 建议就直接安装就行 这个是下载的Github的库文件,后面的两个文件在安装前记得执行 你可以选择默认值 也可以选择自我的安装(话好像不顺口) ...

  • Mind+安装Robomaster SDK

    http://mindplus.cc/ mind+已经自带Python了,但是还需要一些简单的配置 打开以后点击这个Python模式 接着我们点击库,然后点PIP模式 在此之前我们换个源,建议豆瓣源, ...

  • Robomaster SDK源码阅读.5

    一位读者催更了很长时间的文章,想看robomaster SDK的源码解读,有点感动,就我的水平居然还有人想看. 其实我写这个还是比较小众的 https://github.com/dji-sdk/Rob ...

  • Dji RoboMaster Tello SDK封装.4(打包,安装)

    最后安装格式,你得写一个init得文件来完成SDK最后得编写 分别是包名,作者名字,授权方式,版权,版本,以及库中包含得文件 import setuptoolswith open('README.md ...

  • Dji RoboMaster Tello SDK封装.3(回复指令解包类)

    老规矩,时间库+一个统计大类 初始化一些关于时间的的类变量 这里插一个Python列表的使用技巧,[:1]就是将当前列表的第一个元素丢掉 这个是类里面的所有的函数 我们这个函数倒着看,就是先看应用的地 ...