机器谱 发表于 2023-5-19 09:24:41

舵机云台实现体感姿态跟随功能

本帖最后由 机器谱 于 2023-5-19 09:24 编辑

1. 功能说明
       本文示例将实现R207样机舵机云台根据 六轴陀螺仪传感器【https://www.robotway.com/h-col-137.html】 的数据实现姿态跟随的功能。

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgpJGiogYorZ-PlgMwogM42AE.png.webphttps://28846868.s21i.faiusr.com/3/ABUIABADGAAg0ZGiogYo_oCjjAUwsAQ4uwI.gif.webp
2. 电子硬件
       在这个示例中,我们采用了以下硬件,请大家参考:


主控板Basra主控板(兼容Arduino Uno)‍

扩展板Bigfish2.1扩展板‍

传感器六轴陀螺仪
电池7.4V锂电池

电路连接说明:
       ① 六轴陀螺仪传感器连接在Bigfish扩展板的GND、VCC(3.3V)、RX、TX;
       ② 底座舵机0号连接在Bigfish扩展板的(GND、VCC、D4);
       ③ 摆动舵机1号连接在Bigfish扩展板的(GND、VCC、D3)。

https://28846868.s21i.faiusr.com/2/ABUIABACGAAg6JOiogYo1Iux-QUw9hM4_Q4!600x600.jpg.webp
3. 功能实现
       编程环境:Arduino 1.8.19
       实现思路:舵机云台可以根据陀螺仪传感器的数据实现姿态跟随。
六轴陀螺仪实物与空间坐标系的对应关系:

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgtpSiogYo4I3rXjCrBDi-AQ.png.webp
3.1 测试数据
      ① 测试舵机云台的两个舵机初始角度,记录数据;
      ② 测试六轴陀螺仪传感器的姿态数据。
下表是本实验中测试出的实验数据,大家可参考格式,测试出自己的实验数据。


物料‍测试数据

舵机00   ---   180‍
舵机10   ---   110‍
陀螺仪的加速度包X轴数据从左到右转动陀螺仪,数据从(+1.01,-1.05)逐渐减小;中值为0;
陀螺仪的加速度包Y轴数据沿Y轴俯仰陀螺仪时,数据从(-1.15,1.01)逐渐增大;中值为0;


3.2 示例程序
      根据已测数据编写程序,下面提供一个参考例程(body_feeling_attitude.ino):
/*------------------------------------------------------------------------------------

版权说明:Copyright 2023 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 机器谱 2023-04-24 https://www.robotway.com/

------------------------------*/

/*   

    功能:云台可以根据陀螺仪传感器的数据实现姿态跟随

    接线:陀螺仪传感器接在扩展板的Gnd、Vcc(3.3v)、RX、TX;

          底座舵机0号接在扩展板的(Gnd、Vcc、D4);

          摆动舵机1号接在扩展板的(Gnd、Vcc、D3)

*/

#include<Servo.h>   //调用舵机库函数

#include<Math.h>

Servo myservo;   //声明两个舵机

int myservopin = {4, 3}; // 定义舵机的引脚

#define Gyroscope_left_LimitAngle_X   -1.05   //读取到陀螺仪 X 轴向左偏的极限数值

#define Gyroscope_Right_LimitAngle_X   1.01   //读取到陀螺仪 X 轴向右偏的极限数值

#define Gyroscope_Middle_LimitAngle_X   0    //读取到陀螺仪 X 轴平放时的数值

#define Gyroscope_left_LimitAngle_Y   -1.05   //读取到陀螺仪 Y 轴向左偏的极限数值

#define Gyroscope_Right_LimitAngle_Y   1.01   //读取到陀螺仪 Y 轴向右偏的极限数值

#define Gyroscope_Middle_LimitAngle_Y   0    //读取到陀螺仪 Y 轴平放时的数值


#define Servo_One_Mix_Angle 0       //1号舵机最小角度

#define Servo_One_Max_Angle 180   //1号舵机最大角度

#define Servo_Two_Mix_Angle 0       //2号舵机最小角度

#define Servo_Two_Max_Angle 110   //2号舵机最大角度

#define Servo_Speed 10            //舵机速度


unsigned char Re_buf,counter=0;

unsigned char sign=0;

float a,w,angle,T;

int servo_angle_current = {0,0};

float value_init={90,90};

float f = 10.0;                     //舵机的频率


void setup()

{

   Serial.begin(115200);         //打开串口,并设置波特率为115200

   myservo.attach(myservopin);

   myservo.attach(myservopin);

}


void loop()

{

   Get_gyroscope_And_Control();   //根据陀螺仪传感器的数据实现姿态跟随

}
注意:本次实验测试数据对应的程序位置如下图所示,大家可尝试输入自己的实验数据参数,修改这段程序,使舵机云台的姿态跟随更加流畅。

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg0ZeiogYosq7I5AIwrAY4zgI!600x600.png.webp
4. 资料下载
资料内容:体感姿态跟随-程序源代码
资料下载地址:https://www.robotway.com/h-col-126.html

想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com
页: [1]
查看完整版本: 舵机云台实现体感姿态跟随功能