色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>SMCE:您的Arduino汽車模擬器

SMCE:您的Arduino汽車模擬器

2023-06-27 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

描述

隨著大流行的持續(xù),硬件不僅難以采購,而且難以安全地協(xié)同工作。智能微型車輛的情況下,可用單元的數(shù)量本質(zhì)上是有限的,我們部署它們的“環(huán)境”也是如此,例如賽道或障礙賽。我們?nèi)绾谓鉀Q硬件資源稀缺問題?我們將資源數(shù)字化!

> 本文最初發(fā)布于platis.solutions

SMCESmartcar 平臺的數(shù)字雙胞胎,以及一個酷炫且可定制的3D 世界,供您的漫游車漫游。核心概念是您編寫可在兩者上運(yùn)行的 Arduino 代碼真實(shí)的硬件和虛擬環(huán)境。通過這種方式,可以減輕或大大減少對汽車的專有和頻繁訪問的需求。理想情況下,模擬器允許限制與物理汽車的不可避免的接觸,以至于開發(fā)團(tuán)隊(duì)可以在模擬器上開發(fā)他們的功能,并且只訪問真實(shí)的硬件來驗(yàn)證它們。使用網(wǎng)絡(luò)物理系統(tǒng)的虛擬表示不僅在大流行期間很有價值。我們這些使用嵌入式系統(tǒng)的人可能會痛苦地認(rèn)識到由于缺乏硬件可用性而被阻止的不利影響。在這篇文章中,我將向您展示如何開始使用SMCE以及它的許多功能。如果你想要一些關(guān)于什么的靈感您可以使用該軟件查看我們的學(xué)生如何利用SMCE 來模擬 Arduino 車輛。

poYBAGNkW9uAHCt1AASgWJTwEtE744.jpg
?

關(guān)于 SMCE

在深入了解模擬器之前,讓我們澄清一下 SMCE 不是什么:一個 3D 環(huán)境,用于您的超級自定義愛好項(xiàng)目,它使用各種奇異的傳感器和第三方庫。開箱即用的模擬器可支持Smartcar 庫的用戶并適應(yīng)他們的典型用例和傳感器設(shè)置。模擬器不僅適用于特定的庫,但是,如果您使用它,您的生活會輕松得多。我并不是因?yàn)槟M器而這么說。它帶有很多例子,它用途廣泛,總體上是一個非常容易使用的庫,您應(yīng)該嘗試一下!此外,我應(yīng)該注意,模擬器不是由我制作或維護(hù)的,所以請不要聯(lián)系我尋求支持。它是由我的兩個非常有才華的前學(xué)生Ryan JansonRuthger Dijt 開發(fā)的。您可以通過在相關(guān) GitHub 存儲庫之一上創(chuàng)建問題或開始討論來聯(lián)系他們。

SMCE 由兩部分組成:“前端”(smce-gd)和“后端”(libSMCE)libSMCE是負(fù)責(zé)在您的計算機(jī)上編譯和運(yùn)行 Arduino 草圖的庫。

這個跨平臺的 C++ 庫為其消費(fèi)者提供了在托管環(huán)境中編譯和執(zhí)行 Arduino 草圖的能力,并綁定到其虛擬 I/O 端口以允許主機(jī)應(yīng)用程序與其子草圖進(jìn)行交互。

這個跨平臺的 C++ 庫為其消費(fèi)者提供了在托管環(huán)境中編譯和執(zhí)行 Arduino 草圖的能力,并綁定到其虛擬 I/O 端口以允許主機(jī)應(yīng)用程序與其子草圖進(jìn)行交互。

smce-gd取決于在libSMCE多彩的虛擬 3D 世界中可視化草圖執(zhí)行以及與周圍環(huán)境的交互。除非您打算做一些“聰明”的事情,擴(kuò)展或?yàn)轫?xiàng)目做出貢獻(xiàn)等,否則smce-gd您應(yīng)該主要關(guān)心的軟件。對于本教程,我將使用1.3.1版本smce-gd在 Ubuntu 20.04 上運(yùn)行。

開始使用

