极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1589|回复: 0

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

[复制链接]
发表于 2023-5-19 09:24:41 | 显示全部楼层 |阅读模式
本帖最后由 机器谱 于 2023-5-19 09:24 编辑

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


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)。


3. 功能实现

       编程环境:Arduino 1.8.19
       实现思路:舵机云台可以根据陀螺仪传感器的数据实现姿态跟随。
六轴陀螺仪实物与空间坐标系的对应关系:


3.1 测试数据
      ① 测试舵机云台的两个舵机初始角度,记录数据;
      ② 测试六轴陀螺仪传感器的姿态数据。
下表是本实验中测试出的实验数据,大家可参考格式,测试出自己的实验数据。

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

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

  2.   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

  3.            Distributed under MIT license.See file LICENSE for detail or copy at

  4.            https://opensource.org/licenses/MIT

  5.            by 机器谱 2023-04-24 https://www.robotway.com/

  6.   ------------------------------*/

  7. /*   

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

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

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

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

  12. */

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

  14. #include<Math.h>

  15. Servo myservo[2];   //声明两个舵机

  16. int myservopin[2] = {4, 3}; // 定义舵机的引脚

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

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

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

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

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

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


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

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

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

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

  27. #define Servo_Speed 10              //舵机速度


  28. unsigned char Re_buf[11],counter=0;

  29. unsigned char sign=0;

  30. float a[3],w[3],angle[3],T;

  31. int servo_angle_current[2] = {0,0};

  32. float value_init[2]={90,90};

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


  34. void setup()

  35. {

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

  37.    myservo[0].attach(myservopin[0]);

  38.    myservo[1].attach(myservopin[1]);

  39. }


  40. void loop()

  41. {

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

  43. }
复制代码

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


4. 资料下载
资料内容:体感姿态跟随-程序源代码
资料下载地址:https://www.robotway.com/h-col-126.html

想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 18:29 , Processed in 0.041257 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表