【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台3
吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成本的简易机器人呢?也许只需要二十元左右
知识点:轮子(wheel)
中国词语。是用不同材料制成的圆形滚动物体。简单来说,它包括轮子的外圈、与外圈相连接的辐条和中心轴。透过滚动,轮子可以大大的减少与接触面的磨擦系数。如果配上轴,即成为车的最主要构成部份。轮子在交通运输中非常有用,是人类的重要发明之一。除了车轮以外,其他圆形的轮还有船轮、飞轮等等。
任何简单而意义深远的发明都不是凭空出现在人们的脑海中的,必然有什么现象触发了灵感。正如古人见到水里漂着的木头而想到独木舟一样,车轮的发明也可能是受到了一些自然物的启发。《淮南子》中说我们的祖先“见飞蓬转而知为车”。“飞蓬”是一种草,其茎高尺许,叶片大,根系入土浅。一有大风,很容易被连根拔起,随风旋转。古人可能就是受到这个现象的启发,发明了车轮和车轴。与鲁班受锯齿草的启发而发明锯子的传说一样,这种说法很可能也是一个传说而已。因为轮子在自然界是有原型的。原始民族曾经普遍地崇拜过天空中的日月。古人一定认为它们拥有最完美的外形——直到古希腊时代,哲学家柏拉图也还认为球体是最完美的形式。也许新石器时代的先民在制作器具时很自然地会模仿太阳和月亮的形状。当他们偶然发现制成的圆盘状物体可以在转动中保持形状不变时,他们就有兴趣进一步发掘它的用途。
在掌握锋利而坚固的工具以前,人类是不可能拥有轮式车辆的。用石器工具难以将木头加工成合适的圆柱形,更不必说复杂到带辐条的轮子了。所以,车轮的出现只能是青铜时代以后的事情。
据英国科学史家李约瑟考证的结论,约在四千五百年到三千五百年前,中国出现了第一辆车子。而《左传》中提到,车是夏代初年的奚仲发明的,如果记载属实,那是四千年前的事情。在殷代(距今三千多年前)文物中,考古学家也发现了殉葬用的车,当时的车子由车厢、车辕和两个轮子构成,已经是比较成熟的交通工具了。中国古代有传说是轩辕黄帝把木头插在圆轮子中央,使它运转,因而造成车辆。但鉴于归功于黄帝的发明实在太多,我们也不能轻易把这个说法当真。
以埃及的战车为例。这些战车具有带辐条的车轮,轮上装有坚固的箍,并且车轮用锲子紧紧钉在轴上。车厢、车辕和两副挽具证明了同样的技术。如果我们想从在埃及战车或罗马战车的创造者那里所看到的那种精细活计探求人类发明带轮车的过程,那是没有什么益处的。但是,常常有这种情况:能够找到一些制作粗糙的物品,而这些物品就好像是技术之早期阶段的再现。古代最简陋的乡村大车,用两个几乎一英尺厚的圆形木作车轮,是用横断的树干做成的,同时,这些圆形物,或者叫车轮,不是在轴上旋转,而是固定在轴上。车轴安放在特制的木框内,或者是在两块窄木板内,或者是穿在车底上的环孔里,同它的一对轮子一起转动,就像小孩儿的玩具车那样。有趣的是,在条件已经改变的情况下,铁路车辆的制造者们又恢复了这种构造。
在像葡萄牙这样一些国家里,现今还可以看到轴和车轮一起转动的古典车子。于是可以设想:类似的大车说明,带轮的车是怎样发明的。最初用的是轴,或滚子,是用它们来滚动大石头或其他巨大的重物。我们可以想象,用光滑的树干或圆木做的这类滚子,起初是这样完成的:把它的中间部分削细一些。于是,它就变成了一个两端带着宽圆滚的轴。我们猜想,轴是处在某一种最简陋的梁木架下,并在架下转动的。于是我们就有了一辆最简单的想象中的带轮车。完全可能,类似关于车的第一个概念出现之后,轮就开始单独制造,并把它固定在一个活动的轴上,装上了轮箍。后来,有了轻便的车轮和光滑的轮座,于是车轮就在不动的轴上转动了。当然,所有这些,无非是一种想象,但是,无论如何,它使我们的头脑完全清楚了车的本质。
安装好四个N20小电机,希望以此作为一个简单的实验平台,试试各种不同的运动方式
二套电源系统(3.7V升压为5V),二个电机驱动模块MX1508,Arduino nano
快餐盒盖的空间有点小
第六种 筒轮
找到四个卷纸的中心轴,纸筒
安装好四个筒轮
【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
第六种 筒轮
找到四个卷纸的中心轴,纸筒
https://v.youku.com/v_show/id_XNTEwMDU4NjU5Mg==.html?spm=a2hzp.8244740.0.0
第七种 双柄棒轮
使用了四根大号的雪糕棒,轴孔放在当中
四根棒轮立起来了
【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
第七种 双柄棒轮
使用了四根大号的雪糕棒,轴孔放在当中(测试视频)
https://v.youku.com/v_show/id_XNTEwMDYyMTY0NA==.html?spm=a2hzp.8244740.0.0
【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
第八种 麦克纳姆轮
找了四个麦轮,也不知这种十字轴动力系统是否可行,试试看吧
在网络上搜索了一下,找到二张麦轮方向安装图
好像都是平行轴的麦轮运行结构,而我这个机器人测试平台是十字轴结构,估计有问题
我的是十字轴结构
找到一张介绍轮子受力的图
安装了四只60毫米的麦克纳姆轮
【花雕动手做】快餐盒盖,极低成本搭建机器人实验平台
第八种 测试麦克纳姆轮
实验之一,效率最高的是自转(视频)
https://v.youku.com/v_show/id_XNTEyMTQzMzQ0NA==.html
测试麦克纳姆轮的动态图
实验之二,也能行走的十字轴麦克纳姆轮小车(视频)
https://v.youku.com/v_show/id_XNTEyMTQzMzk5Ng==.html
测试麦克纳姆轮行走的动态图
相关链接:
【雕爷学编程】Arduino动手做(184)—快餐盒盖,极低成本搭建机器人实验平台
https://blog.csdn.net/weixin_41659040/article/details/132116761
【雕爷学编程】Arduino动手做(184)—快餐盒盖,极低成本搭建机器人实验平台2
https://blog.csdn.net/weixin_41659040/article/details/132118525
【雕爷学编程】Arduino动手做(184)—快餐盒盖,极低成本搭建机器人实验平台3
https://blog.csdn.net/weixin_41659040/article/details/132118549
相关文章:

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台3
吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成本的简易机器人呢?也许只需要二十元左右 知识点:轮子(wheel) 中国词语。是用不同材料制成的圆形滚动物体。简…...
redis String类型命令
Redis的String类型是一种简单的键值对数据结构,常用的String类型命令有: SET key value:设置指定key的值为value。GET key:获取指定key的值。DEL key:删除指定key及其对应的值。INCR key:将指定key的值加1…...

