极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1780|回复: 0

机器人制作开源方案 | 桌面级全向底盘--本体说明

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

一、本体说明
1. 底盘概述
       该底盘是一款模块化的桌面级应用型底盘,基于应用级软件架构设计、应用级硬件系统设计、典型应用型底盘机械系统设计。
       底盘本体为一个采用半独立刚性悬挂的四驱全向底盘。

1. 软件环境介绍

       操作系统:Ubuntu18.04系统。基于Debian GNU/Linux,支持x86、amd64(即x64)、ARM和ppc架构。
       仿真系统:基于开源机器人操作系统ROS melodic和开源软件平台Arduino开发。上位机采用ROS melodic,基于Rviz完成全向移动底盘slam导航运动规划,采用gazebo完成全向移动底盘物理运动仿真;下位机采用Arduino实现对全向移动底盘运动的控制。
       注意:准备一个外接显示器。

2. 硬件配置及主要参数

硬件配置及主要参数表

序号
图例
模块
主要参数
1
主机×1

尺寸:216mmx200mmx62mm。
主控板:上位机采用ROS系统设计,下位机采用Arduino硬件系统设计;两个主控制器,包括一款基于Cortex A53芯片的嵌入式控制器,预装ROS系统,集成电机驱动、传感器扩展电路。
主机接口:电源接口×1 、USB2.0接口×2、USB3.0接口×2、HDMI接口×1、网口×1、TTL串口×1、2510插头GPIO接口×32、航空头GPIO接口×14、航空头TTL串口x1、总线接口x4、步进电机接口x4。
支持USB/Wifi/ Bluetooth通信。
工作电压:12V
2
悬架模块×1

尺寸:(长×宽×高)380x290x120mm。
半独立悬挂。
支持四轮安装。
安装8个超声测距传感器。

3
轮模块×4

尺寸:(长×宽×高)105mm×60mm×85mm。
内部安装高精度电机,可扩展为摆动模块。
结构:支持扩展步进电机、编码器直流电机、伺服电机。

4
激光雷达×1

激光雷达测距范围0.15-12m,360°无死角扫描,测距分辨率<0.5mm,角度分辨率<1°,测量频率最小值不小于1500hz,测量频率最大值8000hz,扫描频率最小值1hz,扫描频率最大值10hz。
含支架。

5



高清摄像头×1

RGB像素:1080P
静态拍照分辨率:1280*720/640*480
接口:USB2.0
输入电压:5v
麦克风:双立体麦克风
音频采样率:16KHz

6
其他配件包×1

各类线材、工具、电池、电源、显示屏等。

4. 认识底盘的电器接口
     ① 常用接口说明:
底盘尺寸示意图
底盘常用电气接口
     ② 扩展电气接口说明:
左侧扩展接口对应图
车头扩展接口对应图
车尾扩展接口对应图
5. 底盘简化的系统框图
底盘的系统框图

6. 资料下载
资料内容:
①样机三维文件
②Ros基础入门学习资料
资料下载地址:桌面级全向底盘-本体说明


二、驱动及控制
1. 控制底盘单个轮子
实现思路
       控制底盘的四个轮子分别转动。
       下面我们先来了解一下底盘的总线舵机ID号。
