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

一、本体说明

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.mzph.cn/news/67247.shtml

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

相关文章

【STM32】学习笔记(串口通信)

串口通信 通信接口硬件电路电平标准USARTUSART框图 通信接口 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#…

深入浅出AXI协议(5)——数据读写结构读写响应结构

目录 一、前言 二、写选通&#xff08;Write strobes&#xff09; 三、窄传输&#xff08;Narrow transfers&#xff09; 1、示例1 2、示例2 四、字节不变性&#xff08;Byte invariance&#xff09; 五、未对齐的传输&#xff08;Unaligned transfers&#xff09; 六…

MySQL基本查询

MySQL基本查询 表的增删查改Create(增)Retrieve&#xff08;查&#xff09;select列全列查询指定列查询查询字段为表达式为查询结果指定别名结果去重 where 条件英语不及格的同学的英语成绩语文成绩在 [80, 90] 分的同学及语文成绩数学成绩是 58 或者 59 或者 98 或者 99 分的同…

华为云服务

【计算】 弹性云服务器ECS 弹性云服务器&#xff08;Elastic Cloud Server&#xff0c;ECS&#xff09;是由CPU、内存、操作系统、云硬盘组成的基础的计算组件。弹性云服务器创建成功后&#xff0c;您就可以像使用自己的本地PC或物理服务器一样&#xff0c;在云上使用弹性云服…

【C#项目实战】控制台游戏——勇士斗恶龙(1)

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;最近开始正式的步入学习游戏开发的正轨&#xff0c;想要通过写博客的方式来分享自己学到的知识和经验&#xff0c;这就是开设本专栏的目的。希望…

因为axios请求后端,接收不到token的问引出的问题

vue axios请求后端接受不到token的问题。 相关概念 什么是跨域&#xff1f; 跨域指的是在浏览器环境下&#xff0c;当发起请求的域&#xff08;或者网站&#xff09;与请求的资源所在的域之间存在协议、主机或端口中的任何一个条件不同的情况。换句话说&#xff0c;只要协议、…

ubuntu下Anaconda安装与使用教程

前言 好久没用anaconda了&#xff0c;还记得之前用anaconda的欢乐时光。pytorch和paddlepaddle(飞浆)&#xff0c;怀念&#xff0c;可生活&#xff08;换了ubuntu系统之后&#xff09;教会了我残忍&#xff08;可能很难有机会再用windows的anaconda了&#xff09;。找个时间&a…

爬虫源码---爬取小猫猫交易网站

前言&#xff1a; 本片文章主要对爬虫爬取网页数据来进行一个简单的解答&#xff0c;对与其中的数据来进行一个爬取。 一&#xff1a;环境配置 Python版本&#xff1a;3.7.3 IDE:PyCharm 所需库&#xff1a;requests &#xff0c;parsel 二&#xff1a;网站页面 我们需要…

Java设计模式:四、行为型模式-07:状态模式

文章目录 一、定义&#xff1a;状态模式二、模拟场景&#xff1a;状态模式2.1 状态模式2.2 引入依赖2.3 工程结构2.4 模拟审核状态流转2.4.1 活动状态枚举2.4.2 活动信息类2.4.3 活动服务接口2.4.4 返回结果类 三、违背方案&#xff1a;状态模式3.0 引入依赖3.1 工程结构3.2 活…

欧科云链研究院探析Facebook稳定币发行经历会不会在PayPal重演

引言 作者最近的报告-探析PayPal发行稳定币是否会重蹈Facebook覆辙-近期被英国的金融时报&#xff08;中文版&#xff09;刊登。由于该报告在欧科云链研究院内部反响较好&#xff0c;下面就带大家简单的剖析这篇报告的主要内容。 *这篇文章主要由对比分析&#xff08;已删减&a…

网络编程 day 7

1、将.txt表数据导入数据库中 #include <myhead.h>#define ERR_MSG(msg) do{\fprintf(stderr,"__%d__:",__LINE__);\perror(msg);\ }while(0)int main(int argc, const char *argv[]) {//以只读的方式打开dict.txt文件FILE* fd;if((fdfopen("./dict.txt&q…

20230831-完成登录框的按钮操作,并在登录成功后进行界面跳转

登录框的按钮操作&#xff0c;并在登录成功后进行界面跳转 app.cpp #include "app.h" #include <cstdio> #include <QDebug> #include <QLineEdit> #include <QLabel> #include <QPainter> #include <QString> #include <Q…

Python操作Excel教程(图文教程,超详细)Python xlwings模块详解,

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 xlwings模块详解 1、快速入门1、打开Excel2、创建工作簿2.1、使用工作簿2.2、操作…

【css】z-index与层叠上下文

z-index属性用来设置元素的堆叠顺序&#xff0c;使用z-index有一个大的前提&#xff1a;z-index所作用元素的样式列表中必须有position属性并且属性值为absolute、relative或fixed中的一个&#xff0c;否则z-index无效。 层叠上下文 MDN讲解 我们给元素设置的z-index都是有一…

面试中的时间管理:如何在有限时间内展示最大价值

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

SVN 集中式版本管理平台

1. SVN 命令行工具下载地址 https://www.visualsvn.com/downloads/ 2. 下载SVN 命令行工具后&#xff0c;解压后就可以了&#xff0c;不需要安装的 3. 将bin 文件添加到系统环境变量中&#xff0c;不知道怎么打开系统环境变量的自己问度娘 4. 添加到系统环境变量中&#xff0c;…

21.CSS的动态圆形进度条

效果 源码 <!doctype html> <html><head><meta charset="utf-8"><title>Animated Circular Progress | CSS Only</title><link rel="stylesheet" href="style.css"></head><body><di…

K8S自动化运维容器Docker集群

K8S&#xff1a;K8S自动化运维容器化(Docker)集群 一.k8s概述 1.k8s是什么 &#xff08;1&#xff09;K8S全程为Kubernetes&#xff0c;由于K到S直接有8个字母简称为K8S。 &#xff08;2&#xff09;版本&#xff1a;目前一般是1.18~1.2.0&#xff0c;后续可能会到1.24-1.2…

「解析」YOLOv5 classify分类模板

学习深度学习有些时间了&#xff0c;相信很多小伙伴都已经接触 图像分类、目标检测甚至图像分割(语义分割)等算法了&#xff0c;相信大部分小伙伴都是从分类入门&#xff0c;接触各式各样的 Backbone算法开启自己的炼丹之路。 但是炼丹并非全是 Backbone&#xff0c;更多的是各…

为C# Console应用化个妆

说到Windows的cmd&#xff0c;刻板印象就是黑底白字的命令行界面。跟Linux花花绿绿的界面比&#xff0c;似乎单调了许多。但其实C#开发的Console应用也可以摆脱单调非黑即白的UI。 最近遇到个需求&#xff0c;要在一堆纯文本文件里找指定的关键字&#xff08;后续还要人肉判断…