一、本體說明
1. 底盤概述
? ? ? 該底盤是一款模塊化的桌面級應(yīng)用型底盤,基于應(yīng)用級軟件架構(gòu)設(shè)計、應(yīng)用級硬件系統(tǒng)設(shè)計、典型應(yīng)用型底盤機械系統(tǒng)設(shè)計。
? ? ? 底盤本體為一個采用半獨立剛性懸掛的四驅(qū)全向底盤。
2. 軟件環(huán)境介紹
? ? ? 操作系統(tǒng):Ubuntu18.04系統(tǒng)。基于Debian GNU/Linux,支持x86、amd64(即x64)、ARM和ppc架構(gòu)。
? ? ? 仿真系統(tǒng):基于開源機器人操作系統(tǒng)ROS melodic和開源軟件平臺Arduino開發(fā)。上位機采用ROS melodic,基于Rviz完成全向移動底盤slam導(dǎo)航運動規(guī)劃,采用gazebo完成全向移動底盤物理運動仿真;下位機采用Arduino實現(xiàn)對全向移動底盤運動的控制。
? ? ? 注意:準(zhǔn)備一個外接顯示器。
3. 硬件配置及主要參數(shù)
硬件配置及主要參數(shù)表
?4. 認識底盤的電器接口
? ? ① 常用接口說明:


? ? ② 擴展電氣接口說明:



5. 底盤簡化的系統(tǒng)框圖

二、驅(qū)動及控制
1. 控制底盤單個輪子
實現(xiàn)思路
? ? ? 控制底盤的四個輪子分別轉(zhuǎn)動。
? ? ? 下面我們先來了解一下底盤的總線舵機ID號。


?操作步驟
① 下載文末資料中的參考程序Base_Experiment\Chassis_Drive\Control_single_bus_steering_gear\Control_single_bus_steering_gear.ino:
/*------------------------------------------------------------------------------------
版權(quán)說明: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
}
② 將底盤輪子朝上,觀察每個輪子的轉(zhuǎn)動效果。
2. 底盤的基本運動
實現(xiàn)思路
? ? ? 實現(xiàn)底盤前進、后退、左平移、右平移、左轉(zhuǎn)、右轉(zhuǎn)的功能。
操作步驟
① 下載文末資料中的參考程序Base_Experiment\Chassis_Drive\Control_Car_Movement\Control_Car_Movement.ino:
/*------------------------------------------------------------------------------------
版權(quán)說明: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[4]={0,0,0,0};
char cmd_return[200];
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();
}
② 觀察底盤的運動情況。
三、傳感器使用
1. 底盤循跡-灰度傳感器
實現(xiàn)思路
? ? ? 實現(xiàn)全向底盤可以按指定路線進行行走的功能(實驗場景如下圖所示)。
操作步驟
① 連接電路。如下圖所示是全向底盤上的4個灰度接線,但本實驗中我們只需要用到頭部的兩個灰度傳感器即可。


② 下載文末資料中的參考程序Base_Experiment\Tracking_Car\Tracking_Car.ino:
/*------------------------------------------------------------------------------------
版權(quán)說明: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[Sensor_Numbers] = {44,42,36,34};//define gray sensor pin
const 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. 底盤避障-超聲測距
實現(xiàn)思路
? ? ? 實現(xiàn)全向底盤可以在模擬的場景下進行避障然后行進的功能(實驗場景如下圖所示)。
操作步驟
① 連接電路,如下圖所示是全向底盤的8個超聲測距接線圖。
② 下載文末資料中的參考程序Base_Experiment\Avoiding_Obstacles_Car\Avoiding_Obstacles_Car.ino:?
/*------------------------------------------------------------------------------------
版權(quán)說明: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[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.zghlxwxcb.cn/news/detail-701112.html
程序源代碼詳見 桌面級全向底盤文章來源地址http://www.zghlxwxcb.cn/news/detail-701112.html
到了這里,關(guān)于機器人制作開源方案 | 桌面級全向底盤--本體說明+驅(qū)動控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!