為了在我的 Ubuntu 筆記本電腦上安裝 SMCE,我按照Wiki上的這些說明進(jìn)行操作SMCE 的一個非常酷的地方是它可以您的計算機(jī)上運(yùn)行。SMCE 也可以安裝在WindowsMacOS 上。如果 SMCE 安裝正確,您將看到以下屏幕:smce-gd

pYYBAGNkW96AE4LXAAAiiQFeeCs860.png
?

選擇Start Fresh選項(xiàng),然后在下一個屏幕中單擊+標(biāo)志。

poYBAGNkW-GAFiFGAACbSjGqQaw700.png
?

然后是時候選擇在 Arduino 上運(yùn)行的代碼了。我建議從Smartcar 庫示例中的manualControl.ino草圖開始。獲取示例的一種簡單方法是Smartcar shield通過 Arduino IDE 的庫管理器下載,然后在您的光盤上找到它。讓我們看一下草圖:

#include 

const int fSpeed   = 70;  // 70% of the full speed forward
const int bSpeed   = -70; // 70% of the full speed backward
const int lDegrees = -75; // degrees to turn left
const int rDegrees = 75;  // degrees to turn right

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor(arduinoRuntime, smartcarlib::pins::v2::leftMotorPins);
BrushedMotor rightMotor(arduinoRuntime, smartcarlib::pins::v2::rightMotorPins);
DifferentialControl control(leftMotor, rightMotor);

SimpleCar car(control);

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    handleInput();
}

void handleInput()
{ // handle serial input if there is any
    if (Serial.available())
    {
        char input = Serial.read(); // read everything that has been received so far and log down
                                    // the last entry
        switch (input)
        {
        case 'l': // rotate counter-clockwise going forward
            car.setSpeed(fSpeed);
            car.setAngle(lDegrees);
            break;
        case 'r': // turn clock-wise
            car.setSpeed(fSpeed);
            car.setAngle(rDegrees);
            break;
        case 'f': // go ahead
            car.setSpeed(fSpeed);
            car.setAngle(0);
            break;
        case 'b': // go back
            car.setSpeed(bSpeed);
            car.setAngle(0);
            break;
        default: // if you receive something that you don't know, just stop
            car.setSpeed(0);
            car.setAngle(0);
        }
    }
}

上述示例指示流動站(即SimpleCar實(shí)例)遵循從串行端口發(fā)送的簡單命令。具體來說,當(dāng)f發(fā)送時,汽車將以預(yù)定義的速度前進(jìn),當(dāng)b發(fā)送時,它將向后行駛,r它會向右和l向左轉(zhuǎn)彎。任何其他角色都會停下車。選擇草圖后,單擊“編譯”選項(xiàng)。

poYBAGNkW-qAGDrvAACf0KO2Vsk645.png
?

編譯成功后,點(diǎn)擊開始按鈕。您會看到汽車在虛擬世界中彈出。酷吧?讓我們開車吧!單擊屏幕左下方的“串行”選項(xiàng),鍵入并按鍵盤上的“Enter”。汽車將開始行駛。按下“跟隨”選項(xiàng),使相機(jī)隨著汽車一起移動,并使用我們上面描述的簡單命令進(jìn)行操作。完成后,您可以單擊停止專業(yè)提示:您可能希望在函數(shù)結(jié)束時放置一個微小的延遲(例如),以避免占用您的 CPU 資源,因?yàn)?a href='http://www.1cnz.cn/tags/仿真器/' target='_blank' class='arckwlink_none'>仿真器將在您的草圖中快速循環(huán)。floop()delay(1)

使用傳感器

現(xiàn)在您已經(jīng)了解了環(huán)境物理原理以及如何通過串行端口向汽車發(fā)送命令,讓我們使用一些傳感器讓汽車自動移動。默認(rèn)情況下,汽車預(yù)裝了一堆方便的傳感器。默認(rèn)配置包括車輛前部的超聲波傳感器 ( SR04) ,連接到引腳 6 和 7。如果距離小于 70 厘米的障礙物,讓我們使用傳感器停止汽車。

