<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何制作一個智能尋路+避障的小車?

芯片開放社區 ? 來源:芯片開放社區 ? 2022-12-22 14:27 ? 次閱讀

本文源自“玄鐵杯第二屆RISC-V應用創新大賽”活動,由OCC整理發布。

本項目利用D1 Dock Pro的USB拍照程序,結合L298N電機驅動模塊和紅外探測循跡光電傳感器模塊,制作了一個擁有智能尋路+避障功能的小車。該項目為“玄鐵杯第二屆RISC-V應用創新大賽”活動中的優秀作品。

關于自動尋路小車的技術細節,請看本文詳細介紹。

01項目介紹

隨著我國人工智能技術的進一步發展,自動駕駛汽車吸引了越來越多的目光,巡線是其行走控制方法之一,人們對智能循跡小車適應各種復雜路況的性能、安全平穩性等的要求越來越高,所以我們小組想要做一個智能尋路+避障小車。

fb0635c0-81b0-11ed-8abf-dac502259ad0.jpg

智能小車成品

02Demo的整體框架

fb459b8e-81b0-11ed-8abf-dac502259ad0.jpg

03具體實施方案

1. 首先,根據哪吒開發板的原理框圖了解開發板的工作原理,不同類型的引腳能實行怎樣的功能,怎么使各引腳工作起來。

2. 在電腦上安裝Ubuntu環境,進行編譯環境配置,源碼下載,編譯和燒寫。

3. 成功嘗試了使用哪吒開發板運行的第一個HelloWorld程序和USB拍照程序。

4. 上網購買智能小車的所有部件:1個亞克力雙層智能小車套件;2個L298N電機驅動模塊;三種類型的杜邦線各一排;1個四路紅外探測循跡光電傳感器模塊;4節5號電池。

5. 安裝、連接、測試小車的行走功能。

6. 編寫代碼,調節紅外探測的靈敏度使小車能夠較為準確地感知周圍環境并且運行測試成功。

7. 調試代碼,完善小車的功能。

fb93278c-81b0-11ed-8abf-dac502259ad0.jpg

04軟件、硬件介紹

軟件:Oracle VM VirtualBox Ubuntu 14.04虛擬機系統、全志USB燒錄驅動、AllwinnertechPhoeniSuitRelease工具。

硬件:哪吒開發板、USB數據傳輸、USB供電、??低?/u>攝像機、組裝好的智能小車。

05作品源碼

#include
#include
#include
#include 
#define EXPORT_GPIO1 "echo 2027 > /sys/class/gpio/export"
#define EXPORT_GPIO2 "echo 2020 > /sys/class/gpio/export"
#define EXPORT_GPIO3 "echo 2021 > /sys/class/gpio/export"
#define EXPORT_GPIO4 "echo 2022 > /sys/class/gpio/export"

#define UEXPORT_GPIO1 "echo 2027 > /sys/class/gpio/unexport"
#define UEXPORT_GPIO2 "echo 2020 > /sys/class/gpio/unexport"
#define UEXPORT_GPIO3 "echo 2021 > /sys/class/gpio/unexport"
#define UEXPORT_GPIO4 "echo 2022 > /sys/class/gpio/unexport"

#define GPIO1_OUTPUT "echo out > /sys/class/gpio/gpio2027/direction"
#define GPIO2_OUTPUT "echo out > /sys/class/gpio/gpio2020/direction"
#define GPIO3_OUTPUT "echo out > /sys/class/gpio/gpio2021/direction"
#define GPIO4_OUTPUT "echo out > /sys/class/gpio/gpio2022/direction"

#define LOWGPIO1 "echo 0 > /sys/class/gpio/gpio2027/value"
#define LOWGPIO2 "echo 0 > /sys/class/gpio/gpio2020/value"
#define LOWGPIO3 "echo 0 > /sys/class/gpio/gpio2021/value"
#define LOWGPIO4 "echo 0 > /sys/class/gpio/gpio2022/value"

