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

一、本体说明

1. 底盘概述

      该底盘是一款模块化的桌面级应用型底盘,基于应用级软件架构设计、应用级硬件系统设计、典型应用型底盘机械系统设计。

      底盘本体为一个采用半独立刚性悬挂的四驱全向底盘。

2. 软件环境介绍

      操作系统:Ubuntu18.04系统。基于Debian GNU/Linux,支持x86、amd64(即x64)、ARM和ppc架构。

      仿真系统:基于开源机器人操作系统ROS melodic和开源软件平台Arduino开发。上位机采用ROS melodic,基于Rviz完成全向移动底盘slam导航运动规划,采用gazebo完成全向移动底盘物理运动仿真;下位机采用Arduino实现对全向移动底盘运动的控制。

      注意:准备一个外接显示器。

3. 硬件配置及主要参数

硬件配置及主要参数

 4. 认识底盘的电器接口

    ① 常用接口说明

底盘尺寸示意图
底盘常用电气接口

    ② 扩展电气接口说明

左侧扩展接口对应图
车头扩展接口对应图
车尾扩展接口对应图

5. 底盘简化的系统框图

底盘的系统框图

二、驱动及控制

1. 控制底盘单个轮子

实现思路

      控制底盘的四个轮子分别转动。

      下面我们先来了解一下底盘的总线舵机ID号。

底盘的头部、尾部
底盘上总线舵机ID号

 操作步骤

① 下载文末资料中的参考程序Base_Experiment\Chassis_Drive\Control_single_bus_steering_gear\Control_single_bus_steering_gear.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-16 https://www.robotway.com/------------------------------*//**Control single bus steering grar**///*        head* ID:001       ID:000*    ___________*   |           |*   |           |*   |           |*   |           |*   |           |*   |           |*   |___________|* ID:003       ID:002   *      Rear end** 2020.8.7 by boris//*/#define mySerial Serial2           //Serial port used by bus steering gear#define Serial_Baud_Rate 115200    //Serial Port baud rate#define BusServoSerialBaud 115200   //Bus steering gear baud rate#define wheel_speed_forward 0.08   //wheel forward speed#define wheel_speed_back -0.08     //wheel back speed#define wheel_speed_stop 0.0       //wheel stop speedenum{FORWARD_LEFT=1,FORWARD_RIGHT,BACK_LEFT,BACK_RIGHT,STOP};//wheel namedvoid setup(){delay(1100);Serial.begin(Serial_Baud_Rate);mySerial.begin(BusServoSerialBaud);delay(1000);}void loop(){control_bus_steering_gear_test();// control single bus steering gear}void control_bus_steering_gear_test(){Car_Move(FORWARD_LEFT,wheel_speed_forward);delay(1000);Stop_car();   //left front wheel forwardCar_Move(FORWARD_LEFT,wheel_speed_back);delay(1000);Stop_car();      //left front wheel backwordCar_Move(FORWARD_RIGHT,wheel_speed_forward);delay(1000);Stop_car();   //right front wheel forwardCar_Move(FORWARD_RIGHT,wheel_speed_back);delay(1000);Stop_car();     //right front wheel backwordCar_Move(BACK_LEFT,wheel_speed_forward);delay(1000);Stop_car();      //left rear wheel forwardCar_Move(BACK_LEFT,wheel_speed_back);delay(1000);Stop_car();         //left rear wheel backwordCar_Move(BACK_RIGHT,wheel_speed_forward);delay(1000);Stop_car();     //right rear wheel backwordCar_Move(BACK_RIGHT,wheel_speed_back);delay(1000);Stop_car();        //right rear wheel backword}

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

2. 底盘的基本运动

实现思路

      实现底盘前进、后退、左平移、右平移、左转、右转的功能。

操作步骤

① 下载文末资料中的参考程序Base_Experiment\Chassis_Drive\Control_Car_Movement\Control_Car_Movement.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-16 https://www.robotway.com/------------------------------*//** car action test (include:forward, back, turnleft,turnright, left translation, right translation)*                         ** IP address of bus steering gear*        head* ID:001       ID:000*    ___________*   |           |*   |           |*   |           |*   |           |*   |           |*   |           |*   |___________|* ID:003       ID:002   *      Rear end** 2020.8.7 by boris*/#define ActionDelayTimes 1000#define mySerial Serial2#define BusServoSerialBaud 115200#define wheel_speed_forward 0.08    //car forward speed#define wheel_speed_back -0.08      //car back speed#define wheel_speed_stop 0.0        //car stop speed#define wheel_speed_left 0.08       //car turnleft speed#define wheel_speed_right -0.08     //car turnright speed#define wheel_speed_left_translation 0.08   //speed of car left translation#define wheel_speed_right_translation -0.08 //speed of car right translationenum{FORWARD=1,BACK,LEFT,RIGHT,LEFT_TRANSLATION,RIGHT_TRANSLATION,STOP}; //the movement state of the carfloat wheel_Speed[4]={0,0,0,0};char cmd_return[200];void setup(){delay(1000);Serial.begin(57600);delay(1000);//open serialmySerial.begin(BusServoSerialBaud);delay(1000);//open serial2car_move_test();}void loop(){//car_move_test();//car action test//car_stop();}void car_move_test()//car action test{Car_Move(FORWARD);delay(ActionDelayTimes);          // forwardcar_stop();Car_Move(BACK);delay(ActionDelayTimes);             // backcar_stop();Car_Move(LEFT_TRANSLATION);delay(ActionDelayTimes); //left translationcar_stop();Car_Move(RIGHT_TRANSLATION);delay(ActionDelayTimes);//right translationcar_stop();Car_Move(LEFT);delay(ActionDelayTimes);             //turnleftcar_stop();Car_Move(RIGHT);delay(ActionDelayTimes);            //turn rightcar_stop();  }