#include 

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor{arduinoRuntime, smartcarlib::pins::v2::leftMotorPins};
BrushedMotor rightMotor{arduinoRuntime, smartcarlib::pins::v2::rightMotorPins};
DifferentialControl control{leftMotor, rightMotor};

SimpleCar car(control);

const int triggerPin           = 6; // D6
const int echoPin              = 7; // D7
const unsigned int maxDistance = 100;
SR04 front{arduinoRuntime, triggerPin, echoPin, maxDistance};

void setup()
{
  // Move the car with 50% of its full speed
  car.setSpeed(50);
}

void loop()
{
  const auto distance = front.getDistance();
  // When distance is `0` it means there's no obstacle detected
  if (distance > 0 && distance < 70) {
    car.setSpeed(0);
  }

#ifdef __SMCE__
  // Avoid over-using the CPU if we are running in the emulator
  delay(1);
#endif
}

加載草圖并在模擬器中運(yùn)行它。它會一直直行,直到遇到障礙物。您可以通過單擊屏幕左側(cè)的傳感器讀數(shù)來實(shí)時監(jiān)控它們。在下面的屏幕截圖中,我們可以看到,一旦遇到墻壁,電機(jī)就沒有油門,并且檢測到的距離在預(yù)期范圍內(nèi)。專業(yè)提示:如果按F3 ,您將獲得傳感器指向的位置及其范圍的指示。這對于調(diào)試傳感器輸入特別有價值。

poYBAGNkW-2AXrr2AACnRCeTtrw599.png
?

作為額外的真實(shí)感,傳感器讀數(shù)故意不完全準(zhǔn)確并且包含噪聲。默認(rèn)設(shè)置中當(dāng)前可用的傳感器有:

  • 車輛前部的一個SR04超聲波傳感器,距離相對較遠(yuǎn),但其測量速度較慢且噪聲較大。
  • 四個 SHARP 紅外傳感器(例如GP2Y0A21 ),位于汽車側(cè)面。它們的射程更短,但更準(zhǔn)確、更快速。
  • 兩個方向里程表,每側(cè)一個,用于測量汽車行駛了多少。
  • 一個GY50陀螺儀,可以告訴您汽車的方向,或者更確切地說,以度數(shù) [0, 360) 為單位的角位移。
  • OV767X攝像頭,可用于流式傳輸汽車所看到的內(nèi)容。

連接性

通過串行端口發(fā)送命令并根據(jù)傳感器輸入使汽車自動行駛很有趣,但不可否認(rèn)的是,您可以完成的任務(wù)是有限的。您經(jīng)常需要您的車輛與“外部世界”進(jìn)行通信,無論它可能是不同設(shè)備上的應(yīng)用程序還是服務(wù)器。物理Smartcar平臺圍繞 ESP32 微控制器構(gòu)建,因此它可以通過 WiFi 或藍(lán)牙輕松連接到其他設(shè)備。SMCE 允許其用戶通過WiFi 和 MQTT模擬連接。雖然 WiFi 庫的模擬還沒有完全實(shí)現(xiàn),因?yàn)槿杂泄ぷ饕觯珣?yīng)該不會超過一些#ifdef __SMCE__編寫一個可在真實(shí)硬件和仿真器上無縫運(yùn)行的 Arduino 草圖。讓我們看看如何編寫一個簡單的草圖,通過 MQTT 消息控制汽車并廣播遙測數(shù)據(jù),即前超聲波傳感器的距離測量值。注意:雖然下面的草圖在 SMCE 上運(yùn)行良好,但它需要一些添加/更改才能在實(shí)際的 ESP32 上運(yùn)行,主要是關(guān)于 WiFi 連接。

#include <MQTT.h>
#include <WiFi.h>

#include <Smartcar.h>

#ifndef __SMCE__
WiFiClient net;
#endif
MQTTClient mqtt;

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor(arduinoRuntime, smartcarlib::pins::v2::leftMotorPins);
BrushedMotor rightMotor(arduinoRuntime, smartcarlib::pins::v2::rightMotorPins);
DifferentialControl control(leftMotor, rightMotor);

