本帖最后由 机器谱 于 2022-12-20 16:09 编辑
1. 运动功能说明 机器螳螂可以通过两侧仿生腿的差速运动来实现前进、后退、原地转向、大半径转向等基本行走功能。行走时在传动机构的作用下,两个前肢也会一起运动。颈部的关节模组可以驱动头部和前肢做上、下运动。
2.结构说明 该样机的行走机构由两组仿生腿构成,仿生腿由直流电机驱动,包含1个偏心轮滑块机构,和1个偏心轮摇杆机构,前肢也是1个偏心轮摇杆机构,通过偏心轮安装的相位差来确定中间腿、后腿、前肢的运动节奏。 中间腿的传动结构运动原理,如下图所示:
后腿和前肢的传动结构运动原理,如下图所示:
3. 运动功能实现
该机构的运动方式也是差速运动,小型双轮差速底盘【https://www.robotway.com/h-col-113.html】一样,请参考小型双轮差速底盘机构。关节模组【https://www.robotway.com/h-col-121.html】驱动的,可以参考关节模组的控制方法。
下面是“向前行走同时点头攻击”功能的实现方法。
3.1 电子硬件
在这个示例中,采用了以下硬件,请大家参考: 主控板 | Basra(兼容Arduino Uno) | 扩展板 | Bigfish2.1 | 电池 | 7.4V锂电池 |
3.2 编写程序 编程环境:Arduino 1.8.19
- 代码如下(Mantis.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-9-8 https://www.robotway.com/
- ------------------------------
- 实验功能:
- 实现机器螳螂前进的同时点头攻击.
- -----------------------------------------------------
- 实验接线:螳螂的左腿接D5,D6;右腿接D9,D10;颈部关节模组的舵机接D4。
- ------------------------------------------------------------------------------------*/
- #include<Servo.h> //调用舵机库
- #define Servo_Pin 4 //定义舵机引脚号
- #define Angle_Zero 90 //设置舵机转动的角度为90度
- #define Angle_One 45 //设置舵机转动的角度为45度
- void Mantisup(); // 前进并抬头
- void Mantisdown();// 前进并低头
- Servo myservo; //声明舵机对象
- //程序初始化部分:设置电机引脚为输出模式
- void setup() {
- Serial.begin(9600);//开启串口,并设置波特率为9600
- myservo.attach(Servo_Pin);//设置舵机引脚
- pinMode( 5 , OUTPUT); //将引脚5设置为输出模式
- pinMode( 6 , OUTPUT); //将引脚6设置为输出模式
- pinMode( 9 , OUTPUT); //将引脚9设置为输出模式
- pinMode( 10 , OUTPUT); //将引脚10设置为输出模式
- }
- //主程序部分:螳螂前进的同时点头攻击
- void loop() {
- Mantisup();
- delay(500); //保持0.5秒
- Mantisdown();
- delay(500); //保持0.5秒
- }
- //封装螳螂前进并抬头动作子程序
- void Mantisup() {
- myservo.write(Angle_Zero); //4号引脚舵机直接转到90度
- digitalWrite( 5 , LOW ); //前进
- digitalWrite( 6 , HIGH );
- digitalWrite( 9 , LOW );
- digitalWrite( 10 , HIGH );
- }
- //封装螳螂前进并低头动作子程序
- void Mantisdown() {
- myservo.write(Angle_One); //4号引脚舵机直接转到45度
- digitalWrite( 5 , LOW ); //前进
- digitalWrite( 6 , HIGH );
- digitalWrite( 9 , LOW );
- digitalWrite( 10 , HIGH );
- }代码如下(Mantis.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-9-8 https://www.robotway.com/
- ------------------------------
- 实验功能:
- 实现机器螳螂前进的同时点头攻击.
- -----------------------------------------------------
- 实验接线:螳螂的左腿接D5,D6;右腿接D9,D10;颈部关节模组的舵机接D4。
- ------------------------------------------------------------------------------------*/
- #include<Servo.h> //调用舵机库
- #define Servo_Pin 4 //定义舵机引脚号
- #define Angle_Zero 90 //设置舵机转动的角度为90度
- #define Angle_One 45 //设置舵机转动的角度为45度
- void Mantisup(); // 前进并抬头
- void Mantisdown();// 前进并低头
- Servo myservo; //声明舵机对象
- //程序初始化部分:设置电机引脚为输出模式
- void setup() {
- Serial.begin(9600);//开启串口,并设置波特率为9600
- myservo.attach(Servo_Pin);//设置舵机引脚
- pinMode( 5 , OUTPUT); //将引脚5设置为输出模式
- pinMode( 6 , OUTPUT); //将引脚6设置为输出模式
- pinMode( 9 , OUTPUT); //将引脚9设置为输出模式
- pinMode( 10 , OUTPUT); //将引脚10设置为输出模式
- }
- //主程序部分:螳螂前进的同时点头攻击
- void loop() {
- Mantisup();
- delay(500); //保持0.5秒
- Mantisdown();
- delay(500); //保持0.5秒
- }
- //封装螳螂前进并抬头动作子程序
- void Mantisup() {
- myservo.write(Angle_Zero); //4号引脚舵机直接转到90度
- digitalWrite( 5 , LOW ); //前进
- digitalWrite( 6 , HIGH );
- digitalWrite( 9 , LOW );
- digitalWrite( 10 , HIGH );
- }
- //封装螳螂前进并低头动作子程序
- void Mantisdown() {
- myservo.write(Angle_One); //4号引脚舵机直接转到45度
- digitalWrite( 5 , LOW ); //前进
- digitalWrite( 6 , HIGH );
- digitalWrite( 9 , LOW );
- digitalWrite( 10 , HIGH );
- }
复制代码
4.扩展样机 本样机有按照: ① 2个直流电机 VS 1个直流电机; ② 颈部有关节 VS 颈部无关节; ③ 有翅膀 VS 无翅膀 等要素,可以排列组合出多种方案。
另外,也可以用各种手工材料给螳螂制作丰富多彩的外观。
5. 资料下载 资料内容: ①样机3D文件 ②样机例程源代码 资料下载链接 https://www.robotway.com/h-col-147.html
|