近年來,機器人世界發生了向開源技術和平台的重大轉變。 Raspberry Pi 是一個非常受歡迎的平台,它是一種小型且價格實惠的單板電腦。結合 JavaScript 的強大功能和多功能性,開發人員現在可以踏上進入機器人世界的激動人心的旅程。在本文中,我們將探索如何使用 Raspberry Pi 和 JavaScript 建立自主機器人,深入研究程式碼範例、解釋及其輸出。
在我們深入研究 JavaScript 機器人領域之前,正確設定 Raspberry Pi 至關重要。首先,我們需要安裝必要的作業系統,例如Raspbian,它是Raspberry Pi的官方作業系統。安裝完成後,我們可以連接鍵盤、滑鼠和顯示器等周邊設備,甚至可以使用 SSH 遠端存取 Raspberry Pi。
一旦我們的 Raspberry Pi 啟動並運行,我們就可以開始探索 JavaScript 機器人的世界。
伺服馬達是許多機器人系統中的關鍵組件,使我們能夠控制各個部件的位置或方向。 JavaScript 為我們提供了「onoff」等函式庫,使我們能夠與伺服馬達等硬體元件進行互動。
讓我們來看一個程式碼範例,示範如何使用 JavaScript 控制伺服馬達:
const Gpio = require('onoff').Gpio; // Create a new servo motor instance const servo = new Gpio(17, 'out'); // Function to move the servo motor to a specific angle function moveServo(angle) { servo.servoWrite(angle); } // Move the servo motor to 0 degrees moveServo(0); // Wait for 2 seconds, then move the servo motor to 90 degrees setTimeout(() => { moveServo(90); }, 2000);
在上面的程式碼中,我們導入 onoff 庫,並為連接到 GPIO 引腳 17 的伺服馬達建立 GPIO 類別的實例。 servoWrite 方法讓我們可以透過指定所需的角度來控制伺服馬達的位置。
當我們運行程式碼時,伺服馬達最初會移動到 0 度,然後在 2 秒延遲後移動到 90 度。
直流馬達通常用於機器人技術中提供運動。 JavaScript 也可以使用「pigpio」等函式庫來控制直流馬達。讓我們探討一個範例,示範如何使用 JavaScript 控制直流馬達。
const Gpio = require('pigpio').Gpio; // Create a new DC motor instance const motor = new Gpio(17, { mode: Gpio.OUTPUT }); // Function to control the DC motor function controlMotor(speed, direction) { motor.servoWrite(speed * direction); } // Move the DC motor forward at full speed controlMotor(255, 1); // Wait for 2 seconds, then stop the motor setTimeout(() => { controlMotor(0, 1); }, 2000);
在上面的程式碼中,我們使用「pigpio」函式庫來控制連接到 GPIO 引腳 17 的直流馬達。我們建立一個 Gpio 類別的實例,並將模式設定為 Gpio.OUTPUT。 servoWrite方法用於控制直流馬達的速度和方向。方向變數的正值使馬達向前移動,而負值則使馬達向後移動。
程式碼範例使直流馬達全速向前移動,並在 2 秒延遲後停止。
現在我們已經探索了控制各個組件,讓我們更進一步,為我們的機器人建立自主行為。我們可以透過合併感測器(例如超音波感測器)並編寫程式碼來響應它們的輸入來實現這一點。
讓我們考慮一個例子,我們使用 Raspberry Pi、伺服馬達、直流馬達和超音波感測器來建立一個簡單的避障機器人。伺服馬達將用於旋轉超音波感測器,而直流馬達將提供運動。
const Gpio = require('onoff').Gpio; const UltraSonic = require('ultrasonic-rx'); // Create instances of servo motor, DC motor, and ultrasonic sensor const servo = new Gpio(17, 'out'); const motor = new Gpio(18, 'out'); const ultrasonic = new UltraSonic({ echoPin: 23, triggerPin: 24 }); // Function to control the servo motor function controlServo(angle) { servo.servoWrite(angle); } // Function to control the DC motor function controlMotor(speed) { motor.servoWrite(speed); } // Function to move the robot forward function moveForward() { controlMotor(255); } // Function to stop the robot function stop() { controlMotor(0); } // Function to avoid obstacles function avoidObstacle() { const distance = ultrasonic.distance(); if (distance < 30) { controlServo(90); stop(); } else { controlServo(0); moveForward(); } } // Continuously monitor the environment for obstacles setInterval(avoidObstacle, 100);
在上面的程式碼中,我們使用「ultrasonic-rx」函式庫與連接到 GPIO 引腳 23 和 24 的超音波感測器進行互動。我們為伺服馬達和直流馬達建立 GPIO 類別的實例。 controlServo函數負責控制伺服馬達的位置,而controlMotor函數則控制直流馬達的轉速。
avoidObstacle 功能讀取超音波感測器的距離並確定障礙物是否在 30 公分範圍內。如果偵測到障礙物,伺服馬達將旋轉至前方,機器人停止。否則,伺服馬達面向側面,機器人向前移動。
JavaScript 在 Raspberry Pi 等平台的幫助下,提供了一個易於存取且靈活的方式來深入研究令人興奮的機器人領域。在本文中,我們探討如何使用 Raspberry Pi 和 JavaScript 來建構自主機器人。我們涵蓋了控制伺服和直流電機,以及使用感測器建構自主行為。透過提供的程式碼範例、解釋和輸出,您可以開始自己的 JavaScript 機器人之旅。可能性是無限的,有了 JavaScript 作為您的盟友,您可以在建立自主機器人方面開啟創意世界。
以上是機器人技術:使用 Raspberry Pi 和 JavaScript 建構自主機器人的詳細內容。更多資訊請關注PHP中文網其他相關文章!