Move Block Icon of block

移動指令


Move Block

移動指令控制機器人直線前進或後退,也可以沿著曲線轉彎."執行期間"的參數是用來設定機器人走多遠的距離.
Use this block to set your robot to go forwards or backwards in a straight line or to turn by following a curve. Define how far your robot will go by using the Duration property.

Image of block, data hub closed

  1. 輸出端:右上角的字元顯示目前馬達的輸出端位置。
    The letters at the top right corner of the block show which of your NXT’s ports will be controlled.
  2. 此圖示表示馬達轉動的方向。
    This icon shows which direction your robot will go.
  3. 此圖示表示馬達的動力大小。但機器人的速度會因為行走的表面或是上下斜坡而有變化.
    This icon shows the power level. Your robot’s speed may also be affected by other conditions, like the surface it is moving over or whether it is moving up or down a slope.
  4. 此圖示表示"執行時間"參數設為不停止,角度值,旋轉圈數或是秒數.
    This icon shows whether you have set the Duration property to unlimited, degrees, rotations, or seconds.

Image of block showing stop icon

  1. 此圖示表示馬達的方向設定為"停止"。此設定將會讓馬達停止運轉。
    This icon shows that the Direction property is set to “stop”. This setting will stop all motors.

設定移動指令
Configuring the Move Block

Image of configuration panel

  1. 選擇要控制的馬達,如果選的是兩個馬達(例如B與C),則這兩個馬達會以相同的馬力前進或後退.如果是三個馬達都選,其中B和C會同步動作.
    BSelect the motors you would like to control. If you choose to control two motors (Example: B & C), the motors will be synchronized, going forward or backwards at exactly the same power. If you select three motors, motors B & C will be synchronized.
  2. 控制馬達前進,後退,或是停止.停止指令同時會重置馬達.(參考"重置馬達指令"章節)Choose whether the motors will go forward, go backwards, or stop. Selecting Stop will also reset the motors. (See also the Reset Motor Block file.)
  3. 使用兩顆馬達來控制移動車輛時(一側一顆),方向盤滑桿會在兩側顯示輸出端所控制的馬達.移動滑桿時,機器人會向該側以曲線方式前進.如果滑桿移到底,就會讓車輛原地打轉.
    If you’re using two motors to drive a vehicle (with one on each side), the Steering slider will appear with the chosen port letters indicated at each side. Move the slider to set a curved path for your robot. With the slider all the way to either side, your vehicle will spin in place.
  4. 此滑桿與輸入值設定動力值(0~100%)
    This slider and the editable input box will let you set the power level [0-100%].
  5. 使用執行期間的下拉是選單,設定馬達要不停地前進,一段時間(秒數),旋轉圈數(預設值)或是一定角度.選用"時間","圈數","角度"這些參數可以控制機器人行走的距離.(請看下方的說明).
    Using the Duration pull-down menu, you can set the motors to run for an unlimited interval or for a set number of seconds, rotations [default] or degrees. By choosing Time, Rotation or Degrees you can control how far your robot will travel. (See the Tip below.)
  6. 指定馬達在停止後是煞車還是滑行的狀態.如果機器人要停在某一位置,需設定煞車.假如在斜坡上,設定煞車會讓機器人停在該位置而不會稍稍往後退,但這會消耗NXT的電池,因為馬達必須不斷反向地運轉來對抗下滑.
    Choose whether the motors will brake or coast after they’ve finished their action. If you want your robot to stop precisely at an exact location, set the motors to brake. Setting your motors to brake will also keep your robot from slowly rolling backwards on a slope but the setting will wear out the NXT’s batteries quicker because the motors are doing work to keep the robot in place.
  7. 回饋區顯示馬達轉的角度或是圈數.重置按鍵可以歸零這些數據.(在接收數據前,先確認馬達已接在輸出端上且與NXT連結正確).
    The feedback boxes will count how many degrees or full rotations your motors turn. Press the reset button to return the values to zero. (To receive feedback, make sure that the motors are connected to the chosen ports and that communication has been established with the NXT.)
小技巧: 如何讓機器人行走特定的距離?
Tip: How do I get my Robot to Travel a Certain Distance?

需參考回饋區(7)的數字來設定.
You’ll do this by looking at the feedback boxes (7).

裝配轉輪或有追蹤功能的載具
For Wheeled or Tracked Vehicles:

