How can we help you today?
3Dof-ros全向輪式智慧機器手臂
重要接口


UART命令定義
目前ros32開放兩種UART命令
【0xA1】命令:控制車體進行omni運動,參數欄位(uint_8)為3欄(PARA_01, PARA_02, PARA_03),結尾\n
【0xA5】命令:ros32回報UART命令接收錯誤。

範例程式
本範例使用G14、G15、GND腳位

CRC範例
def calculate_crc(data):
crc = 0
for byte in data:
crc ^= byte # XOR 累加
return crc
UART 發送運動命令範例(Raspberry Pi 5)
注意:Pi 5實體UART裝置指向 port=”/dev/ttyAMA0″
import serial
import time
import random
def calculate_crc(data):
crc = 0
for byte in data:
crc ^= byte # XOR 累加
return crc
# 設定 UART 連接埠 (根據你的 Raspberry Pi 硬體調整 ttyS0 或 ttyAMA0)
uart = serial.Serial(
port="/dev/serial0", # Raspberry Pi 內建 UART
baudrate=115200,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
timeout=1
)
def send_data():
command_List = [0x11, 0x22, 0x33, 0x44]
command = random.choice(command_List)
rpm = random.randint(50, 200)
data = bytearray([0xA1, command, 0x00, rpm]) # 前 4 個 bytes
crc = calculate_crc(data) # 計算 CRC
data.append(crc) # 添加 CRC
data.append(0x0A) # 結尾 '\n'
uart.write(data)
print("Sent:", data.hex())
time.sleep(5) # 每5秒隨機送一筆運動命令
if __name__ == "__main__":
try:
while True:
send_data()
except KeyboardInterrupt:
print("\nExit program.")
uart.close()
UART發送運動停止命令(Raspberry Pi 5)
注意:Pi 5實體UART裝置指向 port=”/dev/ttyAMA0″
import serial
import time
import random
def calculate_crc(data):
crc = 0
for byte in data:
crc ^= byte # XOR 累加
return crc
# 設定 UART 連接埠 (根據你的 Raspberry Pi 硬體調整 ttyS0 或 ttyAMA0)
uart = serial.Serial(
port="/dev/serial0", # Raspberry Pi 內建 UART
baudrate=115200,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
timeout=1
)
def send_data():
#command_List = [0x11, 0x22, 0x33, 0x44]
#command = random.choice(command_List)
#rpm = random.randint(50, 200)
data = bytearray([0xA1, 0xDD, 0x00, 0x00]) # 停止車體運動
crc = calculate_crc(data) # 計算 CRC
data.append(crc) # 添加 CRC
data.append(0x0A) # 結尾 '\n'
uart.write(data)
print("Sent:", data.hex())
time.sleep(5) # 每5秒隨機送一筆運動命令, 沒有特別意義!
if __name__ == "__main__":
try:
while True:
send_data()
except KeyboardInterrupt:
print("\nExit program.")
uart.close()
Troubleshooting
注意:Pi 5實體UART裝置指向 port=”/dev/ttyAMA0″
#sudo raspi-config
> interfacing options
> Serial port
> No (shell停止UART) / Yes (硬體UART啟用 GPIO14(TX), GPIO15(RX))