类人双足机器人腿部设计资料

根据bing的回答:

人肌肉功率:

人肌肉功率是指人体肌肉收缩时所能输出的功率,也就是力和速度的乘积。根据1,人类肌肉最大收缩时产生的力量范围较大:23~145 psi (16~100 N/cm2)。根据2,人类个体能达到的最大输出功率大约是5千瓦。

人大腿的功率是指人体在骑自行车等运动时,大腿肌肉所能输出的功率。根据1,专业运动员的瞬时功率可以达到1500瓦以上,一般人的连续功率是70瓦左右。根据2,人大腿的功率可以用以下公式计算:

P = (2π/60000)TN

其中P是功率,T是扭矩,N是转速。

根据新的想法,通过软件模拟时可以给出最大功率/扭矩一个非常大的上限,然后通过训练来寻找可用的最小瞬时功率/扭矩和持续功率/扭矩。无需给出真实世界的预设,按照此想法现在可以立刻构建虚拟训练环境。

bing的一些建议:

使用虚拟环境进行机器人训练是一种有效的方法,可以节省成本、提高安全性、增强鲁棒性。根据1,虚拟环境可以模拟复杂的物理现实,让机器人在不同的条件下进行强化学习。根据2,虚拟环境还可以用于验证实体系统的准确性和可靠性,以及发现潜在的缺陷和风险。根据3,虚拟环境中的训练算法需要考虑模拟条件的随机性和多样性,以提高算法的泛化能力和适应能力。

使用虚拟环境进行机器人训练的建议有:

  • 选择合适的虚拟环境平台,如Unreal Engine、Unity等。
  • 设计合理的奖励函数和惩罚函数,以引导机器人学习正确的行为。
  • 利用迁移学习或元学习等技术,将虚拟环境中学到的知识应用到真实环境中。
  • 在真实环境中进行定期测试和评估,以检验虚拟环境中训练效果的有效性。

希望这些信息对你有帮助。😊

我选择了用unity,对机器的要求低一些:

对不起,我可能误解了你的意思。如果你是想要虚拟机器人训练用的框架,那么你可以考虑使用Unity ML-Agents12,这是一个基于Unity的机器学习框架,可以让你用强化学习、模仿学习、神经进化等方法来训练智能代理,并且可以将训练出的模型部署到真实世界中的机器人上1。有一些项目已经使用了Unity ML-Agents来训练足球机器人12,四足机器人3,机械臂3等。

希望这些信息对你有帮助。😊

官网: Unity-Technologies/ml-agents:Unity Machine Learning Agents Toolkit (ML-Agents) 是一个开源项目,它使游戏和模拟能够作为使用深度强化学习和模仿学习训练智能代理的环境。 (github.com)

OpenAI 的 ChatGPT 食用方法

1、网址: https://chat.openai.com, 目前免费

2、账号,自行注册(需要国外手机号,或者通过付费手机号接码平台),或者淘宝购买:https://m.tb.cn/h.UiAteOF?tk=t0YYd3nq2my

3、登录/注册前需要设置好🪜,此处不提供🪜(香港的不行,如果不是香港的仍然报在该国家不支持的错请尝试将🪜开启全局模式),

出现图中错误则代表🪜没配置正确

4、登录成功后即可随意使用啦,问一些预测的问题他是不会回答的,有一些绕过去的方法,大家可以网上自行搜索

命令行通过 FFMPEG视频压缩、转码

经过调研目前来说,下述参数最适合,并且自动码率

./ffmpeg 

-i 1.mov //输入

-s 720×1280 // 分辨率

-pix_fmt yuv420p // yuv 8bit

-r 30 // 30帧

-vsync vfr // 动态帧率

-preset placebo // 转码速度

-crf 20 // 质量 18以下几乎无损,越大质量越差(现实里发现用28质量也蛮好的,  在移动设备上)

output.mp4 //输出文件名称

举例:./ffmpeg -i 我的影片.mp4 -s 1920×1080 -pix_fmt yuv420p -r 25 -vsync vfr -preset slow -crf 28 我的影片_output28.mp4

iOS 工程(XCode)生成UML类图 (Swift, Objective-C)

只支持swift:

https://github.com/MarcoEidinger/SwiftPlantUML

https://github.com/yoshimkd/swift-auto-diagram

只支持OC:

https://github.com/kimsungwhee/KSHObjcUML

都支持:

https://github.com/L-Zephyr/Drafter

(直接写代码来解析swift的类等)(可以用,项目大的时候渲染类图会卡死)

无用代码查找:

https://cloud.tencent.com/developer/article/1857943

https://codeantenna.com/a/NZ8YKpl2dY

http://www.helloted.com/ios/2021/07/13/unusedMethod/

