球机器人 配重_DIY:拥有绝佳移动力的球平衡机器人

本文介绍了球形机器人Rezero,它由瑞士苏黎世联邦理工学院学生创作,以独特的球形底座和万向节设计实现“永远不倒”。Rezero配备多种传感器,能完成各种动作。文章还鼓励读者尝试DIY此类机器人,使用STM32和ATmega16单片机等组件,实现稳定的全方位移动。球形机器人在服务型机器人领域展现出高效和可行性。
摘要由CSDN通过智能技术生成

机器人一直是我们DIY项目中的分水岭,当一款机器人作品可以完美的完成我们所设定的动作就已经是一款成功的作品。

而这其中,我们所要解决最难的问题就是让机器人获得自如的“行动力”。如果“飞行”和“多足”都不能满足我们所要求的“行动自如”,那么我们可以选择一个更平稳的方式—“球行”。

无论是功能多么简单的机器人,“行动力”都是最关键的性能。简单而有效的移动方式能让机器人拥有更多的可能,完成更多的动作。

在大家所见识过的多个项目中,飞行机器人和多足机器人都是拥有很强机动性的产品,但是相对的稳定性就差得远了。因此有一种新的行动模式被加到机器人的行列中,那就是“球行”机器人。

“永远不倒”的机器人Rezero

Rezero来自瑞士,是苏黎世联邦理工学院的学生打造的作品。如果对其进行一个概括性的描述,我们可以将其评价为“永远不倒”的机器人

与多足机器人相比,Rezero走了另一个极端:整个结构由一个球形的底座来支撑,整个机器仅有球面上的一点与地面接触,使得其不能保持绝对的稳定,但这个机器人会同时通过球形底座进行不断的“微调”保持着移动和相对的平衡。

Rezero可以配合各种传感器,包括水平仪、红外定位以及热感应等。

因为Rezero仅有一个支撑点与地面接触,所以这个机器人自身一直处于一种不稳定的状态,必需通过不断的调整自己的运动。而做为底座的球体则通过三个轮子形成一个万向节,用以控制转动的方向和速度。

凭借身上的传感器以及底座球体的机动性能,Rezero可以完成匀速直行、自转、围绕特定目标公转等动作。通过加强Rezero的马达性能,它也可以充当载具并提供引路功能。

在TED演讲上,彼特·范考萨曾展示了Rezero这款机器人的实际性能和前景。

球平衡机器人的DIY

陀螺仪传感器、加速度传感器、地磁传感器、无线模块、WIFI模块、摄像头甚至是Kinect,为了让球形机器人发挥出其所拥有的稳定行动力,我们可以利用不同的传感器和组件去发挥它的这种优势。

目前有人DIY了这种设计,通过STM32单片机以及ATmega16单片机可以完成这种设计的控制系统,而机械部分可通过直流电动机(齿轮箱)、编码器以及DC电机驱动器完成动力系统。

利用全向轮,我们就能得到一个可以全方位对球形底座进行移动控制的机动系统。

目前通过一般的DIY方式制作这种机器人已经可以活动不错的机动性能,可以进行匀速直行、自转等动作,并且行动时非常平稳,性能可靠。

而对一些服务性机器人设计方案,这种“球形动力”也无疑更加可行和高效。

对这个DIY项目有兴趣的读者,可以在这里了解相关的制作过程,或通过在新浪微博上关注制作者@韬_Tao,并与其交流。

雷锋网原创文章,未经授权禁止转载。详情见转载须知。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
主程序: #include "sys.h" u8 Flag_Left,Flag_Right; // u8 Flag_Stop=1,Flag_Zero=0,Flag_Show,Flag_Qian,Flag_Hou,Flag_Left,Flag_Right,Flag_OK; //停止标志位和 显示标志位 默认停止 显示打开 float Motor_X,Motor_Y,Motor_Z; long int Motor_A,Motor_B,Motor_C; //电机PWM变量 long int Target_A,Target_B,Target_C; //电机目标值 int Voltage; //电池电压采样相关的变量 float Show_Data1,Show_Data2,Show_Data3,Show_Data4; //全局显示变量,用于显示需要查看的数据 u8 delay_50,delay_flag; //延时相关变量 u8 PID_Send; //CAN和串口控制相关变量 float Pitch,Roll,Yaw,Move_X,Move_Y,Move_Z,Roll_Bias,Pitch_Bias,Roll_Zero,Pitch_Zero; float Balance_Kp=200,Balance_Kd=19,Velocity_Kp=55,Velocity_Ki=10; //位置控制PID参数 int main(void) { Stm32_Clock_Init(9); //=====系统时钟设置 delay_init(72); //=====延时初始化 JTAG_Set(JTAG_SWD_DISABLE); //=====关闭JTAG接口 JTAG_Set(SWD_ENABLE); //=====打开SWD接口 可以利用主板的SWD接口调试 LED_Init(); //=====初始化与 LED 连接的硬件接口 KEY_Init(); //=====按键初始化 OLED_Init(); //=====OLED初始化 uart_init(72,128000); //=====串口1初始化 uart2_init(36,9600); //=====串口2初始化 uart3_init(36,115200); //=====串口3初始化 Adc_Init(); //=====adc初始化 IIC_Init(); //=====IIC初始化 delay_ms(50); MPU6050_initialize(); //=====MPU6050初始化 DMP_Init(); //=====初始化DMP delay_ms(500); //=====延时等待初始化稳定 EXTI_Init(); //=====MPU6050 5ms定时中断初始化 CAN1_Mode_Init(1,2,3,6,0); //=====CAN初始化 MiniBalance_PWM_Init(7199,14); //=====初始化PWM 用于驱动电机 while(1) { if(Flag_Show==0) { DataScope(); //===上位机 delay_flag=1; //===50ms中断精准延时标志位 oled_show(); //===显示屏打开 while(delay_flag); //===50ms中断精准延时 主要是波形显示上位机需要严格的50ms传输周期 } else { APP_Show(); //===APP oled_show(); //===显示屏打开 delay_flag=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值