首先按下歸零鍵.並確定USB線連接正確或是藍芽傳輸作用正常.將機器人放在起始點,並且用手推著機器人向前進.此時可以注意到回饋區的數字會顯示馬達現在轉的圈數或是角度.把機器人推行到該走的距離之後,就紀錄下回饋區顯示的數字.當在執行時間的欄位輸入這個數字並下載到NXT執行時,機器人就會行走剛剛所測量的距離.
First press the feedback box’s reset button. With either the USB cable still connected or an active Bluetooth connection, place your robot at a starting point and roll it forward with your hand. You’ll notice that the feedback box will count how many rotations or degrees your motors turn. (The Duration property must be set to Rotation or Degrees for this to work.) At your desired finishing point, stop rolling your robot and note the displayed number of rotations or degrees. If you type this value into the Duration property’s input box, and download and then run your program, your robot will drive the distance you measured.

有足部的機器人
For Robots with Legs:

這個情況就必須作"試誤"測試,設定一組圈數或角度,然後觀察行走到目標的距離.記得每次測試前都要歸零數據.
Here you’ll have to begin a process of trial and error, choosing a set number of rotations or degrees and checking to see how close you come to your target destination. Make sure to press the reset button before beginning.

執行時間的其他應用
Other Uses of Duration

如果要控制鉗子之類的工具時,比較好的方式是設定一段的執行時間,這會省下在測量出完成動作時所需角度的時間.
When programming a tool like a grabber, it is a good idea to set a time in the Duration property. This will save you from having to measure the exact number of degrees to operate your tool and allow you to complete your program.

注意:除了用"不停止"的參數來設定執行時間外,程式都會等馬達做完該項動作後再繼續執行.
Note: Setting the motors’ duration to anything other than “Unlimited” will cause the program to wait until the robot completes the set duration; only then will the program continue.

馬達與機器人方向
Motor versus Robot Direction

當設定移動指令或是馬達指令的方向後,馬達將會依設定轉動,實際上有可能與機器人行進的方向不同。依據組裝機器人的方式不同,當你設定馬正轉時,而機器人卻向後退。下圖表示馬達預設的轉動方向:前進時的轉動方向。
When you set a Move or Motor blocks' direction, you are specifying the direction the motor will spin. This may be different than the direction your robot actually moves. Depending on how you build your robotic invention, setting the motors to go forwards may cause your creation to move backwards. The image below shows a motor spinning in the default, forwards direction.

Image of a Mindstorms servo motor with forwards  (clockwise) direction indicated with arrows

設定移動指令的資料集線器
Configuring the Move block’s Data Hub

用資料線可以任意地用來控制移動指令.(從其他指令的資料集線器到移動指令的資料集線器).
You can control the Move block dynamically by connecting data wires (from other blocks’ data hubs) to the Move block’s data hub.

把指令放在工作區上後,可以按圖示的左下角來打開資料集線器.
Open a block’s data hub by clicking the tab at the lower left edge of the block after it has been placed on the work area.

Image showing unopened tab on a generic block

連接到集線器左邊連接埠的資料線是屬於負責傳遞資料進入指令中,而要從指令送出資料時,則須從集線器的右邊連接埠連接資料線.
Data wires carrying input information to a block are connected to the plugs on the left side of its data hub. Data wires carrying output information are connected to the plugs on the right side.

Image of data wires

[A]輸入連接埠 [A] Input plug
[B]輸出連結部 [B] Output plug
[C]數字資料線(黃) [C] Number data wire (yellow)
[D]邏輯資料線(綠) [D]Logic data wire (green)
[E]文字資料線(橘) [E]Text data wire (orange)
[F]無效資料線(灰) [F]Broken data wire (gray)

資料由輸入端傳至傳出端
Passing data from the input plug to the output plug

如果輸入連接埠有對應的輸出連接埠(請參閱 A 以上)時,那麼輸入的資料就會原封不動地傳遞到輸出連接埠.在這樣的情況下, 如果輸入連接埠連著資料線,那麼就只能使用輸出連結埠來做連結. 也就是說,當連結輸出連接線到這樣的輸出連接埠,而不透過相對應的輸入資料線時,就會讓該輸出連接線呈現無效的狀態.
If an input plug has a corresponding output plug (see A above), the input data will pass through from the input plug to the output plug without being changed. In this case, you can only use the output plug if the input plug is connected to an input data wire; connecting an output data wire to such an output plug without a connected input data wire will cause the output data wire to be “broken” (and colored gray).