Blazor 简单组件(0):简单介绍
文章目录 前言说明环境安装 前言 Blazor 这个技术还是比较新,相关的UI组件还在完善,我这里提供一下我个人的组件开发。 说明 本UI组件是基于BootstrapBlazor(以下简称BB)开发。 BootstrapBlazor 文档 环境安装 C#小轮子:Visual Studio自…...

在vue3+vite项目中使用jsx语法
如果我掏出下图,阁下除了私信我加入学习群,还能如何应对? 正文开始 前言一、下载资源二、利用vite工具引入babel插件总结 前言 最近在为部署人员开发辅助部署的工具,技术栈是vue3viteelectron,在使用jsx语法时&#x…...
HCIA 路由器工作原理 及其 静态路由配置
目录 1、路由器工作原理 2、获取未知网段的方法: 3、静态路由 1)写法: 2)扩展配置 a、环回接口 配置命令: 环回接口的作用: b、手工汇总 手工汇总作用: c、路由黑洞 d、缺省路由 配置…...

【Git】—— git的配置
目录 (一)忽略特殊⽂件 (二)给命令配置别名 (一)忽略特殊⽂件 在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎么让Git知道呢…...

[git] git基础知识
git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目 git易于学习,性能极快 什么是版本控制? 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况,可以记录文件修改历史…...
【从零学习python 】15.深入了解字符串及字符集编码
文章目录 字符集字符和编码相互转换编码规则 学习目标成员运算符in运算符not in 运算符 进阶案例 字符集 计算机只能处理数字(其实就是数字0和数字1),如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bi…...

