ESP32(MicroPython) 四足机器人(五)功能补充

这篇具有很好参考价值的文章主要介绍了ESP32(MicroPython) 四足机器人(五)功能补充。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本次更新增加了前后倾斜(每次动作交换前部和后部高度)、蹲起与抬脚动作,均位于用于连续执行动作的function函数中,但实测抬脚动作需要先启动function函数的另一项功能才能正常开启,代码检查无误,应该是MicroPython固件的bug。另外,对于判断功能,增加了elif语句的使用,避免重复使用if语句以提高运行效率。

程序如下

import time

from machine import SoftI2C,Pin

from servo import Servos

import _thread

i2c=SoftI2C(sda=Pin(9),scl=Pin(8),freq=10000)

servos=Servos(i2c,address=0x40)

 

servos.position(0,90)

servos.position(1,90)

servos.position(2,90)

servos.position(3,90)

servos.position(4,90)

servos.position(5,90)

servos.position(6,90)

servos.position(7,90)

servos.position(8,120)

servos.position(9,120)

servos.position(10,120)

servos.position(11,120)

time.sleep(1)

 

Height1=0 #前部高度,0为最高

Height2=0 #后部高度,0为最高

mode=0

delay=300

 

def straight(angle): #直行,给所有转向舵机写入相应角度以调整方向

    servos.position(0,angle)

    servos.position(1,angle)

    servos.position(2,angle)

    servos.position(3,angle)

 

def turn(angle): #倾斜

    servos.position(0,angle)

    servos.position(1,angle)

    servos.position(2,180-angle)

    servos.position(3,180-angle)

    

def tilt(height1,height2): #前后倾斜,局部变量与全局变量通过大小写区分

    servos.position(4,90-height1)

    servos.position(5,90-height1)

    servos.position(6,90-height2)

    servos.position(7,90-height2)

    servos.position(8,120-height1-height1) #底部舵机使用两倍偏置以确保平衡

    servos.position(9,120-height1-height1)

    servos.position(10,120-height2-height2)

    servos.position(11,120-height2-height2)

    

def crawl(step,angle): #爬行,第一个参数为步骤数,第二个参数为相比直立状态降低的角度,步长随第二个参数的增大而增大

    if step==1:

        servos.position(4,90-angle-angle)

        servos.position(7,90-angle)

    if step==2:

        servos.position(5,90-angle-angle)

    if step==3:

        servos.position(6,90-angle-angle)

    if step==4:

        servos.position(4,90-angle)

        servos.position(5,90-angle)

        servos.position(6,90-angle)

        servos.position(7,90-angle-angle)   

def walk(step,angle): #步行,第一个参数为步骤数,第二个参数为相比直立状态降低的角度,步长随第二个参数的增大而增大

    if step==1:

        servos.position(4,90-angle-angle)

        servos.position(5,90-angle)

        servos.position(6,90-angle)

        servos.position(7,90-angle-angle)

    if step==2:

        servos.position(4,90-angle)

        servos.position(5,90-angle-angle)

        servos.position(6,90-angle-angle)

        servos.position(7,90-angle)

 

i1=0

i2=0

def function(i1, i2): #功能函数,执行连续进行的动作

    global mode

    global delay

    global Height1

    global Height2

    while True:

        if Height1>45: #参数超出范围时设为最大值

            Height1=45

        if Height2>45: #参数超出范围时设为最大值

            Height2=45    

        if mode==0 or mode>6: #不执行功能

            Step=0 #步数复位            

        elif mode==1: #爬行功能

            if Step==0:

                tilt(Height1,Height1) #先降低高度

                Step=1 #改变变量的值以进入下一步骤

            elif Step==1:    

                crawl(1,Height1)

                Step=2

            elif Step==2:    

                crawl(2,Height1)

                Step=3

            elif Step==3:    

                crawl(3,Height1)

                Step=4

            elif Step==4:    

                crawl(4,Height1)

                Step=1

        elif mode==2: #爬行功能(反向)

            if Step==0:

                tilt(Height1,Height1) #先降低高度

                Step=4 #改变变量的值以进入下一步骤

            elif Step==4:    

                crawl(4,Height1)

                Step=3

            elif Step==3:    

                crawl(3,Height1)

                Step=2

            elif Step==2:    

                crawl(2,Height1)

                Step=1

            elif Step==1:    

                crawl(1,Height1)

                Step=4  

        elif mode==3: #步行功能(由于只有两个步骤,无正反向调节,可能不能正常使用,后续视实际测试情况进行调整)

            if Step>2:

                Step=0

            if Step==0:

                tilt(Height1,Height1) #先降低高度

                Step=1 #改变变量的值以进入下一步骤

            elif Step==1:    

                walk(1,Height1)

                Step=2

            elif Step==2:    

                walk(2,Height1)

                Step=1

        elif mode==4: #前后倾斜

            if Step>2:

                Step=0

            if Step==0:

                tilt(0,0) #回到直立状态

                Step=1 #改变变量的值以进入下一步骤

            elif Step==1:    

                tilt(Height1,Height2)

                Step=2

            elif Step==2:

                tilt(Height1,Height2) #向反方向倾斜

                Step=0

        elif mode==5: #蹲起动作

            if Step>1:

                Step=0

            if Step==0:

                tilt(0,0) #回到直立状态

                Step=1 #改变变量的值以进入下一步骤

            elif Step==1:    

                tilt(Height1,Height2)

                Step=0

        elif mode==6: #抬脚动作

            tilt(0,0) #回到直立状态

            if Step==1:

                servos.position(4,20)

                Step=2 #改变变量的值以进入下一步骤

            elif Step==2:    

                servos.position(4,90)

                Step=3

            elif Step==3:    

                servos.position(5,20)

                Step=4

            elif Step==4:    

                servos.position(5,90)

                Step=1    

        time.sleep_ms(delay)

 