特定的資料型態
Data wires carry specific types of data

每條資料線都負責傳送特定資料.例如,一條從邏輯連接埠拉出的資料線則只能連結到另一個同屬邏輯連接埠的集線器上.
Each data wire carries a specific type of data between blocks. For example, if a data wire is dragged from a logic plug on a block’s data hub, it can only be connected to a logic plug on another block’s data hub. The chart below shows what kind of data each plug can accept or send out.

資料線顏色
Data wire colors

資料線依照特定的顏色作識別:黃色資料線傳送數值資料、綠色資料線傳送邏輯資料(真/偽)及橘色資料線傳送文字資料
Data wires are identified with specific colors: wires carrying number data are colored yellow, wires carrying logic data are colored green, and wires carrying text data are colored orange.

無效的資料線
“Broken” data wires

如果資料線連結到錯誤資料型態的連接埠時,則該資料線會呈現斷線無效狀態並以灰色表示.而有無效的資料線存在就無法下載程式.
If you try to connect a data wire to a plug of the wrong data type, the data wire will be broken (and colored gray). You will not be able to download your program if a data wire is broken.

點選無效的資料線時,在工作區右下方的幫助視窗中會看到無效的原因.
If you click a broken wire you can read why it is broken in the small help window in the lower right corner of the work area.

資料必須在連接埠的限制範圍內
Data must be within the possible range of the plug

如果資料線傳輸該連接埠資料範圍之外的資料時,該指令不是忽略資料就是轉成合理範圍內的資料.對那些只能接收少量輸入值的連接埠來說(例如,0,1,或2),該連結埠就會忽略超出範圍的數值.
If an input data wire transmits a value outside the possible range of the plug it is connected to, the block will either ignore the value or change it to a value within its range. For plugs that allow just a few input values (example: just 0, 1, or 2), the plug will ignore the input if a value arrives outside its range.

而對那些可以接收大量範圍輸入值(例如: 0~100)的連接埠來說,該連接埠就會將數值轉成可接受的範圍. 例如, 移動指令的動力連接埠接收到150的輸入值時,那麼移動指令就會轉成100(也就是動力連接埠的範圍內).
For plugs that accept larger input ranges (example: 0 – 100), the plug will force any input outside its range to fit. For example, if a Move block’s Power plug receives an input value of 150, the block will change the input value to 100 (i.e., a number within the Power plug’s range).

下表列出本資料集線器中各連接埠的特性
This chart shows the different characteristics of the plugs on the Move block’s data hub:

  連接埠
Plug
資料型態
Data Type
資料範圍
Possible Range
資料意義
What the Values Mean
連接埠例外說明
This Plug is Ignored When...
Max/Min 左馬達 Left Motor 數值 Number 1 - 3 1 = A, 2 = B, 3 = C  
Max/Min 右馬達 Right Motor 數值 Number 1 - 3 1 = A, 2 = B, 3 = C  
Max/Min 其他馬達 Other Motor 數值 Number 1 - 3 1 = A, 2 = B, 3 = C  
Max/Min 方向 Direction 邏輯 Logic 真/偽 True/False 真=前進, 偽=後退
True = Forwards, False = Backwards
 
Max/Min 方向 Steering 數值 Number -100 - 100 小於0= 轉向左馬達, 大於0 = 轉向右馬達
< 0 = Steer towards left motor,
> 0 = Steer towards right motor
 
Max/Min 動力 Power 數值 Number 0 - 100    
Max/Min 執行時間 Duration 數值 Number 0 - 2147483647 依執行時間的型態:
角度/圈數 = 角度
秒數 = 秒數
Depends on Duration Type:
Degrees/Rotations = Degrees,
Seconds = Seconds
執行時間型態 = 不停
Duration Type = Unlimited
Max/Min 接續動作 Next Action 邏輯 Logic 真/偽 True/False 真=煞車, 偽=滑行
True = Brake, False = Coast
執行型態=不停止. 方向並不為0(此為暫時的狀況,有待韌體解決)
Duration Type = Unlimited. Steering not equal to zero (this may only be temporary. pending firmware fix for this not to be ignored)