#define HIGHGPIO1 "echo 1 > /sys/class/gpio/gpio2027/value"
#define HIGHGPIO2 "echo 1 > /sys/class/gpio/gpio2020/value"
#define HIGHGPIO3 "echo 1 > /sys/class/gpio/gpio2021/value"
#define HIGHGPIO4 "echo 1 > /sys/class/gpio/gpio2022/value"

//紅外
#define EXPORT_HW1 "echo 2023 > /sys/class/gpio/export"
#define EXPORT_HW2 "echo 2024 > /sys/class/gpio/export"
#define EXPORT_HW3 "echo 2025 > /sys/class/gpio/export"
#define EXPORT_HW4 "echo 2026 > /sys/class/gpio/export"

#define HW1_INPUT "echo in > /sys/class/gpio/gpio2023/direction"
#define HW2_INPUT "echo in > /sys/class/gpio/gpio2024/direction"
#define HW3_INPUT "echo in > /sys/class/gpio/gpio2025/direction"
#define HW4_INPUT "echo in > /sys/class/gpio/gpio2026/direction"

#define UNEXPORT_HW1 "echo 2023 > /sys/class/gpio/unexport"
#define UNEXPORT_HW2 "echo 2024 > /sys/class/gpio/unexport"
#define UNEXPORT_HW3 "echo 2025 > /sys/class/gpio/unexport"
#define UNEXPORT_HW4 "echo 2026 > /sys/class/gpio/unexport"

#define run 1
#define left 3
#define right 4
#define back 2
#define stop 5

void INIT()
{

system(EXPORT_GPIO1);
system(EXPORT_GPIO2);
system(EXPORT_GPIO3);
system(EXPORT_GPIO4);

system(EXPORT_HW1);
system(EXPORT_HW2);
system(EXPORT_HW3);
system(EXPORT_HW4);

system(GPIO1_OUTPUT);
system(GPIO2_OUTPUT);
system(GPIO3_OUTPUT);
system(GPIO4_OUTPUT);

system(HW1_INPUT);
system(HW2_INPUT);
system(HW3_INPUT);
system(HW4_INPUT);
//printf("1
");

}

void RUN()
{
system(LOWGPIO1);//0
system(HIGHGPIO2);//1
system(HIGHGPIO3);//1
system(LOWGPIO4);//0
//printf("2
");

}
void STOP()
{
system(LOWGPIO1);
system(LOWGPIO2);
system(LOWGPIO3);
system(LOWGPIO4);
//printf("3
");
}
void LEFT()
{
system(LOWGPIO1);//0
system(HIGHGPIO2);//1
system(HIGHGPIO3);//1
system(HIGHGPIO4);//1
}
void RIGHT()
{
system(HIGHGPIO1);//1
system(HIGHGPIO2);//1
system(HIGHGPIO3);//1
system(LOWGPIO4);//0
}
void BACK()
{
system(HIGHGPIO1);//1
system(LOWGPIO2);//0
system(LOWGPIO3);//0
system(HIGHGPIO4);//1
}
void MOTORRUN(int cmd)
{
  switch(cmd)
  {
  case 1:
  RUN();
  break;
  case 2:
  BACK();
  break;
  case 3:
  LEFT();
  break;
  case 4:
  RIGHT();
  break;
  case 5:
  STOP();
  break;
  }
}
int GETHW(int gpio)
{

    char path[64];
    char value_str[3];
    int fd;

    snprintf(path, sizeof(path), "/sys/class/gpio/gpio%d/value", gpio);
    fd = open(path, O_RDONLY);
    if (fd < 0) {
        perror("Failed to open gpio value for reading!");
        return -1;
    }

    if (read(fd, value_str, 3) < 0) {
        perror("Failed to read value!");
        return -1;
    }

    close(fd);
    return (atoi(value_str));
}

