机器人制作开源方案 | 桌面级全向底盘--本体说明
本帖最后由 机器谱 于 2023-9-6 09:26 编辑一、本体说明
1. 底盘概述
该底盘是一款模块化的桌面级应用型底盘,基于应用级软件架构设计、应用级硬件系统设计、典型应用型底盘机械系统设计。
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgi8eWpwYop6bTzQIwoAk4uQY!400x400.png.webp 底盘本体为一个采用半独立刚性悬挂的四驱全向底盘。
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg2ceWpwYo2J2ORDCgCTjsBA!900x900.png.webp
1. 软件环境介绍
操作系统:Ubuntu18.04系统。基于Debian GNU/Linux,支持x86、amd64(即x64)、ARM和ppc架构。
仿真系统:基于开源机器人操作系统ROS melodic和开源软件平台Arduino开发。上位机采用ROS melodic,基于Rviz完成全向移动底盘slam导航运动规划,采用gazebo完成全向移动底盘物理运动仿真;下位机采用Arduino实现对全向移动底盘运动的控制。
注意:准备一个外接显示器。
2. 硬件配置及主要参数
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgksmWpwYogJvw7QMwiQk4hwU!600x600.png.webp
硬件配置及主要参数表
序号图例模块主要参数
1https://28846868.s21i.faiusr.com/4/ABUIABAEGAAghcuWpwYo-r_UsgIw1gI4jwI!200x200.png主机×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
2https://28846868.s21i.faiusr.com/4/ABUIABAEGAAguMuWpwYo0NuwgQEwpQI4xAE!200x200.png悬架模块×1
尺寸:(长×宽×高)380x290x120mm。半独立悬挂。支持四轮安装。安装8个超声测距传感器。
3https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg3suWpwYozLiZ4gQw3QE4sAE!200x200.png轮模块×4
尺寸:(长×宽×高)105mm×60mm×85mm。内部安装高精度电机,可扩展为摆动模块。结构:支持扩展步进电机、编码器直流电机、伺服电机。
4https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgnsyWpwYo-OD2hgYwnAI4iwI!200x200.png激光雷达×1
激光雷达测距范围0.15-12m,360°无死角扫描,测距分辨率<0.5mm,角度分辨率<1°,测量频率最小值不小于1500hz,测量频率最大值8000hz,扫描频率最小值1hz,扫描频率最大值10hz。含支架。
5
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgwsyWpwYo8pzcrQMwzAI4pAE!200x200.png
高清摄像头×1
RGB像素:1080P静态拍照分辨率:1280*720/640*480接口:USB2.0输入电压:5v麦克风:双立体麦克风音频采样率:16KHz
6https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg5MyWpwYo2obF-gMwxAI48wE!200x200.png其他配件包×1
各类线材、工具、电池、电源、显示屏等。
4. 认识底盘的电器接口
① 常用接口说明:
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAghM_WpwYovKC36AEw0gc4ugU!400x400.png.webp底盘尺寸示意图https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgl96WpwYo0OiYjAEw_AQ4hwM!400x400.png.webp底盘常用电气接口 ② 扩展电气接口说明:
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg0d6WpwYo_NuY1QQw5gQ42gE!500x500.png.webp左侧扩展接口对应图https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg7t6WpwYoxKGKnQIwsAY4rQI!500x500.png.webp车头扩展接口对应图https://28846868.s21i.faiusr.com/4/ABUIABAEGAAggt_WpwYolJ_MWzChBjihAg!500x500.png.webp车尾扩展接口对应图5. 底盘简化的系统框图
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg9uCWpwYoq5G6kgMwxAU40gI.png.webp底盘的系统框图
6. 资料下载
资料内容:
①样机三维文件
②Ros基础入门学习资料
资料下载地址:桌面级全向底盘-本体说明
二、驱动及控制
1. 控制底盘单个轮子
实现思路
控制底盘的四个轮子分别转动。
下面我们先来了解一下底盘的总线舵机ID号。
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg4IKbpwYon8qSgAMw4AI4vQI.png.webp底盘的头部、尾部https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg84KbpwYooISLWjDiAji-Ag.png.webp底盘上总线舵机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 at
https://opensource.org/licenses/MIT
by 机器谱 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 speed
enum{FORWARD_LEFT=1,FORWARD_RIGHT,BACK_LEFT,BACK_RIGHT,STOP};//wheel named
void 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 forward
Car_Move(FORWARD_LEFT,wheel_speed_back);delay(1000);Stop_car(); //left front wheel backword
Car_Move(FORWARD_RIGHT,wheel_speed_forward);delay(1000);Stop_car(); //right front wheel forward
Car_Move(FORWARD_RIGHT,wheel_speed_back);delay(1000);Stop_car(); //right front wheel backword
Car_Move(BACK_LEFT,wheel_speed_forward);delay(1000);Stop_car(); //left rear wheel forward
Car_Move(BACK_LEFT,wheel_speed_back);delay(1000);Stop_car(); //left rear wheel backword
Car_Move(BACK_RIGHT,wheel_speed_forward);delay(1000);Stop_car(); //right rear wheel backword
Car_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 at
https://opensource.org/licenses/MIT
by 机器谱 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 translation
enum{FORWARD=1,BACK,LEFT,RIGHT,LEFT_TRANSLATION,RIGHT_TRANSLATION,STOP}; //the movement state of the car
float wheel_Speed={0,0,0,0};
char cmd_return;
void setup()
{
delay(1000);
Serial.begin(57600);delay(1000);//open serial
mySerial.begin(BusServoSerialBaud);delay(1000);//open serial2
car_move_test();
}
void loop()
{
//car_move_test();//car action test
//car_stop();
}
void car_move_test()//car action test
{
Car_Move(FORWARD);delay(ActionDelayTimes); // forward
car_stop();
Car_Move(BACK);delay(ActionDelayTimes); // back
car_stop();
Car_Move(LEFT_TRANSLATION);delay(ActionDelayTimes); //left translation
car_stop();
Car_Move(RIGHT_TRANSLATION);delay(ActionDelayTimes);//right translation
car_stop();
Car_Move(LEFT);delay(ActionDelayTimes); //turnleft
car_stop();
Car_Move(RIGHT);delay(ActionDelayTimes); //turn right
car_stop();
}
② 观察底盘的运动情况。
3.资料下载
资料内容:程序源代码
资料下载地址:桌面级全向底盘-驱动及控制
三、传感器使用
1. 底盘循迹-灰度传感器
实现思路
实现全向底盘可以按指定路线进行行走的功能(实验场景如下图所示)。
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgqJSwpwYouLKImgEw3gY4gAM!600x600.png.webp
操作步骤
① 连接电路。如下图所示是全向底盘上的4个灰度接线,但本实验中我们只需要用到头部的两个灰度传感器即可。
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg8ZSwpwYo9K3r2QQw4AI4vQI.png.webp底盘的头部、尾部https://28846868.s21i.faiusr.com/4/ABUIABAEGAAghJWwpwYov6z8YzDcBDi5Bg!400x400.png.webp头部的灰度传感器:接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 at
https://opensource.org/licenses/MIT
by 机器谱 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 speed
enum{FORWARD=1,BACK,LEFT,RIGHT,STOP};//the movement state of the car
const int Gray_Sensor_Pin = {44,42,36,34};//define gray sensor pin
const int GraySensorNumbers = sizeof(Gray_Sensor_Pin)/sizeof(Gray_Sensor_Pin);
char cmd_return;
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,INPUT);delay(2);
} delay(200);
}
void tracking_car() //car tracking
{
int sensor_data = {0,0,0,0};
int sum = 0;
for(int i=0;i<Sensor_Numbers-2;i++)
{
sensor_data = digitalRead(Gray_Sensor_Pin);
sum |= sensor_data << 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. 底盘避障-超声测距
实现思路
实现全向底盘可以在模拟的场景下进行避障然后行进的功能(实验场景如下图所示)。
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg-pewpwYokJH5bDC6BTi1Aw!600x600.png.webp
操作步骤
① 连接电路,如下图所示是全向底盘的8个超声测距接线图。
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgrJiwpwYo0NLAmQMw4gc4nAc!600x600.png.webp
② 下载文末资料中的参考程序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 at
https://opensource.org/licenses/MIT
by 机器谱 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 translation
enum{FORWARD=1,BACK,LEFT,RIGHT,LEFT_TRANSLATION,RIGHT_TRANSLATION,STOP,FORWARD_UP}; //the movement state of the car
char cmd_return;
float wheel_Speed={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();
}
③ 观察全向底盘避障的效果。
3. 资料下载
资料内容:程序源代码
资料下载地址:桌面级全向底盘-传感器使用 https://www.robotway.com/h-col-260.html
页:
[1]