RoboMaster SDK 解读.4

我们不可能把所有的API都看完,就按照我未来要写一套机器人的系统来看

首先可以看到这个的class是最大的robomaste的类,后面是**kw


到目前为止我们遇到看第一个知识点,为什么要在这里设计一个这样玩的参数,一定是有原因的。┓( ´∀` )┏

https://www.cnblogs.com/hoaprox/p/9481877.html

在python中定义函数,可以使用一般参数、默认参数、非关键字参数和关键字参数。

*args和**kw分别属于非关键字参数和关键字参数,后两者也都是可变参数。

非关键字参数的特征是一个星号*加上参数名,比如*number,定义后,number可以接收任意数量的参数,并将它们储存在一个tuple(元组)中。

关键字参数的特征是两个星号**加上参数名,比如**kw, 定义后,kw将接收到的任意数量参数存到一个dict(字典)中。

关键字参数是在传递构成中不必按照顺序传递(因为dict内的key-value是没有顺序的),但必须要提供”传递参数名=传递参数值”形式的参数。

这段代码便是显示

*,你传输的什么样的数据,打印的就是什么内容


python中的一般参数、默认参数、非关键字参数和关键字参数可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:一般参数、默认参数、可变参数和关键字参数,先后顺序不能颠倒。即:

def func(a, b, c=0, *args, **kw): pass

我们用到函数'calculate_sum’,但'calculate_sum’需要多个位置参数作为元组传给’args’。所以在函数'ignore_first_calculate_sum’需要拆元组'iargs’,然后将元素作为位置参数传给'calculate_sum’.注意,用’*’拆元组。

所以,我们这样用'required_sum=calculate_sum(*iargs)’.'required_sum=calculate_sum(iargs)’不能这么调用,因为传给’calculate_sum’之前我们需要unpack数值。不使用’*’将不会unpack数值,也就不能执行想要的动作。

这个是我们最后的一个例子

我们再说一下这个API的作用,在所有的任务里面都需要执行,所以这个功能是一定要被设计的,注意到是,返回值是一个bool

装甲

首先是一个转换用的函数,将具体的部位转换成int量

https://docs.python.org/zh-cn/3/library/enum.html

Python内的枚举很少见,我查一下


枚举是与多个唯一常量值绑定的一组符号名(即成员)。枚举中的成员可以进行身份比较,并且枚举自身也可迭代。

枚举是由 class 句法创建的,这种方式易读、易写。

还有互逆的操作

这个是设置装甲的灵敏度,这个不懂是如何实现的。是传感器吗?

接着这个API是打击函数,是设计成回调函数了。也好理解,因为你不知道什么时候会接收打击事件~

https://zhuanlan.zhihu.com/p/110031082

在Python里面因为没指针,所以一个函数可以作为另一个函数的参数

就是一个回调函数了~

带有额外状态的回调函数,异步回调

这里带额外信息的回调函数是print_result。

注意:这里print_result只能接收一个result的参数,不能传入其他信息。当想让回调函数访问其他变量或者特定环境的变量值的时候会遇到问题。

我们可以绑定一个新函数来访问

可以看到这些名词,其实这个是ROS系统里面的名词

按照设计,MCU是STM32,性能不足以跑ROS,所以说只能是借鉴

已经看到这个底盘的API了,想写一点麦轮的东西

、为什么不在汽车上面装麦轮

麦轮的全向移动是在每一个麦轮的滚子单独接触地面时分解速度实现的,也就是说如果在崎岖不平的地面就会造成无法分解速度,从而无法横向移动,所以麦轮自身路面要求比较高。所以,就没有普及开来

这个是设置麦轮的速度的代码,我们可以看到控制起来还是很麻烦的

这个是控制一个车到指定的位置

以及是6路的PWM驱动

以及底盘的状态的订阅,我不清楚为什么是飞行器的一些指标

这个理解起来不难,小车有4个电调

这个底盘也有一个陀螺仪的信息~陀螺仪的作用是稳定

这段代码好有趣,未来SDK一定要集成这段

显示车辆当前的速度分量

(0)

相关推荐

  • 教你一招 | Python: 函数参数魔法

    函数参数 在 Python 中,定义函数和调用函数都很简单,但如何定义函数参数和传递函数参数,则涉及到一些套路了.总的来说,Python 的函数参数主要分为以下几种: 必选参数 默认参数 可变参数 关 ...

  • Python学习—函数

    刚开始学习Python函数的时候,觉得自己C语言用的很溜,Python函数应该没啥难度,结果越学越觉得自己就是孤陋寡闻,不明白的,一知半解的东西太多,觉得自己这几年完全荒废了,丧失了学习的劲头:还好在 ...

  • python函数的参数类型总结

    定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号,然后在缩进块中编写函数体,函数的返回值用return语句返回. def power(x, n=2): ...

  • Python学习——函数及调用

    经过之前Python学习--十分钟入门Python一文的学习相信大家对于Python都有了大概的了解.这节课芒果带大家一起来学习Python函数. 函数是带名字的代码块,用来完成某项具体任务的.当我们 ...

  • 大大雷Python零基础课程第七节:函数

    https://m.toutiao.com/is/eHxD4oe/ 函数是组织好可以重复使用的一个代码块,能够在编程中有效地提高代码复用率.函数可以有参数,也可以没有参数, 函数的参数可以是任意数据类 ...

  • RoboMaster SDK解读.2

    这个是车子的直接控制模式 也可以通过路由器拥连接 中间因为有了路由器,所以有了更加稳定的数据传输链路 也可以用喜闻乐见的UART来连接,什么?你居然不爱串口??? 这里也给出了串口连接的接线图 pip ...

  • RoboMaster SDK解读.1

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

  • 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]就是将当前列表的第一个元素丢掉 这个是类里面的所有的函数 我们这个函数倒着看,就是先看应用的地 ...