汽車和汽車集團#
介紹#
馬達和馬達組控制機器人各部件的運動。一個電機組 Motor 控制一個已配置的智慧電機,而一個電機組( MotorGroup 則控制多個已配置的智慧電機,使它們協同運動。馬達和馬達組可用於抬起機械手臂、轉動機械爪、旋轉車輪或移動機器人的其他部件。兩個或四個馬達可以協同工作,組成一個驅動系統,從而驅動整個機器人運動和轉向。
每個馬達或馬達組都在「設備」視窗中進行配置。根據系統版本不同,馬達和馬達組的名稱可能會有所變化。本頁使用 motor_1 和 motor_group_1 作為範例名稱。您可以根據需要將其替換為您自己配置的名稱。
預設情況下, FORWARD 使馬達逆時針旋轉, REVERSE 使馬達順時針旋轉。如果馬達設定為反轉,則正反轉方向會互換。
電機和電機組的編碼方式有很多種。以下列出了所有電機和電機組的編碼方法:
操作-停止和旋轉馬達及馬達組。
spin— 使馬達或馬達組永遠正轉或反轉。spin_for— 使馬達或馬達組旋轉特定距離。spin_to_position— 將馬達或馬達組旋轉到特定位置。stop— 停止馬達或馬達組旋轉。
變異器 — 調整馬達和馬達組設定。
set_position— 將馬達或馬達組的目前位置改為新值。set_velocity— 告訴馬達或馬達組旋轉的速度。set_stopping— 設定馬達或馬達組停止移動的方式:透過煞車、滑行或保持。set_max_torque— 設定馬達或馬達組在旋轉時允許施加的最大扭力。set_timeout— 設定馬達或馬達組嘗試完成運動的時間。set_reversed— 改變馬達的旋轉方向是否反轉。reset_position— 將馬達或馬達組的目前位置改為 0。
Getters — 檢查馬達和馬達組狀態。
is_done— 返回馬達或馬達組是否已完成移動,以布林值表示。is_spinning— 返回馬達或馬達組是否正在旋轉,以布林值表示。position— 返回馬達或馬達組的目前位置。velocity— 傳回馬達或馬達組的旋轉速度。current— 傳回馬達或馬達組正在使用的電流大小。power— 返回馬達或馬達組正在使用的功率。torque— 返回馬達或馬達組正在使用的扭矩大小。efficiency— 返回馬達或馬達組使用功率的效率。temperature— 返回馬達或馬達組的溫度。count— 傳回馬達組中的馬達數量。get_timeout— 傳回馬達或馬達組的目前逾時持續時間。
構造函數 — 手動初始化和配置馬達及馬達組。
Motor— 建立馬達。MotorGroup— 建立一個馬達組。
行動#
spin#
spin 表示馬達或馬達組正轉或反轉永不停歇。馬達或馬達組將持續旋轉,直到收到其他指令,例如改變旋轉方向或停止。
Usage:
motor_1.spin(direction, velocity, units)
參數 |
描述 |
|---|---|
|
馬達或馬達組的旋轉方向: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
可選。速度單位:
|
# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
spin_for#
spin_for 會使馬達或馬達組旋轉指定距離。旋轉距離是相對於馬達或馬達組的當前位置而言的。程式會等待馬達或馬達組旋轉完畢後,才會執行下一行程式碼。
Usage:
motor_1.spin_for(direction, angle, units, velocity, units_v, wait)
參數 |
描述 |
|---|---|
|
馬達或馬達組的旋轉方向: |
|
電機或電機組旋轉的距離。這可以是整數 |
|
可選。距離單位: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
可選。速度單位:
|
|
Optional.
|
# Spin the motor forward once, then reset
motor_1.spin_for(FORWARD, 90, DEGREES)
wait(1, SECONDS)
motor_1.spin_for(REVERSE, 90, DEGREES)
spin_to_position#
spin_to_position 將馬達或馬達組旋轉到特定位置。
電機或電機組的位置是指其旋轉的距離,以 DEGREES 或 TURNS來衡量。一圈等於 360 度。在專案開始時,馬達或馬達組的位置設定為 0 度。也可以使用 set_position 方法設定馬達或馬達組的位置。
位置值是絕對值。這意味著旋轉方向取決於馬達或馬達組的當前位置。
Usage:
motor_1.spin_to_position(rotation, units, velocity, units_v, wait)
參數 |
描述 |
|---|---|
|
The position value the motor or motor group will spin to. This can be an |
|
位置單位: |
|
Optional. The velocity to spin with from 0% to 100% when using |
|
可選。速度單位:
|
|
Optional.
|
# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)
stop#
stop 停止馬達或馬達組旋轉。
Usage:
motor_1.stop(mode)
參數 |
描述 |
|---|---|
|
Optional. How the motor or motor group will stop:
|
# Spin the motor, then stop
motor_1.spin(FORWARD)
wait(1, SECONDS)
motor_1.stop()
變異體#
set_position#
A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. set_position changes the motor or motor group’s current position to a new value.
例如,如果馬達或馬達組旋轉了 180 度,將其位置設為 0 度會將該位置從 180 度重設為 0 度。然後,馬達或馬達組可以根據該新值旋轉到對應位置。
Usage:
motor_1.set_position(position, units)
參數 |
描述 |
|---|---|
|
The position value to set for the motor or motor group. This can be an |
|
可選。位置單位: |
# Spin the motor to the new 0 position
motor_1.set_position(180, DEGREES)
motor_1.spin_to_position(0, DEGREES)
set_velocity#
set_velocity 告訴馬達或馬達組的旋轉速度。百分比越高,馬達或馬達組的旋轉速度越快;百分比越低,馬達或馬達組的旋轉速度越慢。
每個項目開始時,每個馬達或馬達組預設以 50% 的速度旋轉。
注意:更高的速度會使馬達或馬達組旋轉得更快,但精度可能會降低。更低的速度會使馬達或馬達組旋轉得更慢,但精度可能會更高。
Usage:
motor_1.set_velocity(velocity, units)
參數 |
描述 |
|---|---|
|
The speed the motor or motor group will spin at. |
|
可選。速度單位:
|
# Spin forward at the default velocity
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
# Spin slower
motor_1.set_velocity(20, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
# Spin faster
motor_1.set_velocity(100, PERCENT)
motor_1.spin_for(FORWARD, 100)
wait(1, SECONDS)
set_stopping#
set_stopping 設定馬達或馬達組停止運動的方式:透過煞車、滑行或保持。
Usage:
motor_1.set_stopping(mode)
參數 |
描述 |
|---|---|
|
How the motor or motor group will stop:
|
set_max_torque#
扭矩表示馬達或馬達組在旋轉時能夠產生的推力或拉力的大小。
set_max_torque 設定馬達或馬達組允許使用的最大扭力。
較高的百分比可以讓馬達或馬達組施加更大的推力,例如在舉起重物時。較低的百分比則會限制馬達或馬達組的推力。這有助於在馬達或馬達組卡住或達到其運動極限時保護機器人。
每個項目開始時,每個馬達或馬達組的扭力預設為 50%。
Usage:
motor_1.set_max_torque(value, units)
參數 |
描述 |
|---|---|
|
馬達或馬達組可使用的最大扭力。 0 |
|
可選。扭力單位:
|
set_timeout#
set_timeout 設定馬達或馬達組嘗試完成一次動作的逾時時間。如果馬達或馬達組無法在規定時間內完成,則會停止嘗試並執行下一行程式碼。這樣可以防止馬達或馬達組卡在某個運動中。
Usage:
motor_1.set_timeout(value, units)
參數 |
描述 |
|---|---|
|
電機或電機組嘗試完成一次運動的時間。這可以是正整數 |
|
可選。時間單位:
|
set_reversed#
set_reversed 改變馬達的旋轉方向是否反轉。此方法與建構 Motor 時將 reverse 參數設為 True 效果相同。
注意:此方法僅適用於單一電機,不適用於電機組。
Usage:
motor_1.set_reversed(value)
參數 |
描述 |
|---|---|
|
馬達方向是否反轉:
|
reset_position#
reset_position 將馬達或馬達組的目前位置改為 0。
Usage:
motor_1.reset_position()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
獲取器#
is_done#
is_done 返回馬達或馬達組是否已完成運動,回傳值為布林值。這可用於根據馬達的運動狀態控制其他行為的執行時間。
True— 馬達或馬達組停止運轉。False— 馬達或馬達組仍在運轉。
此方法與以下具有 wait 參數的 Motion 方法搭配使用:spin_for 和 spin_to_position。
Usage:
motor_1.is_done()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
if motor_1.is_done():
drivetrain.stop()
else:
drivetrain.drive(FORWARD)
is_spinning#
is_spinning 返回馬達或馬達組是否正在旋轉,回傳值為布林值。這可用於根據馬達的運動狀態控制其他行為的時序。
True— 馬達或馬達組正在旋轉。False— 馬達或馬達組不旋轉。
此方法與以下具有 wait 參數的 Motion 方法搭配使用:spin_for 和 spin_to_position。
Usage:
motor_1.is_spinning()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
# Drive forward until the motor is done spinning
motor_1.spin_for(FORWARD, 200, wait=False)
while True:
if motor_1.is_spinning():
drivetrain.drive(FORWARD)
else:
drivetrain.stop()
position#
A motor or motor group’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. position returns the motor or motor group’s current position.
專案開始時,馬達或馬達組的位置設定為 0 度。如果馬達或馬達組正轉一圈,則位置為 360 度或 1 圈。如果馬達或馬達組反向旋轉,則位置為負值。
Usage:
motor_1.position(units)
參數 |
描述 |
|---|---|
|
可選。用於將馬達或馬達組位置恢復到以下位置的單位: |
# Display the motor's position after spinning
brain.screen.print(motor_1.position())
brain.screen.next_row()
motor_1.spin(FORWARD)
wait(1, SECONDS)
brain.screen.print(motor_1.position())
motor_1.stop()
velocity#
velocity 返回馬達或馬達組的旋轉速度,以百分比(-100% 到 100%)或每分鐘轉數(-127 rpm 到 127 rpm)表示。
正值表示馬達或馬達組正轉,負值表示馬達或馬達組反轉。
Usage:
motor_1.velocity(units)
參數 |
描述 |
|---|---|
|
可選。回傳的速度單位:
|
current#
current 返回馬達或馬達組正在使用的電流大小,以安培為單位,範圍從 0.0 到 1.2 A。電流是指流過馬達或馬達組的電量。
電流值越高,表示馬達或馬達組消耗的電流越大。這種情況可能發生在馬達或馬達組提升重物、推動物體或試圖移動卡住的物體時。
這可以用來檢查馬達或馬達組在運動過程中是否運作吃力。如果電流持續過高,馬達可能會發熱或功率利用率降低。
Usage:
motor_1.current(units)
參數 |
描述 |
|---|---|
|
可選。要回傳的目前單位:
|
power#
power 返回馬達或馬達組正在使用的功率,以瓦特為單位測量,範圍從 0.0 到 11.0 瓦。功率顯示馬達或馬達組使用能量的速度。
功率值越高,代表馬達或馬達組的能耗速度越快。這種情況可能發生在馬達或馬達組提升重物、推動物體或試圖在卡住時移動時。
這可以用來比較運動情況,或檢查馬達或馬達組是否運轉吃力。如果功率持續偏高,馬達可能會發熱或能量利用效率降低。
Usage:
motor_1.power(units)
參數 |
描述 |
|---|---|
|
可選。要回傳的功率單位:
|
torque#
扭矩表示馬達或馬達組在旋轉時扭轉、推動或拉動的力度。
torque 返回馬達或馬達組正在使用的扭力大小,以英吋磅 (InLb) 為單位,範圍從 0.0 到 22.0,或牛頓米 (Nm) 為單位,範圍從 0.0 到 2.1。
扭力值越高,代表馬達或馬達組的推拉力越大。這種情況可能發生在馬達或馬達組提升重物、推動物體或試圖移動卡住的物體時。
這可以用來檢查運動系統或運動系統是否有困難,或比較不同動作需要多少推力。
若要設定馬達或馬達組的扭矩,請使用 set_max_torque。
Usage:
motor_1.torque(units)
參數 |
描述 |
|---|---|
|
回傳的扭力單位:
|
efficiency#
efficiency 返回馬達或馬達組使用功率的效率,以 0% 到 100% 的百分比表示。
效率值表示馬達或馬達組的功率有多少用於運動。效率值越高,表示馬達或馬達組用於運動的功率越多。當馬達或馬達組高負載運轉但運動量很小時,例如卡住或抵住障礙物時,效率值就會降低。
這可以用來比較運動情況,或者檢查電機或電機組是否浪費電力而不是將其用於運動。
Usage:
motor_1.efficiency(units)
參數 |
描述 |
|---|---|
|
可選。傳回的效率單位:
|
temperature#
temperature 返回馬達或馬達組的溫度。
馬達溫度顯示馬達或馬達組的溫度。溫度越高,表示馬達或馬達組在工作過程中溫度越高。為確保馬達始終以最佳性能運行,溫度應保持在 55°C 以下。
如果馬達或馬達組過熱,它會降低最大電流以保護自身。當溫度達到 70°C 時,馬達將停止運轉,直到冷卻。
這可以用來檢查馬達或馬達組在重複運動、長時間運轉或推動物體時是否過熱。
Usage:
motor_1.temperature(units)
參數 |
描述 |
|---|---|
|
可選。傳回的溫度單位:
|
count#
count 返回馬達組中的馬達數量。
注意:此方法僅適用於馬達組。
Usage:
motor_group_1.count()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
get_timeout#
get_timeout 傳回馬達或馬達組的目前 逾時 ,單位為毫秒。
Usage:
motor_1.get_timeout()
參數 |
描述 |
|---|---|
此方法沒有參數。 |
建構函數#
建構函式用於在「設備」視窗之外手動建立 Motor 和 MotorGroup 物件。
Motor#
Motor 產生一個電機。
Usage:
Motor(port, gears, reverse)
範圍 |
描述 |
|---|---|
|
馬達連接的智慧型端口,寫成 |
|
可選。馬達齒輪比:
|
|
可選。設定馬達旋轉方向是否反轉:
|
# Create a Motor in Port 1 with default values
motor_1 = Motor(Ports.PORT1)
"""
Create a motor with the following values:
- In Port 1
- 36:1 ratio
- Reversed
"""
motor_1 = Motor(Ports.PORT1, GearSetting.RATIO_36_1, True)
MotorGroup#
MotorGroup 建立一個馬達組。
Usage:
MotorGroup(motors)
範圍 |
描述 |
|---|---|
|
The names of previously created |
# Create the Motors
motor_1 = Motor(Ports.PORT1)
motor_2 = Motor(Ports.PORT2)
# Create a Motor Group
motor_group_1 = MotorGroup(motor_1, motor_2)