底盘的头部、尾部
底盘上总线舵机ID号
操作步骤
① 下载文末资料中的参考程序Base_Experiment\Chassis_Drive\Control_single_bus_steering_gear\Control_single_bus_steering_gear.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-08-16 https://www.robotway.com/

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

  7. /*

  8. *Control single bus steering grar

  9. *

  10. *

  11. ///////////////////////////

  12. *        head

  13. * ID:001       ID:000

  14. *    ___________

  15. *   |           |

  16. *   |           |

  17. *   |           |

  18. *   |           |

  19. *   |           |

  20. *   |           |

  21. *   |___________|

  22. * ID:003       ID:002   

  23. *      Rear end

  24. *

  25. * 2020.8.7 by boris

  26. //////////////////////////

  27. */

  28. #define mySerial Serial2           //Serial port used by bus steering gear

  29. #define Serial_Baud_Rate 115200    //Serial Port baud rate

  30. #define BusServoSerialBaud 115200   //Bus steering gear baud rate

  31. #define wheel_speed_forward 0.08   //wheel forward speed

  32. #define wheel_speed_back -0.08     //wheel back speed

  33. #define wheel_speed_stop 0.0       //wheel stop speed

  34. enum{FORWARD_LEFT=1,FORWARD_RIGHT,BACK_LEFT,BACK_RIGHT,STOP};//wheel named

  35. void setup(){

  36.   delay(1100);Serial.begin(Serial_Baud_Rate);

  37.   mySerial.begin(BusServoSerialBaud);delay(1000);

  38. }

  39. void loop(){

  40.   control_bus_steering_gear_test();// control single bus steering gear

  41. }

  42. void control_bus_steering_gear_test()

  43. {

  44.   Car_Move(FORWARD_LEFT,wheel_speed_forward);delay(1000);Stop_car();   //left front wheel forward

  45.   Car_Move(FORWARD_LEFT,wheel_speed_back);delay(1000);Stop_car();      //left front wheel backword



  46.   Car_Move(FORWARD_RIGHT,wheel_speed_forward);delay(1000);Stop_car();   //right front wheel forward

  47.   Car_Move(FORWARD_RIGHT,wheel_speed_back);delay(1000);Stop_car();     //right front wheel backword



  48.   Car_Move(BACK_LEFT,wheel_speed_forward);delay(1000);Stop_car();      //left rear wheel forward

  49.   Car_Move(BACK_LEFT,wheel_speed_back);delay(1000);Stop_car();         //left rear wheel backword



  50.   Car_Move(BACK_RIGHT,wheel_speed_forward);delay(1000);Stop_car();     //right rear wheel backword

  51.   Car_Move(BACK_RIGHT,wheel_speed_back);delay(1000);Stop_car();        //right rear wheel backword

  52. }
复制代码

② 将底盘轮子朝上,观察每个轮子的转动效果

2. 底盘的基本运动
实现思路
       实现底盘前进、后退、左平移、右平移、左转、右转的功能。
操作步骤
① 下载文末资料中的参考程序Base_Experiment\Chassis_Drive\Control_Car_Movement\Control_Car_Movement.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-08-16 https://www.robotway.com/

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

  7. /*

  8. * car action test (include:forward, back, turnleft,turnright, left translation, right translation)

  9. *                        

  10. *

  11. * IP address of bus steering gear

  12. *        head

  13. * ID:001       ID:000

  14. *    ___________

  15. *   |           |

  16. *   |           |

  17. *   |           |

  18. *   |           |

  19. *   |           |

  20. *   |           |

  21. *   |___________|

  22. * ID:003       ID:002   

  23. *      Rear end

  24. *

  25. * 2020.8.7 by boris

  26. ////////////////////////////////

  27. */

  28. #define ActionDelayTimes 1000

  29. #define mySerial Serial2

  30. #define BusServoSerialBaud 115200

  31. #define wheel_speed_forward 0.08    //car forward speed

  32. #define wheel_speed_back -0.08      //car back speed

  33. #define wheel_speed_stop 0.0        //car stop speed

  34. #define wheel_speed_left 0.08       //car turnleft speed

  35. #define wheel_speed_right -0.08     //car turnright speed

  36. #define wheel_speed_left_translation 0.08   //speed of car left translation

  37. #define wheel_speed_right_translation -0.08 //speed of car right translation

  38. enum{FORWARD=1,BACK,LEFT,RIGHT,LEFT_TRANSLATION,RIGHT_TRANSLATION,STOP}; //the movement state of the car

  39. float wheel_Speed[4]={0,0,0,0};

  40. char cmd_return[200];

  41. void setup()

  42. {

  43.   delay(1000);

  44.   Serial.begin(57600);delay(1000);//open serial

  45.   mySerial.begin(BusServoSerialBaud);delay(1000);//open serial2

  46.   car_move_test();

  47. }

  48. void loop()

  49. {

  50.    //car_move_test();//car action test

  51.    //car_stop();

  52. }

  53. void car_move_test()//car action test

  54. {

  55.   Car_Move(FORWARD);delay(ActionDelayTimes);          // forward

  56.   car_stop();

  57.   Car_Move(BACK);delay(ActionDelayTimes);             // back

  58.   car_stop();

  59.   Car_Move(LEFT_TRANSLATION);delay(ActionDelayTimes); //left translation

  60.   car_stop();

  61.   Car_Move(RIGHT_TRANSLATION);delay(ActionDelayTimes);//right translation

  62.   car_stop();

  63.   Car_Move(LEFT);delay(ActionDelayTimes);             //turnleft

  64.   car_stop();

  65.   Car_Move(RIGHT);delay(ActionDelayTimes);            //turn right

  66.   car_stop();  

  67. }
