iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
佛心分享-SideProject30

從0開始—初階程式語言學習者的必經之路系列 第 22

DAY22🤖機器人動作!與Java程式的結合

  • 分享至 

  • xImage
  •  

因爲個人目標,未來想修習關於機器人、或是其他程式學習的微課程,所以初步了解一下機器人與時常使用的程式軟體--java有何種連結~
#Java可運用的範圍

  1. 模擬機器人動作:你可以使用 Java 和一些模擬框架(例如 JavaFX 3D、Processing 等)來模擬機器人的動作,例如運動學、機械臂操作、路徑規劃等。

  2. 實際機器人控制:Java 可以通過連接硬體設備(如 Raspberry Pi、Arduino 或其他機器人控制器)來控制機器人的動作。這通常涉及與硬體驅動程序的交互,以及通過網絡、藍牙或其他通訊方式與機器人通信。

  3. 機器人操作系統 (ROS):儘管 ROS 的核心通常用 C++ 或 Python 編寫,Java 也有對 ROS 的支持 (rosjava),因此也可以用 Java 來與 ROS 機器人進行交互,控制機器人動作或收集感應器數據。

  4. 人工智慧與自動化:Java 也可以與機器學習和人工智能技術結合來進行決策,使機器人能夠自動執行特定的動作,例如避開障礙物、尋找路徑或執行任務。

*Java 程式模擬了一個機器人的基本動作。
/假設機器人是一個能夠在二維平面上移動的簡單對象。
/實驗 Java 來控制機器人進行前進、後退、左轉和右轉的動作。

class Robot {
    private int x, y;
    private String direction;

    public Robot(int x, int y, String direction) {
        this.x = x;
        this.y = y;
        this.direction = direction;
    }

    public void moveForward() {
        switch (direction) {
            case "N":
                y++;
                break;
            case "S":
                y--;
                break;
            case "E":
                x++;
                break;
            case "W":
                x--;
                break;
        }
        System.out.println("Moved forward to: (" + x + ", " + y + ")");
    }

    public void moveBackward() {
        switch (direction) {
            case "N":
                y--;
                break;
            case "S":
                y++;
                break;
            case "E":
                x--;
                break;
            case "W":
                x++;
                break;
        }
        System.out.println("Moved backward to: (" + x + ", " + y + ")");
    }

    public void turnLeft() {
        switch (direction) {
            case "N":
                direction = "W";
                break;
            case "S":
                direction = "E";
                break;
            case "E":
                direction = "N";
                break;
            case "W":
                direction = "S";
                break;
        }
        System.out.println("Turned left. Now facing: " + direction);
    }

    public void turnRight() {
        switch (direction) {
            case "N":
                direction = "E";
                break;
            case "S":
                direction = "W";
                break;
            case "E":
                direction = "S";
                break;
            case "W":
                direction = "N";
                break;
        }
        System.out.println("Turned right. Now facing: " + direction);
    }

    public String getPosition() {
        return "(" + x + ", " + y + ") facing " + direction;
    }
}

public class RobotSimulator {
    public static void main(String[] args) {
        Robot robot = new Robot(0, 0, "N"); // 初始位置在 (0, 0),面向北方 (N)
        
        System.out.println("Initial Position: " + robot.getPosition());

        robot.moveForward();  // 機器人前進
        robot.turnRight();    // 右轉
        robot.moveForward();  // 前進
        robot.turnLeft();     // 左轉
        robot.moveBackward(); // 後退

        System.out.println("Final Position: " + robot.getPosition());
    }
}

程式碼說明:

  1. Robot 類別: 這個類別代表了一個簡單的機器人,具有 xy 座標來表示其在平面上的位置,並使用一個字串 direction 來表示機器人當前面向的方向("N"、"S"、"E"、"W" 分別代表北、南、東、西)。

  2. 動作方法:

    • moveForward()moveBackward() 用於讓機器人在當前方向上前進或後退。
    • turnLeft()turnRight() 用於改變機器人面向的方向。
  3. RobotSimulator 類別: 這是主程式,用來創建一個 Robot 物件並進行動作操作,最後輸出機器人的最終位置和方向。

這個範例可以進一步擴展來模擬更複雜的機器人行為,例如避障、路徑規劃、或者引入更多的感應器數據來進行決策。如果你有特定的需求或想法,我也可以根據你的要求進一步修改這個程式碼。


上一篇
DAY21💥✨加入特效(利用找找看遊戲延伸)
下一篇
DAY23⬅️⬆️➡️⬇️機器人的路徑規劃
系列文
從0開始—初階程式語言學習者的必經之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言