SimpleCar car(control);

const auto oneSecond = 1000UL;
const auto triggerPin = 6;
const auto echoPin = 7;
const auto maxDistance = 400;
SR04 front(arduinoRuntime, triggerPin, echoPin, maxDistance);

void setup() {
  Serial.begin(9600);
#ifdef __SMCE__
  // ================= 1
  // mqtt.begin("aerostun.dev", 1883, WiFi);
  mqtt.begin(WiFi); // Will connect to localhost
#else
  mqtt.begin(net);
#endif
  // ================= 2
  if (mqtt.connect("arduino", "public", "public")) {
    mqtt.subscribe("/smartcar/control/#", 1);
    mqtt.onMessage([](String topic, String message) {
      if (topic == "/smartcar/control/throttle") {
        car.setSpeed(message.toInt());
      } else if (topic == "/smartcar/control/steering") {
        car.setAngle(message.toInt());
      } else {
        Serial.println(topic + " " + message);
      }
    });
  }
}

void loop() {
  if (mqtt.connected()) {
    mqtt.loop();
    const auto currentTime = millis();
    static auto previousTransmission = 0UL;
    if (currentTime - previousTransmission >= oneSecond) {
      previousTransmission = currentTime;
      const auto distance = String(front.getDistance());
      // ================= 3
      mqtt.publish("/smartcar/ultrasound/front", distance);
    }
  }
#ifdef __SMCE__
  // Avoid over-using the CPU if we are running in the emulator
  delay(1);
#endif
}

我用內(nèi)聯(lián)注釋突出顯示了草圖中的三個有趣點(diǎn),然后是=================

  • 這是與 MQTT 代理建立連接的地方。如果沒有傳遞參數(shù)begin那么它將連接到localhost. 您有責(zé)任本地或遠(yuǎn)程主機(jī)上設(shè)置代理。
  • 在這里,我們訂閱我們感興趣的主題,并定義一旦收到帶有特定主題的消息將發(fā)生什么。
  • 我們想提供一些反饋,因此我們每隔一秒發(fā)送/發(fā)布前視超聲波傳感器測量的距離。

如果您使用的是 Ubuntu,Mosquitto是最容易設(shè)置的 MQTT 代理之一。我使用mosquitto_pubmosquitto_sub實(shí)用程序訂閱前超聲波傳感器測量并發(fā)送油門命令,如下面的屏幕截圖所示。50一旦在/smartcar/control/throttle主題上得到適當(dāng)?shù)南ⅲ?/font>汽車就開始加速行駛,并在/smartcar/ultrasound/front.

pYYBAGNkW--AA32DAADlPEQLVRw284.png
?

相機(jī)

當(dāng)試圖了解你的漫游者的環(huán)境時,傳感器只能讓你走這么遠(yuǎn)。SMCE 允許您獲取虛擬世界的圖像流。這樣,您既可以在汽車的微控制器本身上進(jìn)行一些非常簡單的圖像處理,也可以將圖像流廣播到功能更強(qiáng)大的設(shè)備并在那里進(jìn)行圖像處理。為簡單起見,SMCE 僅支持Arduino_OV767X庫,并且可以利用 MQTT 來廣播流。讓我們看一個草圖,它為 MQTT 客戶端偵聽提供圖像流/smartcar/camera和之前一樣,只是增加了攝像頭流:

#include 

#include <MQTT.h>
#include <WiFi.h>
#include <OV767X.h>

#include <Smartcar.h>

#ifndef __SMCE__
WiFiClient net;
#endif
MQTTClient mqtt;

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor(arduinoRuntime, smartcarlib::pins::v2::leftMotorPins);
BrushedMotor rightMotor(arduinoRuntime, smartcarlib::pins::v2::rightMotorPins);
DifferentialControl control(leftMotor, rightMotor);

SimpleCar car(control);

const auto oneSecond = 1000UL;
const auto triggerPin = 6;
const auto echoPin = 7;
const auto maxDistance = 400;
SR04 front(arduinoRuntime, triggerPin, echoPin, maxDistance);

std::vector<char> frameBuffer;