【LeetCode】打家劫舍||
打家劫舍|| 题目描述算法分析编程代码 链接: 打家劫舍|| 在做这个题之前,建议大家做一下这个链接: 按摩师 我的博客里也有这个题的讲解,名字是按摩师 题目描述 算法分析 编程代码 class Solution { public:int maxrob(vector<int>nums,int left,…...
【Nginx】Nginx的重定向——location
location 匹配URI location 匹配的规则和优先级;***重点 nginx常用的变量;要求掌握 rewrite 重定向;掌握/理解 location匹配:*** 正则表达式:匹配的是文件内容 常见的正则表达式:…...

每日一题——滑动窗口的最大值
滑动窗口的最大值 题目链接 暴力解法 最容易想到的当然还是通过两层循环来暴力求解:一层循环用来移动窗口,一层循环用来在窗口内找到最大值。这种做法的时间复杂度为O(kN),会超出时间限制,因此,我们要找到更加高效的…...

【使用go开发区块链】之获取链上数据(03)
上篇文章,我们完成了数据库的连接,本章节,我们将完成ethclient的配置以及初始化 1、ethclient配置 1.1、安装go-ethereum 在命令行终端输入下面代码安装: go get github.com/ethereum/go-ethereum1.2、Ethclient配置 1.2.1、新…...
js 动态设置transformOrigin
transformOrigin属性用于指定元素变换的原点。 // 获取要设置的元素 const element document.getElementById(your-element-id);// 设置transformOrigin属性 element.style.transformOrigin 50% 50%; // 以元素中心为原点// 或者使用变量来设置 const x 0; // x坐标 const …...
docker使用tab无法自动补全命令
本文参考链接 一、安装bash-complete 在线安装 yum install -y bash-completion二、刷新文件 source /usr/share/bash-completion/completions/docker source /usr/share/bash-completion/bash_completion...

既然jmeter也能做接口自动化,为什么还需要pytest自己搭框架?
今天这篇文章呢,我会从以下几个方面来介绍: 1、首先介绍一下pytest框架 2、带大家安装Pytest框架 3、使用pytest框架时需要注意的点 4、pytest的运行方式 5、pytest框架中常用的插件 一、pytest框架介绍 pytest 是 python 的第三方单元测试框架&a…...
Objective-C获取变量类型的方法
在Objective-C中,要获取一个对象的类型,可以使用[object class]方法。这将返回一个Class对象,表示该对象的类型。 另外,typeid是C中的关键字,用于获取一个变量的类型信息。在Objective-C中,typeid并不适用于…...
相机可见区域,使用鼠标拖拽模型
知识点 向量射线检测坐标转换 思路 使用射线检测获取射线检测点与模型对象之间的偏移量 (世界空间)使用相机的坐标转换获取检测点与鼠标位置之间的偏移量 (屏幕空间)拖拽时,更新模型位置 代码示例 using UnityEng…...
Vue 2 与 Vue 3 的全面比较
Vue 2 与 Vue 3 的全面比较 1. 性能提升 Vue 3 的性能得到了显著提升。虚拟 DOM 已经重写,使补丁过程更快。 对比: Vue 3 使用了基于 Proxy 的新观察者机制,取代了 Vue 2 的基于 Object.defineProperty 的观察者。 Object.definePropert…...
Unity学习笔记--如何优雅简便地利用对象池生成游戏对象(进阶版)LRU + 对象池
前言 之前写过一篇关于对象池的文章,现在来看写的并不是很好,所以来考虑优化下。 现在来看一年前写的代码,越看越不能入目hhh Unity学习笔记–如何优雅简便地利用对象池生成游戏对象 前置知识 Unity学习笔记–使用 C# 开发一个 LRU 代码实…...

【Spring专题】Bean的声明周期流程图
前言 我向来不主张【通过源码】理解业务,因为每个人的能力有限,甚至可能会因为阅读错误导致出现理解上的偏差,所以我决定,还是先帮大家【开天眼】,先整体看看流程图,好知道,Spring在写源码的过…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...

鸿蒙Navigation路由导航-基本使用介绍
1. Navigation介绍 Navigation组件是路由导航的根视图容器,一般作为Page页面的根容器使用,其内部默认包含了标题栏、内容区和工具栏,其中内容区默认首页显示导航内容(Navigation的子组件)或非首页显示(Nav…...
Linux中INADDR_ANY详解
在Linux网络编程中,INADDR_ANY 是一个特殊的IPv4地址常量(定义在 <netinet/in.h> 头文件中),用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法,允许套接字监听所有本地IP地址上的连接请求。 关…...
宠物车载安全座椅市场报告:解读行业趋势与投资前景
一、什么是宠物车载安全座椅? 宠物车载安全座椅是一种专为宠物设计的车内固定装置,旨在保障宠物在乘车过程中的安全性与舒适性。它通常由高强度材料制成,具备良好的缓冲性能,并可通过安全带或ISOFIX接口固定于车内。 近年来&…...

STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)
文章目录 PWRPWR(电源控制模块)核心功能 电源框图上电复位和掉电复位可编程电压监测器低功耗模式模式选择睡眠模式停止模式待机模式 修改主频一、准备工作二、修改主频的核心步骤:宏定义配置三、程序流程:时钟配置函数解析四、注意…...