#开启线程

_thread.start_new_thread(function, (i1, i2))

    

while True:

    try:    

        data=int(input('input')) #输入9位数字

        mode=data//100000000 #第一位为模式

        Height1=data%100000000 #第二、三位为前部高度或步长

        Height1=Height1//1000000

        Height2=data%1000000 #第四、五、六位为后部高度或旋转角度

        Height2=Height2//1000

        delay=data%1000 #最后三位为延时

        #非连续执行的功能在此处执行

 if mode==7: #直行功能
            if Height2<=180: #参数超出范围则不执行,下同
                straight(Height2)  
        elif mode==8: #转向功能
            if Height2<=180:
                turn(Height2)
        elif mode==9: #倾斜功能
            if Height1<=60 and Height2<=60:
                tilt(Height1,Height2)        
    except:
        pass
    文章来源地址https://www.toymoban.com/news/detail-618678.html

到了这里,关于ESP32(MicroPython) 四足机器人(五)功能补充的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器人/小车】自己动手用ESP32手搓一个智能机器人:ESP32-CAM AI Robot(文末附完整工程源码)

    目录 介绍 硬件需求  软件需求 步骤 总结 源码下载 ESP32-CAM是一款集成了Wi-Fi和蓝牙功能的微控制器模块,同时还集成了摄像头接口,使其成为一个非常适合构建智能机器人的选择。在本项目中,我将向您展示如何使用ESP32-CAM模块构建一个

    2024年04月15日
    浏览(49)
  • 机器人坐标系解读及四足机器人虚拟模型控制(VMC)控制方法

    终于理清VMC控制方法了,对于很多新入门机器人的小伙伴,尤其像我这样做毕设前完全没有接触过机器人的本科生来说,坐标变换可谓是一大难,很多教材说的也是非常一本正经,非常不利于入门学习。本文对四足机器人坐标变换以及VMC控制方法作以简要介绍,力求简单易懂

    2024年02月06日
    浏览(32)
  • 四足步行机器人的结构设计及仿真

    目 录 摘要 I ABSTRACT II 第1章 绪论 1 1.1 课题研究的目的和意义 1 1.2 国内外关于四足步行机器人的发展现状 2 1.2.1 国外关于四足步行机器人的发展现状 2 1.2.2 国内关于四足步行机器人的发展现状 3 1.3 本设计的研究目标及完成的主要工作内容、预期结果 5 1.3.1 研究目标 5 1.3.2 设计

    2024年02月05日
    浏览(32)
  • 云深处绝影四足机器人协议学习解析

    本学习文档介绍了云深处 绝影X20 四足机器人的通信协议,并对相关的通信机制和命令格式进行了简单的解析。该协议在机器人系统和上位机(例如外部板卡或系统)之间进行TCP通信时使用。 在此协议中, 机器人本体 作为 TCP服务端 , 上位机 作为 TCP客户端 。协议的TCP服务

    2024年02月13日
    浏览(31)
  • 论文阅读:四足机器人对抗运动先验学习稳健和敏捷的行走

    论文:Learning Robust and Agile Legged Locomotion Using Adversarial Motion Priors 进一步学习:AMP,baseline方法,TO 介绍了一种新颖的系统,通过使用对抗性运动先验 (AMP) 使四足机器人在复杂地形上实现稳健和敏捷的行走。主要贡献包括为机器人生成AMP数据集,并提出一种教师-学生训练框架

    2024年02月21日
    浏览(44)
  • ESP32-S3语音唤醒技术,智能机器人应用,物联网技术发展

    随着技术的发展,智能服务正在融入群众的生活。智能机器人的应用,大大提高人们的工作效率,并减少投入的成本。 传感器检测是否有来宾,指纹识别模块可以用来签到,语音识别处理模块可以进行简单的日常提问进行识别并用相应的回答,触摸屏界面实现人机互动,可以

    2024年02月13日
    浏览(33)
  • 【全网首发开源教程】【Labview机器人仿真与控制】Labview与Solidworks多路支配关系-四足爬行机器人仿真与控制

    🎉欢迎来到Labview专栏~四足爬行机器人仿真与控制 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: Labview-3D虚拟平台 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ 🔸 四足机器人整

    2024年02月03日
    浏览(42)
  • 【标准DH法和改进DH法介绍及三自由度四足或双足机器人腿建模——MATLAB机器人工具箱使用】

    DH参数是机器人学习过程中常用的一种建模方法,通常情况下每一次坐标变换需要6个独立参数来描述坐标系i相对坐标系i-1的关系,即3个用来描述位置另外3个用来描述姿态。而DH参数法只需要4个参数,列出DH参数表并带入变换矩阵中可以轻易的得到机械手末端和基

    2024年02月02日
    浏览(47)
  • 机器人工程创新类课程补充说明-2023-

    内容仅供参考,不严谨。 案例: 在f1tenth仿真中如何实现更快速的跑圈-曲线分析篇  所有课程其实 主动权永远都掌握在学生手中 ,愿意学的会多花时间自主研究(主动学习),不愿意的就会用一些独特手段应付(被动学习),这些其实都是学生的自主选择,一定要尊重学生

    2024年02月11日
    浏览(39)
  • 机器人工程创新类课程补充说明-2023-2

    仅供参考 之前一篇: 机器人工程创新类课程补充说明-2023- 自主学习 → 自主研究 → 自主创新 ,这是一个 循序渐进 的过程,着急没用的,大部分学生,都卡在第一个阶段,自主学习的效率比较低,并且成果不突出。后面两个阶段就很难开展。 结合这些天以及往届学生数百

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包