void setup() {
  Serial.begin(9600);
  Camera.begin(QVGA, RGB888, 15);
  // ================= 1
  frameBuffer.resize(Camera.width() * Camera.height() * Camera.bytesPerPixel());
#ifdef __SMCE__
  // mqtt.begin("aerostun.dev", 1883, WiFi);
  mqtt.begin(WiFi); // Will connect to localhost
#else
  mqtt.begin(net);
#endif
  if (mqtt.connect("arduino", "public", "public")) {
    mqtt.subscribe("/smartcar/control/#", 1);
    mqtt.onMessage([](String topic, String message) {
      if (topic == "/smartcar/control/throttle") {
        car.setSpeed(message.toInt());
      } else if (topic == "/smartcar/control/steering") {
        car.setAngle(message.toInt());
      } else {
        Serial.println(topic + " " + message);
      }
    });
  }
}

void loop() {
  if (mqtt.connected()) {
    mqtt.loop();
    const auto currentTime = millis();
    static auto previousFrame = 0UL;
    // ================= 2
    if (currentTime - previousFrame >= 65) {
      previousFrame = currentTime;
      Camera.readFrame(frameBuffer.data());
      mqtt.publish("/smartcar/camera", frameBuffer.data(), frameBuffer.size(),
                   false, 0);
    }
    static auto previousTransmission = 0UL;
    if (currentTime - previousTransmission >= oneSecond) {
      previousTransmission = currentTime;
      const auto distance = String(front.getDistance());
      mqtt.publish("/smartcar/ultrasound/front", distance);
    }
  }
#ifdef __SMCE__
  // Avoid over-using the CPU if we are running in the emulator
  delay(1);
#endif
}
  • 在堆上分配足夠的內(nèi)存以包含單個幀。
  • 65毫秒,從相機(jī)中讀取一幀并將其復(fù)制到frameBuffer. 然后通過 MQTT 廣播它。

為了向您展示這在真實(shí)場景中會是什么樣子,您可以使用參考 Android 應(yīng)用程序通過 MQTT 消息控制汽車以及可視化圖像流。它不是最漂亮的,但您將了解如何使用 JAVA 和 Android 完成事情的要點(diǎn)。

poYBAGNkW_OAbAUfAAFKrgZo3s4971.png
?

自定義傳感器配置

默認(rèn)情況下,車輛預(yù)裝了一組特定的傳感器、執(zhí)行器和可用引腳。這在 SMCE 的 wiki 中的車輛功能下進(jìn)行了描述。要使用您自己的設(shè)置,您可以定義您的自定義配置,使用與您的草圖json位于同一目錄中的文件。假設(shè)我們想要一個允許我們通過串行端口駕駛汽車的草圖(如前所述),從車輛的所有四個側(cè)面測量距離并將它們發(fā)送給我們。你最終會得到一個如下圖所示的草圖:

#include 

const int fSpeed   = 70;  // 70% of the full speed forward
const int bSpeed   = -70; // 70% of the full speed backward
const int lDegrees = -75; // degrees to turn left
const int rDegrees = 75;  // degrees to turn right
const unsigned long transmissionInterval = 100; // In milliseconds
const int maxDistance = 300;

ArduinoRuntime arduinoRuntime;
BrushedMotor leftMotor(arduinoRuntime, smartcarlib::pins::v2::leftMotorPins);
BrushedMotor rightMotor(arduinoRuntime, smartcarlib::pins::v2::rightMotorPins);
DifferentialControl control(leftMotor, rightMotor);

SimpleCar car(control);

// ================= 1
SR04 left(arduinoRuntime, 2, 3, maxDistance); // trigger and echo pin respectively
SR04 right(arduinoRuntime, 4, 5, maxDistance);
SR04 front(arduinoRuntime, 6, 7, maxDistance);
SR04 back(arduinoRuntime, 16, 17, maxDistance);

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  static auto previousTransmission = 0UL;
  const auto currentTime = millis();
  // ================= 2
  if (currentTime > previousTransmission + transmissionInterval) {
    previousTransmission = currentTime;
    Serial.println("===");
    Serial.println("Left: " + String(left.getDistance()));
    Serial.println("Right: " + String(right.getDistance()));
    Serial.println("Front: " + String(front.getDistance()));
    Serial.println("Back: " + String(back.getDistance()));
  }

  handleInput();