复制代码

② 观察底盘的运动情况。

3.资料下载

资料内容:程序源代码
资料下载地址:桌面级全向底盘-驱动及控制

三、传感器使用
1. 底盘循迹-灰度传感器
实现思路
       实现全向底盘可以按指定路线进行行走的功能(实验场景如下图所示)。

操作步骤
① 连接电路。如下图所示是全向底盘上的4个灰度接线,但本实验中我们只需要用到头部的两个灰度传感器即可。
底盘的头部、尾部
头部的灰度传感器:接42、44号引脚


② 下载文末资料中的参考程序Base_Experiment\Tracking_Car\Tracking_Car.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-08-16 https://www.robotway.com/

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

  7. /*

  8. *Tracking Car

  9. *

  10. *        head

  11. * pin:42      pin:44

  12. *    ___________

  13. *   |           |

  14. *   |           |

  15. *   |           |

  16. *   |           |

  17. *   |___________|

  18. * pin:36      pin:34   

  19. *      Rear end

  20. * 2020.8.7 by boris

  21. */

  22. #define mySerial Serial2         //statement serial2

  23. #define Sensor_Numbers 4         //numbers of sensor

  24. #define Serial_Baud_Rate 115200   //serial port baud rate

  25. #define BusServoSerialBaud 115200//bus steering gear baud rate

  26. #define wheel_speed_forward 0.06 //car forward speed

  27. #define wheel_speed_back -0.06   //car back speed

  28. #define wheel_speed_stop 0.0     //car stop speed

  29. #define wheel_speed_left 0.1    //car turnleft speed

  30. #define wheel_speed_right -0.1   //car turnright speed

  31. enum{FORWARD=1,BACK,LEFT,RIGHT,STOP};//the movement state of the car

  32. const int Gray_Sensor_Pin[Sensor_Numbers] = {44,42,36,34};//define gray sensor pin

  33. const int GraySensorNumbers = sizeof(Gray_Sensor_Pin)/sizeof(Gray_Sensor_Pin[0]);

  34. char cmd_return[200];

  35. void setup(){

  36.   delay(1100);Serial.begin(Serial_Baud_Rate);

  37.   Gray_Sensor_Init();

  38.   mySerial.begin(BusServoSerialBaud);delay(1000);

  39. }

  40. void loop(){

  41.   tracking_car();//car tracking

  42.   //Car_Move(STOP);

  43. }

  44. void Gray_Sensor_Init()//sensor init

  45. {

  46.   for(int i=0;i<Sensor_Numbers;i++)

  47.   {

  48.      pinMode(Gray_Sensor_Pin[i],INPUT);delay(2);

  49.   } delay(200);

  50. }

  51. void tracking_car() //car tracking

  52. {

  53.   int sensor_data[Sensor_Numbers] = {0,0,0,0};

  54.   int sum = 0;

  55.   for(int i=0;i<Sensor_Numbers-2;i++)

  56.   {

  57.      sensor_data[i] = digitalRead(Gray_Sensor_Pin[i]);

  58.      sum |= sensor_data[i] << i;

  59.   }  

  60.   switch(sum)

  61.   {

  62.     case 0: Car_Move(FORWARD); break;

  63.     case 1: Car_Move(LEFT); break;

  64.     case 2: Car_Move(RIGHT); break;

  65.     case 3: Car_Move(FORWARD); break;

  66.     default: break;

  67.   }

  68. }