② 观察底盘的运动情况。

三、传感器使用

1. 底盘循迹-灰度传感器

实现思路

      实现全向底盘可以按指定路线进行行走的功能(实验场景如下图所示)。

操作步骤

① 连接电路。如下图所示是全向底盘上的4个灰度接线,但本实验中我们只需要用到头部的两个灰度传感器即可。

底盘的头部、尾部
头部的灰度传感器:接42、44号引脚

② 下载文末资料中的参考程序Base_Experiment\Tracking_Car\Tracking_Car.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-16 https://www.robotway.com/------------------------------*//**Tracking Car**        head* pin:42      pin:44*    ___________*   |           |*   |           |*   |           |*   |           |*   |___________|* pin:36      pin:34   *      Rear end* 2020.8.7 by boris*/#define mySerial Serial2         //statement serial2#define Sensor_Numbers 4         //numbers of sensor#define Serial_Baud_Rate 115200   //serial port baud rate#define BusServoSerialBaud 115200//bus steering gear baud rate#define wheel_speed_forward 0.06 //car forward speed#define wheel_speed_back -0.06   //car back speed#define wheel_speed_stop 0.0     //car stop speed#define wheel_speed_left 0.1    //car turnleft speed#define wheel_speed_right -0.1   //car turnright speedenum{FORWARD=1,BACK,LEFT,RIGHT,STOP};//the movement state of the carconst int Gray_Sensor_Pin[Sensor_Numbers] = {44,42,36,34};//define gray sensor pinconst int GraySensorNumbers = sizeof(Gray_Sensor_Pin)/sizeof(Gray_Sensor_Pin[0]);char cmd_return[200];void setup(){delay(1100);Serial.begin(Serial_Baud_Rate);Gray_Sensor_Init();mySerial.begin(BusServoSerialBaud);delay(1000);}void loop(){tracking_car();//car tracking//Car_Move(STOP);}void Gray_Sensor_Init()//sensor init{for(int i=0;i<Sensor_Numbers;i++){pinMode(Gray_Sensor_Pin[i],INPUT);delay(2);} delay(200);}void tracking_car() //car tracking{int sensor_data[Sensor_Numbers] = {0,0,0,0};int sum = 0;for(int i=0;i<Sensor_Numbers-2;i++){sensor_data[i] = digitalRead(Gray_Sensor_Pin[i]);sum |= sensor_data[i] << i;}  switch(sum){case 0: Car_Move(FORWARD); break;case 1: Car_Move(LEFT); break;case 2: Car_Move(RIGHT); break;case 3: Car_Move(FORWARD); break;default: break;}}

 ③ 观察全向底盘循迹的效果。

2. 底盘避障-超声测距

实现思路

      实现全向底盘可以在模拟的场景下进行避障然后行进的功能(实验场景如下图所示)。

操作步骤

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

② 下载文末资料中的参考程序Base_Experiment\Avoiding_Obstacles_Car\Avoiding_Obstacles_Car.ino: 

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-16 https://www.robotway.com/------------------------------*//** Avoid obstacles car***   车身位置及传感器接线:** // Y* // |* // |* // |              t:53                   t:8  * // |     (ID:003) e:A15                  e:9   (ID:001)* // |   t:37    A - - - - - - - - - - - - - - - - - -Y: t:39* // |   e:38    |                                    |   e:40* // |          |                                    |         车头* // |   t:31    |                                    |   t:45* // |   e:32    Z - - - - - - - - - - - - - - - - - -X: e:46* // |     (ID:002) t:47                   t:A13   (ID:000)* // |              e:48                   e:A14* // 0-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- X* *  * 2020.8.7 by boris*/#define mySerial Serial2            //Serial port used by bus steering gear           #define Serial_Baud_Rate 115200     //Serial Port baud rate#define BusServoSerialBaud 115200   //Bus steering gear baud rate#define wheel_speed_forward 0.04    //car forward speed#define wheel_speed_forward_up 0.06 //forward speed up#define wheel_speed_back -0.04      //car back speed#define wheel_speed_stop 0.0        //car stop speed#define wheel_speed_left 0.1      //car turnleft speed#define wheel_speed_right -0.1    //car turnright speed#define wheel_speed_left_translation 0.04   //speed of car left translation#define wheel_speed_right_translation -0.04 //speed of car right translationenum{FORWARD=1,BACK,LEFT,RIGHT,LEFT_TRANSLATION,RIGHT_TRANSLATION,STOP,FORWARD_UP}; //the movement state of the carchar cmd_return[200];float wheel_Speed[4]={0,0,0,0};void setup(){delay(1100);Serial.begin(Serial_Baud_Rate);init_Ultrasonic();delay(200);mySerial.begin(BusServoSerialBaud);delay(1000);}void loop(){//Car_Move(STOP);delay(1000);car_move();//get_ultrasonic_sensor_data();}

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

