国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TFmini與舵機結合的機器人小車避障應用方案

raoyi / 1185人閱讀

摘要:舵機接線小車避障原理小車啟動后,小車開始向前運動。搭載的外部電源過重時,會影響小車車輪的摩擦力,可能兩個車輪的轉速不一致,導致小車并不能按照軌跡行駛。小車車輪在光滑地面有可能造成空轉的現(xiàn)象,導致小車不能走直線。

1.試驗設備及接線
1.1實驗設備
? MiniQ 桌面機器人底盤

底盤直徑:122mm

輪子直徑:42mm

底盤高度:15mm

兼容 Arduino 標準板及 Romeo 控制器固定孔

電機參數(shù):

? N20 電機電壓:3-9V
? 無負載轉速:13000rpm
? 50:1 減速箱
? 260rpm@6V
? 40mA@6V
? 360mA 堵轉@6V
? 10 盎司英寸扭矩@6V

? Romeo 三合一 Arduino 兼容控制器

采用 Atmel Atmega328 單片機

Arduino UNO bootloader

完全兼容 Aruduino UNO 的端口布局

集成 APC220 無線數(shù)傳和 DF-BluetoothV3(SKU:TEL0026)藍牙模塊接口

支持 5 組 I2C 總線接口

支持兩路電機驅動,峰值電流 2A,4 個控制口使用跳線切換

外部輸入電壓范圍:6V~20V

更詳細的參數(shù)介紹詳見附錄的網(wǎng)頁地址。

? MiniQ 小車上層安裝板

? Benewake TFmini 標版

TFmini 詳細參數(shù)見 TFmini 使用說明。

? 9g 舵機

1.2接線

2.小車避障原理
小車啟動后,小車開始向前運動。當雷達探測到前方閾值內有障礙物時,小車停止運動,開始左右掃描尋路。舵機搭載 TFmini 從 90°開始向 180°掃描,然后從 180°向 0°掃描。

當掃描方向無障礙物時,小車向此方向轉向,舵機回正到 90°。若從左至右掃描一圈都沒有可以行進的路線,則小車后退,舵機回正。
邏輯流程圖如下所示:

3.注意事項
? 當前避障原理模型只用來拋磚引玉,探索用 TFmini 避障的可行性,并不能大范圍的適用于大規(guī)模的商業(yè)場景,如有需要,應以專業(yè)軟件開發(fā)人員的代碼為準。
? 搭載的外部電源過重時,會影響小車車輪的摩擦力,可能兩個車輪的轉速不一致,導致小車并不能按照軌跡行駛。
? 小車車輪在光滑地面有可能造成空轉的現(xiàn)象,導致小車不能走直線。
? 如果多帶帶對 TFmini 外部供電,則需將外部電源和控制板共地處理。
? 如果搭載更高復雜度的程序,要考慮芯片的能力,當前開發(fā)板在跑程序時已經(jīng)發(fā)現(xiàn)會有卡頓的現(xiàn)象。
4.附錄
4.1代碼

include