https://juejin.cn/post/6844903921169727496

https://www.jianshu.com/p/d31f38e28b48

https://github.com/dblock/fui

https://juejin.cn/post/7023946428569354254

https://www.jianshu.com/p/de03ea15f399

https://struggleblog.com/2021/01/04/remove_useless_code_and_resource/

https://github.com/woshiccm/Pecker

解决swift符号解析时出现类似乱码的问题

实际上是由于”命名重整”技术导致的,每个符号都有其特殊含义,避免命名冲突。

英文专业名词叫做: name mangling

详细解析见: https://blog.csdn.net/skylin19840101/article/details/51425216

译自: https://www.mikeash.com/pyblog/friday-qa-2014-08-15-swift-name-mangling.html

Friday Q&A 2014-08-08: Swift Name Mangling

by Gwynne Raskind 

自从我写上一篇的周五问答文章,已经过去了很长一段时间,但今天,我继续写一篇周五问答的文章,用一种全新的理念介绍一个全新的主题:Swift语言。在过去的几篇文章中, Mike一步一步深入的介绍了Swift的内部结构是什么样子,但他也只是稍微触及到了程序链接时使用的Swift二进制文件的符号特点:mangled symbol names(重整符号名称)。

C/C++

在比如C这样的语言中,任何给定的名字(符号)只能对应唯一的一个函数或数据,不需要名字重整(name mangling)。即便如此,如果你看一个典型的纯C二进制的符号表,你会发现每个函数名有一个_(下划线)的前缀。例如:

$ echo 'int main() { return 0; }' | xcrun clang -x c - -o ./test    $ xctest nm ./test    0000000100000000 T __mh_execute_header    0000000100000f80 T _main                     U dyld_stub_binder    $

这种简单的“mangling”(重整)已有很长的历史,实际上没有多少用处,但仍为兼容性和一致性起到一些效果。按照惯例,C中定义的名字会有下划线,而纯汇编定义的全局符号则没有(尽管许多汇编语言的作者为了一致性,也会预先考虑下划线的定义)。      

对于Objective-C语言来说,它的符号名字不会有异议或者说冲突;Objective-C的方法实现的形式是: -[class selector],并且objective – c不允许相同的类使用不同的参数来重载相同的selectors。

 好吧,让我们来看一下重整名字的例子!   

一个没有额外信息的简单的名字可能会产生异议,所以必须做一些处理。下面我们来看一看C++的例子:

$ cat | xcrun clang -x c++ - -o test    int foo(int a) { return a * 2; }    int foo(double a) { return a * 2.0; }    int main() { return foo(1) + foo(1.0); }    ^D    $ xcrun nm -a test    0000000100000f30 T __Z3food    0000000100000f10 T __Z3fooi    0000000100000000 T __mh_execute_header    0000000100000f60 T _main                     U dyld_stub_binder

因为foo对应两个包含不同参数的函数,这在c++中是合法的定义,所以我们不能简单地生成两个_foo符号,因为链接器会不知道如何链接,无法区分不同的函数实现。因此,c++编译器使用一组严格的编码规则“mangles”(重整)了符号。

跟C和objective – C不一样,C++和Swift函数符号以名字本身来命名,就不足以区分一个函数的不同实现,带有不同的参数类型(比如,foo(int)和foo(双))的同名函数,需要更多信息来区分。如果使用代码中定义的全部参数信息(比如“foo(int)”),那么会在连接器中产生很多额外的代码;并且当多个类型名称映射到同样的基本类型时(如unsigned和unsigned int),也会产生混淆。所以,在c++中,使用了一些晦涩难懂的类型定义和转换规则,其结果是编译器和链接器能流畅的工作,不会有丝毫混淆。这个处理逻辑跟Swift比较类似。

上面的foo的例子的符号解释如下:

1. 首先,最前面的 ‘_’ 表示这是C风格的符号。   

2. 其次, ‘_Z’, 这个前缀标记这个符号是一个mangled(重整)的全局C++名字。   

3. 接下来的数据定义了函数名字包含的字符的个数;在本例中,3foo意味着“foo”这个名字,有三个字符。   

4. 字符’d’和’i’分别对应基本的’double’和’int’数据类型,返回值不属于c++函数命名的一部分,所以参数列表简单地反映函数的全名。

想获取更多的关于经典C++编译器重整名字的内容,请参考 Itanium C++ ABI documentation.

Swift

这些都是非常有趣的,但真正切入Swift正题,前面已经讲了很多C、C++的内容。

Swift的名字重整技术与c++有些不同。Swift使用的编码基于c++的名字重整规则,但它包含更多的信息和概念,以适用于一个更成熟的类型系统。      