#ifdef __SMCE__
  // Avoid over-using the CPU if we are running in the emulator
  delay(1);
#endif
}

void handleInput()
{
  if (Serial.available())
  {
    char input = Serial.read(); // read everything that has been received so far and log down
    // the last entry
    switch (input)
    {
      case 'l': // rotate counter-clockwise going forward
        car.setSpeed(fSpeed);
        car.setAngle(lDegrees);
        break;
      case 'r': // turn clock-wise
        car.setSpeed(fSpeed);
        car.setAngle(rDegrees);
        break;
      case 'f': // go ahead
        car.setSpeed(fSpeed);
        car.setAngle(0);
        break;
      case 'b': // go back
        car.setSpeed(bSpeed);
        car.setAngle(0);
        break;
      default: // if you receive something that you don't know, just stop
        car.setSpeed(0);
        car.setAngle(0);
    }
  }
}
  • 在這里,我們定義了我們的傳感器應(yīng)該連接到的引腳。例如,left超聲波 ( SR04) 傳感器連接到引腳23前者是觸發(fā)銷,后者是回聲銷。
  • 我們通過串行端口“打印”出測量值,間隔由 的值指定transmissionInterval
pYYBAGNkW_WAJl2uAACIbD7SJAU437.png
?

默認(rèn)設(shè)置不支持上面的草圖,原因有兩個:(a)默認(rèn)汽車沒有配備四個傳感器,SR04只有一個,(b)在典型 ESP32 板上可用的引腳在默認(rèn)情況下不可用仿真板。幸運(yùn)的是,我們可以改變它!我們需要做的第一件事是使所有必要的引腳可用,并確保它們是正確的類型(即數(shù)字或模擬)。在這里我們應(yīng)該注意,由于技術(shù)原因,傳感器的回波引腳必須指定為以下是您應(yīng)該遵循的步驟:1617SR04analog

  • 在與您的草圖相同的目錄中創(chuàng)建一個空文件。board_config.json
  • 獲取SMCE 使用的默認(rèn)板配置,以便我們可以在它的基礎(chǔ)上進(jìn)行構(gòu)建(補(bǔ)丁)。
  • 使用該gpio_drivers屬性來指定您的草圖需要的所有引腳。注意:不要忘記您需要指定電機(jī)、里程表(如果您使用它們)、陀螺儀等所需的引腳。就我而言,我想移除一些我不使用的引腳(0和),1添加新的(1617)并確保SR04傳感器使用的所有引腳都處于正確的模式。
{
    "gpio_drivers": [
        { "pin": 2, "digital": true },
        { "pin": 3, "analog": true },
        { "pin": 4, "digital": true },
        { "pin": 5, "analog": true },
        { "pin": 6, "digital": true },
        { "pin": 7, "analog": true },
        { "pin": 16, "digital": true },
        { "pin": 17, "analog": true },
                
        { "pin": 12, "digital": true },
        { "pin": 13, "analog": true },
        { "pin": 14, "digital": true },
        
        { "pin": 18, "analog": true },

        { "pin": 25, "digital": true },
        { "pin": 26, "digital": true },
        { "pin": 27, "analog": true },
        
        { "pin": 34, "digital": true },
        { "pin": 35, "analog": true },
        { "pin": 85, "analog": true },
        { "pin": 135, "analog": true },

        { "pin": 39, "digital": true },
        { "pin": 36, "analog": true },
        { "pin": 86, "analog": true },
        { "pin": 136, "analog": true },
        
        { "pin": 250, "digital": true },
        
        { "pin": 205, "analog": true }
    ]
}