程序源代码详见 桌面级全向底盘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/97494.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑怎么设置定时关机,2个简单的操作

电脑作为现代生活中不可或缺的工具&#xff0c;我们通常会在工作或娱乐过程中使用它。但有时候&#xff0c;我们可能需要在一段时间后自动关机&#xff0c;例如在下载完成后或在睡觉前。那么电脑怎么设置定时关机呢&#xff1f;为了满足这种需求&#xff0c;电脑提供了多种定时…

Mybatis的关系关联配置

前言 MyBatis是一个流行的Java持久化框架&#xff0c;它提供了一种简单而强大的方式来映射Java对象和关系数据库之间的数据。在MyBatis中&#xff0c;关系关联配置是一种用于定义对象之间关系的方式&#xff0c;它允许我们在查询数据库时同时获取相关联的对象。 在MyBatis中&…

docker使用(一)生成,启动,更新(容器暂停,删除,再生成)

docker使用&#xff08;一&#xff09; 编写一个 Dockerfile构建镜像构建失败构建成功 运行镜像运行成功 修改代码后再次构建请不要直接进行构建&#xff0c;要将原有的旧容器删除或暂停停止成功删除成功再次构建且构建成功&#xff01; 要创建一个镜像&#xff0c;你可以按照以…

ChatGPT 一条命令总结Mysql所有知识点

想学习Mysql的同学,可以使用ChatGPT直接总结mysql所有的内容与知识点大纲 输入 总结Mysql数据库所有内容大纲与大纲细分内容 ChatGPT不光生成内容,并且直接完成了思维导图。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Offi…

桌面应用小程序,一种创新的跨端开发方案

Qt Group在提及2023年有桌面端应用程序开发热门趋势时&#xff0c;曾经提及三点&#xff1a; 关注用户体验&#xff1a;无论您是为桌面端、移动端&#xff0c;还是为两者一起开发应用程序&#xff0c;有一点是可以确定的&#xff1a;随着市场竞争日益激烈&#xff0c;对产品的期…

Python+Requests+Pytest+Excel+Allure 接口自动化测试项目实战【框架之间的对比】

--------UnitTest框架和PyTest框架的简单认识对比与项目实战-------- 定义&#xff1a; Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标…

RabbitMQ的安装和配置

将RabbitMQ文件夹传到linux根目录 开启管理界面及配置

怎么批量在图片名后加相同的文字

怎么批量在图片名后加相同的文字&#xff1f;有个小伙伴通过私信想我咨询一个问题&#xff0c;它从事的是摄影类的工作&#xff0c;每天会在电脑上存储非常多的图片&#xff0c;时间一久电脑上保存的图片非常的多&#xff0c;这让图片的管理和查找变得比较麻烦&#xff0c;有时…

学习网络编程No.5【TCP套接字通信】

引言&#xff1a; 北京时间&#xff1a;2023/8/25/15:52&#xff0c;昨天刚把耗时3天左右的文章更新&#xff0c;充分说明我们这几天并不是在摆烂中度过&#xff0c;而是在为了更文不懈奋斗&#xff0c;历时这么多天主要是因为该部分知识比较陌生&#xff0c;所以需要我们花费…

1. 安装Zookeeper

​ 1.下载 点击下载Zookeeper 单机版安装 安装Zookeeper前需要先安装jdk上传安装包rz解压安装包:tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz -C /opt/app/zookeeper zookeeper目录结构:a. bin: 放置运行脚本和工具脚本b. conf: zookeeper 默认读取配置的目录,里面会有…

SpringMVC入门指南

目录 前言 一、什么是SpringMVC 二、MVC架构模式 三、SpringMVC的工作流程 四、SpringMVC核心组件 五、SpringMVC的优势 六、SpringMVC的配置与常用注解 七、SpringMvc请求处理流程、 控制器的编写 、视图的渲染 1.请求处理流程&#xff1a; 2.控制器的编写&#xff1…

qt简易网络聊天室 数据库的练习

qt网络聊天室 服务器&#xff1a; 配置文件.pro QT core gui networkgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exac…