本章节主要介绍了如何使用 Python 串口让 PC/树莓派/Jeston Orin Nano 等设备与机械臂进行通信。这里拿 PC 与机械臂进行串口通信作示例。
在 RDK X5 Ubuntu 系统中,点击下载RoArm-M2-S的Python例程,下载完成后进入“/home/sunrise/Downloads”目录进行解压缩:
cd /home/sunrise/Downloads unzip RoArm-M2-S_python.zip
在这个项目文件夹下创建一个对于这个项目的虚拟环境,输入命令:python -m venv [虚拟环境名称,一般叫项目名-env]。
cd RoArm-M2-S_python python -m venv roarmpython-env
激活这个虚拟环境,在命令提示符界面中输入:项目名-env\Scripts\activate.bat。
source roarmpython-env/bin/activate
解压后可以看见例程中有一个requirements.txt文件,这个文件是RoArm-M2-S_Python项目需要用到的安装包列表,可以通过输入以下命令直接安装所有必备的包到虚拟环境中:
python -m pip install -r requirements.txt
安装完成后,接下来就可以通过运行 Python 串口通信例程来与机械臂进行串口通信了。
在 RoArm-M2-S Python 例程中可以看见其中有四个 Python 程序,串口通信用到的 Python 例程为 serial_simple_ctrl.py。例程如下:
import serial
import argparse
import threading
def read_serial():
while True:
data = ser.readline().decode('utf-8')
if data:
print(f"Received: {data}", end='')
def main():
global ser
parser = argparse.ArgumentParser(description='Serial JSON Communication')
parser.add_argument('port', type=str, help='Serial port name (e.g., COM1 or /dev/ttyUSB0)')
args = parser.parse_args()
ser = serial.Serial(args.port, baudrate=115200, dsrdtr=None)
ser.setRTS(False)
ser.setDTR(False)
serial_recv_thread = threading.Thread(target=read_serial)
serial_recv_thread.daemon = True
serial_recv_thread.start()
try:
while True:
command = input("")
ser.write(command.encode() + b'\n')
except KeyboardInterrupt:
pass
finally:
ser.close()
if __name__ == "__main__":
main()
给机械臂上电,使用 USB 线通过 Type-C 接口将 RDK X5 主板与机械臂进行连接。如果您使用的是其它设备与机械臂连接,您也可以通过 RX/TX 引脚进行连接。
连接后,在终端中输入:ls /dev/tty* 查看机械臂接入后新出现的端口后,新出现的为 /dev/ttyUSB0。
使用以下命令来运行串口通信程序,注意一定要加上机械臂所接入的端口号。如果您使用的是树莓派、Jeston Orin Nano等设备,也要更改为相对应的端口名称。
python serial_simple_ctrl.py /dev/ttyUSB0
运行完成后,不会返回任何信息。可以使用开关 LED 灯或者开关扭矩锁的 JSON 指令来验证是否能与机械臂进行通信。
//开启 LED 灯,机械臂上的 LED 灯会亮 {"T":114,"led":255} //关闭 LED 灯 {"T":114,"led":0} //关闭扭矩锁,此时,可以用手转动机械臂 {"T":210,"cmd":0} //开启扭矩锁,此时,不可用手转动机械臂 {"T":210,"cmd":1}
在这个界面中可以发送 JSON 格式的指令,也可以获取机械臂的反馈信息,从而与机械臂进行通信。更多 JSON 格式指令的含义参考教程 RoArm-M2-S_JSON指令含义。
首先到Python 官网下载最新版本 Python 的安装包。根据您的操作系统选择进行下载即可,我这里下载的是 windows 的,版本是3.12.0。
下载完成后,双击安装程序 python-3.12.0-amd64。一定要记得勾选“Add python.exe to PATH”,勾选后点击“Customize installation(自定义安装)”进入到“Optional Features”可选功能界面。 注意若您是Windows系统安装一定要勾选"Add Python.exe to PATH"。
在 Optional Features 这一界面中保持勾选点击“Next”后进入到“Advanced Options”界面。
在“Advanced Options”界面中,安装地址可以点击“Browse”后修改为自己要安装的地址,这里是默认安装地址,设置好后点击“Install”安装,等待安装完成即可。
安装好后,接下来我们可以进行 Python 项目编译,通过 Python 例程与机械臂进行 JSON 指令通信。
点击下载RoArm-M2-S的Python例程,解压后,接着在“开始”菜单栏中输入 cmd 打开Windows的命令提示符界面,输入“cd 文件夹路径”进入到RoArm-M2-S_Python项目文件夹下。
cd C:\Users\liuwei\Desktop\RoArm-M2-S\RoArm-M2-S_python
在这个项目文件夹下创建一个对于这个项目的虚拟环境,输入命令:python -m venv [虚拟环境名称,一般叫项目名-env]。
python -m venv roarmpython-env
激活这个虚拟环境,在命令提示符界面中输入:项目名-env\Scripts\activate.bat。
roarmpython-env\Scripts\activate.bat
解压后可以看见例程中有一个requirements.txt文件,这个文件是RoArm-M2-S_Python项目需要用到的安装包列表,可以通过输入以下命令直接安装所有必备的包到虚拟环境中:
python -m pip install -r requirements.txt
安装完成后,接下来就可以通过运行 Python 串口通信例程来与机械臂进行串口通信了。
在 RoArm-M2-S Python 例程中可以看见其中有四个 Python 程序,串口通信用到的 Python 例程为 serial_simple_ctrl.py。例程如下:
import serial
import argparse
import threading
def read_serial():
while True:
data = ser.readline().decode('utf-8')
if data:
print(f"Received: {data}", end='')
def main():
global ser
parser = argparse.ArgumentParser(description='Serial JSON Communication')
parser.add_argument('port', type=str, help='Serial port name (e.g., COM1 or /dev/ttyUSB0)')
args = parser.parse_args()
ser = serial.Serial(args.port, baudrate=115200, dsrdtr=None)
ser.setRTS(False)
ser.setDTR(False)
serial_recv_thread = threading.Thread(target=read_serial)
serial_recv_thread.daemon = True
serial_recv_thread.start()
try:
while True:
command = input("")
ser.write(command.encode() + b'\n')
except KeyboardInterrupt:
pass
finally:
ser.close()
if __name__ == "__main__":
main()
给机械臂上电,使用 USB 线通过 Type-C 接口将 PC 与机械臂进行连接。如果您使用的是其它设备与机械臂连接,您也可以通过 RX/TX 引脚进行连接。
连接后,在“开始”中的搜索栏中搜索设备管理器查看新插入的端口号,这里新插入的为 COM20,不同电脑插入的端口号不一样,记住机械臂接入的端口号。
使用以下命令来运行串口通信程序,注意一定要加上机械臂所接入的端口号。将 COM20 更换成机械臂在 PC 中新插入的串口设备端口号,如果您使用的是树莓派、Jeston Orin Nano等设备,也要更改为相对应的端口名称。
python serial_simple_ctrl.py COM20
运行完成后,可以看见机械臂进行初始化后的返回信息。
在这个界面中可以发送 JSON 格式的指令,也可以获取机械臂的反馈信息,从而与机械臂进行通信。更多 JSON 格式指令的含义参考教程 RoArm-M2-S_JSON指令含义。