我会使用一个复杂的例子,它是故意那样构造的,并且完全跟Swift无关的代码:

$ xcrun swiftc -emit-library -o test -        struct e {                enum f {                        case G, H, I                }        }        class a {                class b {                        class c {                                func d(y: a, x w: b, v u: (x: Int) -> Int) -> e.f {                                        return e.f.G                                }                        }                }        }        ^D        $ xcrun nm -g test        ...        0000000000001c90 T __TFCCC4test1a1b1c1dfS2_FTS0_1xS1_1vFT1xSi_Si_OVS_1e1f    ...    $

我们来看看:  __TFCCC4test1a1b1c1dfS2_FTS0_1xS1_1vFT1xSi_Si_OVS_1e1f

下面一步一步分析:

1. 最开始的字符’_’对Swift符号是必须的

2. ‘_T’是Swift全局符号的标记

3. ‘F’标记这个符号的类型是一个函数Swift编程实战 iOS应用开发实例及完整解决方案pdf2星超过40%的资源110.34MB下载

4. ‘C’代表了这是一个“class”类型,在我们的例子里,需要处理三个嵌套的类,所以‘C’出现了三次

5. ‘4test’是模块名,类名有三个,’1a’,’1b’,’1c’

6. 此时此刻,Swift创建了解析类名的堆栈,‘1d’后将查找’f’。从里到外,test.a, test.a.b, testa.a.b.c是类名。由于’1d’没有对应的嵌套类型(因为只有三个C),所以它成为了符号名字-test.a.b.c.d的最里面的部分

7. 小写的’f’标记这个符号是一个”uncurried function”类型,

8. Because we’re now parsing a function type, the list of argument types comes next, followed by the return type. For an uncurried function type, the curried parameter(s) come first. S2_ is a substitution, meaning it will use the third non substituted typeencountered during parsing of the name thus far (the index is zero-based). In this case, this would be test.a.b.c (the third class type).

9.’F’标记函数参数列表的开始。显而易见,名字重整技术是围绕着类型来展开的。

10.’T’标记一个’tuple’的开始,它是一个类型列表

11. S0_ is a substitution of the first type encountered in parsing, in this case test.a; the first parameter has this type.

12. 1x is the external name of the second parameter. Notice that Swift does not encode internal names as part of the mangled signature.

13. S1_ is a substitute of the second type encountered in parsing, in this case test.a.b; the second parameter has this type and the name x.

14. 1v is the external name of the third parameter.

15. F marks the start of another function type.

16. T marks the start of another tuple, the function’s parameters (the function type is unnamed).

17. 1x is the external name of the closure’s first parameter.

18. Si is Swift.Int, a shorthand for the Int builtin type.

19. _ marks the end of the closure’s arguments tuple.

20. Si is another Int, the closure’s return type

21. _ marks the end of the uncurried function’s arguments tuple.

22. O marks the start of an enum type.

23. V marks the start of a struct type, which will contain the enum. (As we saw with the classes earlier, types are nested from the inside out in mangled names).swift ios开发最新教程zip0星超过10%的资源177.78MB下载

24. S_ substitutes the (only) seen module name, test. Notice that this is not a type substitution!

25. 1e is the name of the struct.

26. 1f is the name of the enum.

27. The parser sees the end of the mangled name and unwinds through the two parsed names as it did with the class names earlier.

解决方法

按照这个规则自己去还原符号也是可行的,不过还是比较费时,还可能有bug。

幸好Xcode 自带了个工具, 可以查看这些 mangled name 的本来面目,就不需要自己重新去实现这个原理了:

<span style="font-size:14px;">xcrun swift-demangle __TFV5hello4Rectg9subscriptFOS_9DirectionSi _TFV5hello4Rectg9subscriptFOS_9DirectionSi ---> hello.Rect.subscript.getter (hello.Direction) -> Swift.Int </span>

总结

Object-C类似于C语言,Swift类似于C++,有函数重载,有虚函数表,需要命名重整。

参考:

1. Swift 内部机制浅析

2. Swift Name Mangling

3. 简述Swift和C的交互

4. Swift reverse engineering

iOS 16 Beta版下载安装方法 & XCode14 Beta下载

一、iOS 16 Beta版下载安装方法

1、确保手机是iPhone8及以后的机型

2、使用手机相机扫描二维码, 安装描述文件:

3、安装描述文件完成后系统会要求重启手机,重启手机后进入 设置 -> 通用 -> 软件更新 即可更新升级到最新的iOS 15 Beta版的系统,体验最新自定义锁屏功能 👍

笔者已经安装成功😋

二、XCode14 Beta下载

https://moemiku.com/download/Xcode_14_beta.xip