制作一个小型双节履带底盘【内附资料下载链接】
1.运动功能说明
双节履带车可以通过两个驱动轮的差速运动来实现前进、后退、原地转向、大半径转向等基本行驶功能,并可通过舵机关节模块进行小臂的抬起和落下。通过底盘运动与小臂运行的结合,实现上台阶、通过坑洼地面等功能。
底盘前进与后退
底盘原地转向
底盘大半径转向
小臂运行
利用小臂抬起和放下,可以攀爬障碍和楼梯
2.结构说明
该样机由两组共源驱动的小型带传动模组和1个舵机关节模组构成。履带模组呈轴对称分布在车架上。舵机关节模块安装在小车车头方向的两个履带模块中间,驱动小臂抬起。
3.运动功能实现
3.1 电子硬件
样机各个电机 | 扩展板接口 |
左履带模块电机 | D3 |
右履带模块电机 | D4 |
关节模块电机 | D7 |
3.2 编写程序
编程环境:Arduino 1.8.19
前摆臂运动的代码(点击查看:ArmState.ino)
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2022-5-26 https://www.robotway.com/ ------------------------------------------ 实验功能: 实现双节履带小车前摆臂下、上、正常运动。 ------------------------------------------ 实验接线: .----------------------. | | | |-------------- | | 车头舵机接D7 | |-------------- | | *----------------------* ------------------------------------------------------------------------------------*/ #include <Servo.h> //调用舵机库 #define Servo_Pin 7 //定义舵机引脚号 #define Servo_Up 180 //定义前摆臂向上时角度值 #define Servo_Down 90 //定义前摆臂向下时角度值 #define Servo_Level 135 //定义前摆臂保持水平时角度值 Servo ServoArm; //声明舵机对象 void down(); //前摆臂向下 void up(); //前摆臂向上 void normal(); //前摆臂与地面保持平行 //程序初始化部分:使能舵机对象 void setup() { ServoArm.attach(Servo_Pin); } //主程序部分:前摆臂循环执行【向上1.5秒、水平1秒、向下1.5秒、水平1秒】动作组 void loop() { arm_up(); //前摆臂向上 delay(1500); arm_level(); //前摆臂水平 delay(1000); arm_down(); //前摆臂向下 delay(1500); arm_level(); //前摆臂水平 delay(1000); } //前摆臂与地面保持平行 void arm_level(){ ServoArm.write( Servo_Level ); } //前摆臂向上 void arm_up(){ ServoArm.write( Servo_Up ); } //前摆臂向下 void arm_down(){ ServoArm.write( Servo_Down ); } |
履带底盘前进功能的代码(点击查看: Forward.ino)
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2022-5-27 https://www.robotway.com/ ----------------------------------- 实验功能: 实现双节履带小车前进. 注意事项:圆周舵机90度表示停止. --------------------------------------------------- 实验接线: 左轮圆周舵机:D3 | | .----------------------. | | | |---------------- | | 车头 | |---------------- | | *----------------------* | | 右轮圆周舵机:D4 ------------------------------------------------------------------------------------*/ #include <Servo.h> //调用舵机库函数 #define Servo_Num 2 //定义舵机数量2 #define Left_Servo_Forward 91 //定义前进时小车左轮速度 #define Right_Servo_Forward 89 //定义前进时小车右轮速度 Servo Car_Servo[Servo_Num]; //声明舵机对象,表示声明了2个舵机对象 void Forward(); //前进 const int servo_pin[Servo_Num] = { 3, 4 };//定义舵机引脚号. const int angle_init[Servo_Num] = { 90, 90 };//定义舵机初始化角度 //程序初始化部分:分别使能舵机对象,并设置各个舵机初始角度 void setup() { for( int i=0;i<Servo_Num;i++ ){ Car_Servo[i].attach( servo_pin[i] ); //使能舵机对象 Car_Servo[i].write( angle_init[i] ); //设置舵机初始角度 }//即设定履带小车初始为停止状态 } //主程序部分:双节履带车前进 void loop() { Forward(); } //前进子程序 void Forward() { Car_Servo[0].write( Left_Servo_Forward ); Car_Servo[1].write( Right_Servo_Forward ); } |
履带底盘后退功能的代码(点击查看:Backward.ino)
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2022-5-26 https://www.robotway.com/ -------------------------------------------------- 实验功能: 实现双节履带小车后退. 注意事项:圆周舵机90度表示停止. -------------------------------------------------- 实验接线: 左轮圆周舵机:D3 | | .----------------------. | | | |------------ | | 车头 | |------------ | | *----------------------* | | 右轮圆周舵机:D4 ------------------------------------------------------------------------------------*/ #include <Servo.h> //调用舵机库函数 #define Servo_Num 2 //定义舵机数量2 #define Left_Servo_Backward 89 //定义后退时小车左轮速度 #define Right_Servo_Backward 91 //定义后退时小车右轮速度 Servo Car_Servo[Servo_Num]; //声明舵机对象,表示声明了2个舵机对象 void Forward(); //前进 const int servo_pin[Servo_Num] = { 3, 4 };//定义舵机引脚号. const int angle_init[Servo_Num] = { 90, 90 };//定义舵机初始化角度 //程序初始化部分:分别使能舵机对象,并设置各个舵机初始角度 void setup() { for( int i=0;i<Servo_Num;i++ ){ Car_Servo[i].attach( servo_pin[i] ); //使能舵机对象 Car_Servo[i].write( angle_init[i] ); //设置舵机初始角度 }//即设定履带小车初始为停止状态 } //主程序部分:双节履带车后退 void loop() { Backward(); } //后退子程序 void Backward() { Car_Servo[0].write( Left_Servo_Backward ); Car_Servo[1].write( Right_Servo_Backward ); } |
履带底盘原地转向功能的代码(点击查看:TurnInPlace.ino)
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2022-5-27 https://www.robotway.com/ ----------------------------------------------------------- 实验功能: 实现双节履带小车加速前进、加速后退、停止、加速自转、 加速大半径转向、前摆臂向上抬起、前摆臂水平、前摆臂向下. 【注意】:当我们给定圆周舵机一个速度时,例如50,如果我们 不给该圆周舵机停止(即90),那么该舵机会以50的速度一直转动 ----------------------------------------------------------- 实验接线: 左轮圆周舵机:D3 | | .----------------------. | | | |---------------- | | 车头舵机接:D7 | |---------------- | | *----------------------* | | 右轮圆周舵机:D4 ------------------------------------------------------------------------------------*/ #include <Servo.h> //调用舵机库函数 #define Servo_Num 3 //定义舵机数量 Servo Car_Servo[Servo_Num]; //声明舵机对象,表示声明了3个舵机对象 const int servo_pin[Servo_Num] = { 3, 4, 7 };//定义舵机引脚号. const int angle_init[Servo_Num] = { 90, 90, 135 };//定义舵机初始化角度 /*枚举类型.当第一个参数为1时,后面的每一个参数一次增1【如:Backward=2,ArmDown=8】 Forward(前进)、Backward(后退)、TurnInPlace(原地旋转)、BigTurn(大转向)、 Stop(小车停止)、ArmLevel(前摆臂水平)、ArmUp(前摆臂向上)、ArmDown(前摆臂向下)*/ enum{Forward=1,Backward,TurnInPlace,BigTurn,Stop,ArmLevel,ArmUp,ArmDown}; //程序初始化部分:分别使能舵机对象,并设置各个舵机初始角度 void setup() { for( int i=0;i<Servo_Num;i++ ){ Car_Servo[i].attach( servo_pin[i] ); //使能舵机对象 Car_Servo[i].write( angle_init[i] ); //设置舵机初始角度 }//即设定履带小车初始为停止状态 } //主程序部分:执行小车各个状态 void loop() { Car_State( ArmUp, 1000 ); //小车前摆臂向上抬起,等待1秒 Car_State( Forward, 2000 ); //小车前进,等待2秒 Car_State( Stop, 2000 ); //小车停止,并等待2秒 Car_State( ArmLevel, 1000 ); //小车前摆臂水平 Car_State( ArmDown, 1000 ); //小车前摆臂向下 Car_State( Backward, 2000 ); //小车后退,等待2秒 Car_State( ArmUp, 1000 ); //前摆臂向上【注意这里没写Stop, // 故此时的小车会一直以程序前一行的后退状态继续后退】 Car_State( Forward, 5000 ); //以此类推 Car_State( Backward, 5000 ); Car_State( TurnInPlace, 5000 ); Car_State( BigTurn, 5000 ); } /*-------------------------------------------------------------- 该函数封装了小车各个状态. 参数car_state表示小车执行状态. 参数time_delay表示程序等待时间 程序使用示例: Car_State( Forward, 1000 );表示小车执行前进动作,等待1000毫秒 Car_State( ArmUp, 1500 );表示小车执行前摆臂向上动作,等待1500毫秒 */ void Car_State( int car_state, unsigned long time_delay ) { switch( car_state ) { case ArmLevel: Car_Servo[2].write( 135 ); delay( time_delay); break; case ArmUp: Car_Servo[2].write( 180 ); delay( time_delay); break; case ArmDown: Car_Servo[2].write( 90 ); delay( time_delay); break; case BigTurn: Car_Servo[0].write( 10 ); Car_Servo[1].write( 110 ); delay( time_delay); break; case Backward: Car_Servo[0].write( 170 ); Car_Servo[1].write( 10 ); delay( time_delay); break; case Stop: Car_Servo[0].write( 90 ); Car_Servo[1].write( 90 ); delay( time_delay); break; case Forward: Car_Servo[0].write( 10 ); Car_Servo[1].write( 170 ); delay( time_delay); break; case TurnInPlace: Car_Servo[0].write( 10 ); Car_Servo[1].write( 10 ); delay( time_delay); break; default: break; //否则, 程序跳出该循环. } } |
履带底盘大半径转向功能的代码(点击查看:BigTurn.ino)
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2022-5-26 https://www.robotway.com/ ----------------------------------- 实验功能: 实现双节履带小车大半径转向 注意事项:圆周舵机90度表示停止. -------------------------------------------------------- 实验接线: 左轮圆周舵机:D3 | | .----------------------. | | | |--------------- | | 车头 | |--------------- | | *----------------------* | | 右轮圆周舵机:D4 ------------------------------------------------------------------------------------*/ #include <Servo.h> //调用舵机库函数 #define Servo_Num 2 //定义舵机数量2 #define Left_Servo_Turnright 91 //定义大半径转向时小车左轮速度 #define Right_Servo_Turnright 101 //定义大半径转向时小车右轮速度 Servo Car_Servo[Servo_Num]; //声明舵机对象,表示声明了2个舵机对象 void Forward(); //前进 const int servo_pin[Servo_Num] = { 3, 4 };//定义舵机引脚号. const int angle_init[Servo_Num] = { 90, 90 };//定义舵机初始化角度 //程序初始化部分:分别使能舵机对象,并设置各个舵机初始角度 void setup() { for( int i=0;i<Servo_Num;i++ ){ Car_Servo[i].attach( servo_pin[i] ); //使能舵机对象 Car_Servo[i].write( angle_init[i] ); //设置舵机初始角度 }//即设定履带小车初始为停止状态 } //主程序部分:双节履带车大半径转向(类似于走弧线效果) void loop() { Big_Turn(); } //大半径转向子程序 void Big_Turn() { Car_Servo[0].write( Left_Servo_Turnright ); Car_Servo[1].write( Right_Servo_Turnright ); } |
履带底盘结合摆臂运行的代码(点击查看:OverallTest.ino)
/*------------------------------------------------------------------------------------ 版权说明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved. Distributed under MIT license.See file LICENSE for detail or copy at https://opensource.org/licenses/MIT by 机器谱 2022-5-27 https://www.robotway.com/ ----------------------------------------------------------- 实验功能: 实现双节履带小车加速前进、加速后退、停止、加速自转、 加速大半径转向、前摆臂向上抬起、前摆臂水平、前摆臂向下. 【注意】:当我们给定圆周舵机一个速度时,例如50,如果我们 不给该圆周舵机停止(即90),那么该舵机会以50的速度一直转动 ----------------------------------------------------------- 实验接线: 左轮圆周舵机:D3 | | .----------------------. | | | |---------------- | | 车头舵机接:D7 | |---------------- | | *----------------------* | | 右轮圆周舵机:D4 ------------------------------------------------------------------------------------*/ #include <Servo.h> //调用舵机库函数 #define Servo_Num 3 //定义舵机数量 Servo Car_Servo[Servo_Num]; //声明舵机对象,表示声明了3个舵机对象 const int servo_pin[Servo_Num] = { 3, 4, 7 };//定义舵机引脚号. const int angle_init[Servo_Num] = { 90, 90, 135 };//定义舵机初始化角度 /*枚举类型.当第一个参数为1时,后面的每一个参数一次增1【如:Backward=2,ArmDown=8】 Forward(前进)、Backward(后退)、TurnInPlace(原地旋转)、BigTurn(大转向)、 Stop(小车停止)、ArmLevel(前摆臂水平)、ArmUp(前摆臂向上)、ArmDown(前摆臂向下)*/ enum{Forward=1,Backward,TurnInPlace,BigTurn,Stop,ArmLevel,ArmUp,ArmDown}; //程序初始化部分:分别使能舵机对象,并设置各个舵机初始角度 void setup() { for( int i=0;i<Servo_Num;i++ ){ Car_Servo[i].attach( servo_pin[i] ); //使能舵机对象 Car_Servo[i].write( angle_init[i] ); //设置舵机初始角度 }//即设定履带小车初始为停止状态 } //主程序部分:执行小车各个状态 void loop() { Car_State( ArmUp, 1000 ); //小车前摆臂向上抬起,等待1秒 Car_State( Forward, 2000 ); //小车前进,等待2秒 Car_State( Stop, 2000 ); //小车停止,并等待2秒 Car_State( ArmLevel, 1000 ); //小车前摆臂水平 Car_State( ArmDown, 1000 ); //小车前摆臂向下 Car_State( Backward, 2000 ); //小车后退,等待2秒 Car_State( ArmUp, 1000 ); //前摆臂向上【注意这里没写Stop, // 故此时的小车会一直以程序前一行的后退状态继续后退】 Car_State( Forward, 5000 ); //以此类推 Car_State( Backward, 5000 ); Car_State( TurnInPlace, 5000 ); Car_State( BigTurn, 5000 ); } /*-------------------------------------------------------------- 该函数封装了小车各个状态. 参数car_state表示小车执行状态. 参数time_delay表示程序等待时间 程序使用示例: Car_State( Forward, 1000 );表示小车执行前进动作,等待1000毫秒 Car_State( ArmUp, 1500 );表示小车执行前摆臂向上动作,等待1500毫秒 */ void Car_State( int car_state, unsigned long time_delay ) { switch( car_state ) { case ArmLevel: Car_Servo[2].write( 135 ); delay( time_delay); break; case ArmUp: Car_Servo[2].write( 180 ); delay( time_delay); break; case ArmDown: Car_Servo[2].write( 90 ); delay( time_delay); break; case BigTurn: Car_Servo[0].write( 10 ); Car_Servo[1].write( 110 ); delay( time_delay); break; case Backward: Car_Servo[0].write( 170 ); Car_Servo[1].write( 10 ); delay( time_delay); break; case Stop: Car_Servo[0].write( 90 ); Car_Servo[1].write( 90 ); delay( time_delay); break; case Forward: Car_Servo[0].write( 10 ); Car_Servo[1].write( 170 ); delay( time_delay); break; case TurnInPlace: Car_Servo[0].write( 10 ); Car_Servo[1].write( 10 ); delay( time_delay); break; default: break; //否则, 程序跳出该循环. } } |
4.扩展样机
本样机可以根据实际需要改变履带的长度,也可以改变传动方式,比如下图所示扩展样机,在前臂上使用了连杆组传动方案,样机体积也更小。
5.资料下载
资料内容 | 样机3D文件、例程源代码 |
下载链接 | https://www.robotway.com/h-col-118.html |
制作一个小型双节履带底盘【内附资料下载链接】相关推荐
- 制作一个轮式机械臂小车【内附资料下载链接】
1. 运动功能说明 轮式机械臂小车是一款搭载了机械臂的双轮小车.它的底盘具备基本的行驶和原地转向功能,机械臂具备抬升.放下.抓取等功能.整体上可以实现抓取.搬运.码放等功能,可作为搬运机器人.排爆机器 ...
- 制作一个舵机关节模组【内附资料下载链接】
1.运动功能说明 舵机关节模组的主要运动方式为用舵机带动U型支架摆动,从而模仿生物关节运动的效果. 2.结构说明 构成本模组的零部件主要是舵机(行程0度~180度).舵机支架.舵机输出头.舵机双折弯( ...
- 制作一个小型三节履带底盘【内附资料下载链接】
1.运动功能说明 双节履带车可以通过两个驱动轮的差速运动来实现前进.后退.原地转向.大半径转向等基本行驶功能,并可通过舵机关节模块进行小臂的抬起和落下.通过底盘运动与小臂运行的结合,实现上台阶.通过坑 ...
- 制作一个机器螳螂【内附资料下载链接】
1. 运动功能说明 机器螳螂可以通过两侧仿生腿的差速运动来实现前进.后退.原地转向.大半径转向等基本行走功能.行走时在传动机构的作用下,两个前肢也会一起运动.颈部的关节模组可以驱动头部和前肢做上.下运 ...
- 制作一个偏心轮连杆简易六足【内附资料下载链接】
1. 运动功能说明 简易六足机器人可以通过两侧仿生腿的差速运动来实现前进.后退.原地转向.大半径转向等基本行走功能. 2.结构说明 该样机由两组仿生腿构成,仿生腿由直流电机驱动,包含1个偏心轮滑块机构 ...
- 制作一个正三角履带底盘【内附资料下载链接】
1.运动功能说明 履带底盘可以通过两侧履带的差速运动来实现前进.后退.原地转向.大半径转向等基本行驶功能.同时,由于车身的正三角特性,它不惧怕前后方向上的翻车. 前进与后退 原地转向 大半径转向 翻滚 ...
- 制作一个斜三角履带底盘【内附资料下载链接】
1.运动功能说明 履带底盘可以通过两侧履带的差速运动来实现前进.后退.原地转向.大半径转向等基本行驶功能.另外,倾斜的履带也可以使其具有良好的越障效果. 前进与后退 原地转向 大半径转向 2.结构说明 ...
- 制作一个四轮四驱底盘【内附资料下载链接】
1.运动功能说明 底盘可以通过左侧2个驱动轮和右侧2个驱动轮的差速运动配合来实现前进.后退.原地转向.大半径转向等基本行驶功能. 前进与后退 原地转向 大半径转向 2.结构说明 样机由四个小型驱动轮模 ...
- 制作一个前轮转向(阿克曼)底盘【内附资料下载链接】
1.运动功能说明 前轮转向(阿克曼)底盘可以通过后轮进行驱动,通过前轮控制方向,前轮转向结构和汽车类似,可以做到前进.后退.大半径转向等基本行驶功能,但不能实现原地转向. 2.结构说明 样机包含一个直 ...
最新文章
- Scala入门到精通——第二十六节 Scala并发编程基础
- 存储过程双层循环_别出心裁,为锂金属负极贴上“双层保护膜”!
- RF和GBDT和Xgboost的异同总结,加上lightgbm
- 微擎后端/知识付费阅读店铺小程序 V5.1.0 全套源码
- 传京东最快6月将在香港二次上市 已以保密形式提交上市申请
- oracle12漏洞补丁下载,linux oracle 11g 漏洞补丁升级
- 探索处理数据新方法,8 个重点搞懂云数据库 DBaaS 到底是什么!
- 【Photoshop教程】转发:Photoshop把帅哥转成超酷的阿凡达
- ubuntu 18.04安装php 7,如何在Ubuntu 18.04和16.04上安装PHP(7.3,7.2和7.0)?
- 心酸血泪前端路,不断成长任我行,零碎知识点笔记(vue踩坑日记)
- Java指令编译java文件
- 开机后主板测试卡直接显示“FF或00”的故障原因及排除方法:
- java中的类是什么_java中类是什么意思
- 托业单词表Part2
- 商业银行vh是哪个银行的简称_各个银行缩写是什么
- python数据分析基础之处理word格式文件
- 一文学会会计记账-会计科目、借贷关系和会计分录的小白理解
- Ubantu安装成功后重启时出现please remove the installation medium,then press enter
- python金融量化书籍_超强干货 | Python金融数据量化分析教程+机器学习电子书
- 学海泛舟系列文章开篇语