Servo myservo;
int pos=90; //定義舵機角度
bool flag=true;//定義舵機轉向
float dist_f;//定義 foward 方向距離
float dist_s;//定義 sideway 方向距離
int E1=5; //定義 M1 使能
int E2=6; //定義 M2 使能
int M1=4; //定義 M1 控制
int M2=7; //定義 M2 控制
int temp_distance =0;
/**

雙輪停止

*/
void brake(void){
digitalWrite(E1,LOW); //給 E1 低電平
digitalWrite(E2,LOW); //給 E2 低電平
}
/**

雙輪前進

*/
void advance(char a, char b){
analogWrite(E1,a);
digitalWrite(M1,LOW);
analogWrite(E2,b);
digitalWrite(M2,LOW);
}
/**

雙輪后退

*/
void back(char a, char b){
analogWrite(E1,a);
digitalWrite(M1,HIGH);
analogWrite(E2,b);
digitalWrite(M2,HIGH);
}
/**

左轉

*/
void turn_L(char a, char b){
analogWrite(E1,a);
digitalWrite(M1,LOW);
analogWrite(E2,b);
digitalWrite(M2,HIGH);
}
/**

右轉

*/
void turn_R(char a, char b){
analogWrite(E1,a);
digitalWrite(M1,HIGH);
analogWrite(E2,b);
digitalWrite(M2,LOW);
}
/**

讀取 TFmini 測量結果

*/
void getTFminiData(int distance, int strength) {
static char i = 0;
char j = 0;
int checksum = 0;
static int rx[9];
if(Serial.available()) {
rx = Serial.read();
if(rx[0] != 0x59) {
i = 0;
} else if(i == 1 && rx[1] != 0x59) {
i = 0;
} else if(i == 8) {
for(j = 0; j < 8; j++) {
checksum += rx[j];
}
/*
if(rx[8] == (checksum % 256)) {
distance = rx[2] + rx[3] 256;
strength = rx[4] + rx[5] 256;
}*/
distance = rx[2] + rx[3] 256;
strength = rx[4] + rx[5] 256;
i = 0;
} else {
i++;
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
//舵機的插口在 4
myservo.attach(4);
brake();
/*

將雷達指向前方

*/
myservo.write(pos);
/*

設置輪胎電機輸出口

*/
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
delay(10);
}
void loop() {
/*

讀數(shù)一次

*/
int distance = 0;
int strength = 0;
getTFminiData(&distance, &strength);
while(!distance) {
getTFminiData(&distance, &strength);
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("cm ");
Serial.print("strength: ");
Serial.println(strength);
}
/*

設置 30CM 閾值

*/
if(distance <= 30 && distance > 0){
temp_distance = distance;
}
delay(10);
/*

判斷讀數(shù)距離

如果度數(shù)距離小于閾值,則停車,開始向左向右掃描,直到掃描出有空隙可以走,然后車輪轉彎,然后掃描器回正

如果讀數(shù)距離大于閾值,則開車

*/
if(temp_distance <= 30 && temp_distance >= 0){
brake();
/*

判斷當前舵機應該向左還是向右轉

*/
if(flag){
if(pos<170){
pos=pos+45;
}else{
flag = false;
}
/*

如果探測距離大于閾值,則舵機回正,小車轉向

*/
if(distance > 32){
pos = 90;
myservo.write(pos);
delay(1200);
//判斷小車回正方向
if(pos >= 90){
turn_L(35,35);
}else{
turn_R(35,35);
}
delay(250);
temp_distance = distance;
}
/*

如果探測距離小于閾值,則繼續(xù)掃描

*/
else{
myservo.write(pos);
delay(1200);
}
}else{
if(pos>10){
pos=pos-45;
}else{
flag=true;
}
/*

如果探測距離大于閾值,則舵機回正,小車轉向

*/
if(distance > 32){
pos = 90;
myservo.write(pos);
delay(1200);
//判斷小車回正方向
if(pos >= 90){
turn_L(35,35);
}else{
turn_R(35,35);
}
delay(250);
temp_distance = distance;
}
/*

如果探測距離小于閾值,則繼續(xù)掃描

*/
else{
myservo.write(pos);
delay(1200);
}
}
}
/*

如果前方?jīng)]有障礙物,直行

*/
else if(distance > 32 && distance < 1200){
advance(35,35);
}
/*

如果雷達掛了,小車停止

*/
else if(distance == -3){
brake();
}
}
如您認可上述經(jīng)驗,歡迎您的聯(lián)系:
010-57456983
www.benewake.com
北醒(北京)光子科技有限公司
北醒激光雷達
電話:010-5745 6983
郵箱:bw@benewake.com
官方微信公眾號:benewake-bj
或搜索淘寶:北醒光子科技有限公司https://shop155404578.taobao....

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105679.html

相關文章

  • 樹莓派31/100 - Pico連接HC-SR04超聲波傳感器,為自動避障智能小車打好基礎

    摘要:超聲波傳感器,英文,既可以發(fā)射超聲波,也可以接收超聲波,它有一個重要作用,可以提前探測到附近的物體,而且通過聲波速度,能夠推算出附近物體離傳感器的大概距離。 超聲波...

    neuSnail 評論0 收藏0
  • 基于STM32f103c8t6和L292N驅動設計避障小車(核心函數(shù)建立為自己所寫)

    基于STM32f103c8t6和L292N驅動設計避障小車(核心函數(shù)的建立為自己所寫) 一.項目感觸 完成這個項目自己一開始也是無法從本身上出發(fā),看著這個最小系統(tǒng)板和這個電機驅動模塊上面想著怎樣實現(xiàn)讓這兩塊板子實現(xiàn)四個電機上面轉動呢,還要加入避障模塊,自己一開始一頭霧水,于是開始了漫長的借鑒之路,首先作為一個開發(fā)者,我覺得學習的地方首選是B站,所以我找了相關的做智能小車的視頻 首先是B站智能小車教...

    CoffeX 評論0 收藏0
  • 四足機器狗——12自由度舵機狗DIY(一)

    摘要:四足仿生機器人具有高機動性,負載能力和適應能力強,可運用于物資運輸搶險救援等方面,具有廣闊前景。由于制作電機狗需要高昂的成本。自主設計制造一款舵機狗來學習研究四足機器狗的步態(tài)算法是一件性價比極高且很有意義的一件事。 文章目錄 前言 一、初步了解四足結構 1.1.2串聯(lián)機構 1.2?...

    不知名網(wǎng)友 評論0 收藏0
  • 樹莓派視覺小車 -- 小球追蹤(顏色追蹤)(OpenCV色彩空間HSV)

    摘要:一般調高飽和度會降低中相對較低的數(shù)值,凸顯主要顏色的純度。對當前唯一的方法霍夫梯度法,它表示在檢測階段圓心的累加器閾值。第八個參數(shù),類型的有默認值,表示圓半徑的最小值。 目錄 效果展示? 基礎理論(HSV) 為什么用HSV空間而不是RGB空間? HSV 1、Hue(色相) 2、Value(明...

    developerworks 評論0 收藏0
  • TFmini-Plus 實現(xiàn)人流、身高測量方案

    摘要:人流身高測量儀說明本方案為利用北醒公司產(chǎn)品和板結合開發(fā)出的小設備。其作用為統(tǒng)計人流數(shù)量以及相應目標身高高度。人流身高測量原理雷達啟動后,設置安裝高度身高限度下限值??紤]人行走時身高會浮動,盡量讓腳落在光斑左右,探測到最高值,減小誤差。 人流身高測量儀說明 本方案為利用北醒公司產(chǎn)品 TFmini-Plus 和 Arduino-UNO 板結合開發(fā)出的小設備。其作用為:統(tǒng)計人流數(shù)量以及相應目...

    xbynet 評論0 收藏0

發(fā)表評論

0條評論

raoyi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<