void TRACE()
{
int l1=GETHW(2023);
int l2=GETHW(2024);
int r1=GETHW(2025);
int r2=GETHW(2026);
//printf("%d,%d,%d,%d",l1,l2,r1,r2);
if(l1&&l2&&r1&&r2){
MOTORRUN(run);
printf("直走
");
}
else if(l1+l2r1+r2){
//MOTORRUN(back);
printf("左轉
");
sleep(0.5);
MOTORRUN(left);
}
else if(!r1&&!r2&&!l1&&!l2){
            printf("停止
");
MOTORRUN(stop);
}

}

int main(void)
{
INIT();
while(1)
{
 TRACE();
// printf("2022");
// sleep(1); 
// RUN();
 sleep(0.5);
// STOP();
 }return 0;

}

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2532

    文章

    48534

    瀏覽量

    742362
  • 智能小車
    +關注

    關注

    85

    文章

    541

    瀏覽量

    81292
  • 自動駕駛
    +關注

    關注

    774

    文章

    13205

    瀏覽量

    163742
  • RISC-V
    +關注

    關注

    42

    文章

    1969

    瀏覽量

    45302

原文標題:應用速遞 | 如何制作一個智能尋路+避障的小車?

文章出處:【微信號:芯片開放社區,微信公眾號:芯片開放社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    智能小車

    求各位大神給智能小車的protel電路圖和pcb圖,有的發到772478656@qq.com不勝感激。
    發表于 10-24 10:54

    多功能智能小車

    項目說明:利用貴公司的芯片,設計種多功能智能小車,具有自動,路面線等功能,
    發表于 11-07 14:46

    【mBot申請】智能小車

    的學習記錄,與學友們分享入門過程中的各種問題。全面拆解這臺機器人,并完成小項目。項目描述:全面拆解學習,并利用開發套件平臺,實現小車線,
    發表于 11-11 11:02

    款5循跡3藍牙多功能小車

    月,最終定型。本款產品求真電子科技工作室擁有完全自主知識產權。并且外觀設計已申請專利。自學成才兩驅智能小車功能如下:第部分:作為智能小車
    發表于 03-17 22:12

    循跡小車

    我是名電子信息工程的大新生,目前沒有學習專業知識,想要自己做一個循跡小車,想要
    發表于 10-02 00:09

    請問循跡當中的四循跡模塊與紅外光&模塊有什么區別?

    `本人在做arduino小車,其中用到的兩模塊——四循跡與紅外
    發表于 02-01 10:53

    小車

    怎樣能把光和超聲波更有效的結合???
    發表于 03-28 09:09

    關于STM32智能循跡小車

    小白枚,目前有四電機,車架,STM32F103VET6最小系統板,還有L293D驅動
    發表于 04-25 11:09

    多模態智能小車的實現

    想問下智能小車的設計與實現需要學習什么資料呀?學校學過51單片機的知識,但是教課內容也就僅限于對單片機有
    發表于 02-03 11:13

    智能小車

    求教用51單片機做個小車想用攝像頭采集,傳到計算機處理,這兩模塊學習什么內容
    發表于 02-06 15:01

    怎么制作智能循跡小車

    的能力,而且智能小車還是很好的硬件平臺,只要增加些控制電路就能完成循跡小車、救火機器人、足
    發表于 04-23 07:13

    怎樣去設計智能循跡小車

    智能循跡小車畢業設計論文.docx》由會員分享,可免費在線閱讀全文,更多與《智能循跡
    發表于 08-26 13:26

    如何去實現種基于單片機智能循線智能小車系統設計

    。智能小車采用后輪驅動,兩輪各用步進電機執行,速度檢測的傳感器采用紅外對射式,
    發表于 12-13 07:09

    基于STM32的循跡小車制作

    寫在最前:最近由于需要制作循跡小車,制作
    發表于 01-05 07:48

    怎樣去設計基于stm32的循跡藍牙小車

    基于stm32的智能小車作品(循跡藍牙)(上)前言、材料準備二、AD畫板+焊接1.原理圖2.pcb圖3.裸板成品4.焊好后成品三、讓輪
    發表于 01-14 08:33
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>