創(chuàng)建board_config.json指定仿真 Arduino 板上可用引腳的文件后,是時候設(shè)置您的車輛了。同樣,我們將使用默認(rèn)設(shè)置來獲取靈感并相應(yīng)地對其進(jìn)行修補(bǔ)

  • 在與您的草圖相同的目錄中創(chuàng)建一個文件。vehicle_config.json
  • 獲取 SMCE 使用的默認(rèn)車輛配置,以便我們在此基礎(chǔ)上進(jìn)行構(gòu)建。
  • 更改slots您感興趣的。在我的情況下,我想在和插槽上連接SR04傳感器Left使用與草圖中相同的引腳,并確保這些引腳已經(jīng)被.RightBackboard_config.json
{
   "slots": {
      "Left": {
         "class": "UltraSonic",
         "name": "Left Ultrasound",
         "props": {
            "trigger_pin": 2,
            "echo_pin": 3
         }
      },
      "Right": {
         "class": "UltraSonic",
         "name": "Right Ultrasound",
         "props": {
            "trigger_pin": 4,
            "echo_pin": 5
         }
      },
      "FrontTop": {
         "class": "UltraSonic",
         "name": "Front Ultrasound",
         "props": {
            "trigger_pin": 6,
            "echo_pin": 7
         }
      },
      "Back": {
         "class": "UltraSonic",
         "name": "Back Ultrasound",
         "props": {
            "trigger_pin": 16,
            "echo_pin": 17
         }
      }
   }
}

專業(yè)提示:如果您想完全覆蓋任何配置,可以將from_scratch頂級元素添加為true. 如果您想完全移除占用您根本不使用的插槽的攝像頭或其他傳感器,這將非常有用。引腳也是如此。例如,下面的配置將創(chuàng)建一輛汽車,其后側(cè)僅配備一個超聲波傳感器和一對電機(jī)。沒有別的,沒有相機(jī),沒有里程表,沒有陀螺儀。

{
   "from_scratch": true,
   "vehicle": "RayCar",
   "slots": {
      "Back": {
         "class": "UltraSonic",
         "name": "Back Ultrasound",
         "props": {
            "trigger_pin": 16,
            "echo_pin": 17
         }
      }
   },
   "builtin": {
      "Left BrushedMotor": {
         "forward_pin": 12,
         "backward_pin": 14,
         "enable_pin": 13
      },
      "Right BrushedMotor": {
         "forward_pin": 25,
         "backward_pin": 26,
         "enable_pin": 27
      }
   }
}

修改環(huán)境

poYBAGNkW_iAGg75AAJdJVJyCfU325.png
?

?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
主站蜘蛛池模板: 好大好爽CAO死我了BL | 亚洲一区免费在线观看 | 国产 亚洲 中文字幕 在线 | 动漫美女被到爽了流 | 欧美互交人妖247 | 男同志video最新猛男 | 蜜桃传媒在线观看入口 | 纯h超级大尺度小黄文 | 国产精品久久久久一区二区三区 | 青青视频国产色偷偷 | 翁公与小莹在客厅激情 | 蜜臀久久99精品久久久久久做爰 | 嘟嘟嘟WWW免费高清在线中文 | 9966在线观看免费高清电影 | 日韩亚洲视频一区二区三区 | 日韩精品免费一区二区 | 亚洲精品免费视频 | 一本大道熟女人妻中文字幕在线 | 美女撒尿无遮挡免费中国 | 超碰97免费人妻 | 国产成人高清视频 | 久久中文字幕亚洲精品最新 | 无码欧美XXXXX在线观看裸 | 亚洲色欲色欲无码AV | 亚洲欧美一区二区成人片 | 一级am片欧美 | 国产精品久久人妻拍拍水牛影视 | 办公室丝袜老师在线观看 | 亚洲日本一区二区三区在线不卡 | 国产精品日韩欧美一区二区三区 | qvod电影在线观看 | 在线欧美免费人成视频 | 欧美日韩一区不卡在线观看 | 美女挑战50厘米长的黑人 | 国产亚洲福利在线视频 | 淫品色影院 | 人人在线碰碰视频免费 | 最新无码二区日本专区 | 国产精品A久久久久久久久 国产精品A久久777777 | 狠狠色狠狠色综合系列 | 狠狠干狠狠色 |