复制代码
③ 观察全向底盘循迹的效果。

2. 底盘避障-超声测距
实现思路
       实现全向底盘可以在模拟的场景下进行避障然后行进的功能(实验场景如下图所示)。

操作步骤
① 连接电路,如下图所示是全向底盘的8个超声测距接线图。

② 下载文末资料中的参考程序Base_Experiment\Avoiding_Obstacles_Car\Avoiding_Obstacles_Car.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-08-16 https://www.robotway.com/

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

  7. /*

  8. * Avoid obstacles car

  9. *

  10. *

  11. *   车身位置及传感器接线:

  12. *

  13. * // Y

  14. * // |

  15. * // |

  16. * // |              t:53                   t:8  

  17. * // |     (ID:003) e:A15                  e:9   (ID:001)

  18. * // |   t:37    A - - - - - - - - - - - - - - - - - -Y: t:39

  19. * // |   e:38    |                                    |   e:40

  20. * // |          |                                    |         车头

  21. * // |   t:31    |                                    |   t:45

  22. * // |   e:32    Z - - - - - - - - - - - - - - - - - -X: e:46

  23. * // |     (ID:002) t:47                   t:A13   (ID:000)

  24. * // |              e:48                   e:A14

  25. * // 0-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- X

  26. * ////////////////////////////////////////////////////////////////////////////////////////////////

  27. *  

  28. * 2020.8.7 by boris

  29. */

  30. #define mySerial Serial2            //Serial port used by bus steering gear           

  31. #define Serial_Baud_Rate 115200     //Serial Port baud rate

  32. #define BusServoSerialBaud 115200   //Bus steering gear baud rate

  33. #define wheel_speed_forward 0.04    //car forward speed

  34. #define wheel_speed_forward_up 0.06 //forward speed up

  35. #define wheel_speed_back -0.04      //car back speed

  36. #define wheel_speed_stop 0.0        //car stop speed

  37. #define wheel_speed_left 0.1      //car turnleft speed

  38. #define wheel_speed_right -0.1    //car turnright speed

  39. #define wheel_speed_left_translation 0.04   //speed of car left translation

  40. #define wheel_speed_right_translation -0.04 //speed of car right translation

  41. enum{FORWARD=1,BACK,LEFT,RIGHT,LEFT_TRANSLATION,RIGHT_TRANSLATION,STOP,FORWARD_UP}; //the movement state of the car

  42. char cmd_return[200];

  43. float wheel_Speed[4]={0,0,0,0};

  44. void setup(){

  45.   delay(1100);Serial.begin(Serial_Baud_Rate);

  46.   init_Ultrasonic();delay(200);

  47.   mySerial.begin(BusServoSerialBaud);delay(1000);

  48. }

  49. void loop(){

  50.   //Car_Move(STOP);delay(1000);

  51.   car_move();

  52.   //get_ultrasonic_sensor_data();

  53. }
复制代码

③ 观察全向底盘避障的效果。

3. 资料下载
资料内容:程序源代码
资料下载地址:桌面级全向底盘-传感器使用 https://www.robotway.com/h-col-260.html

回复

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-3 01:25 , Processed in 0.040567 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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