近年來,機器人世界發生了向開源技術和平臺的重大轉變。 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 構建自主機器人的詳細內容,更多請關注www.92cms.cn其它相關文章!