RoArm-M2-S Python串口通信控制

Python 串口通信

本章节主要介绍了如何使用 Python 串口让 PC/树莓派/Jeston Orin Nano 等设备与机械臂进行通信。这里拿 PC 与机械臂进行串口通信作示例。


RDK X5 使用

在 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 串口通信例程来与机械臂进行串口通信了。

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指令含义


Windows 使用

Windows 上安装 Python

首先到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 指令通信。


部署 Python 虚拟环境

点击下载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 串口通信例程来与机械臂进行串口通信了。

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指令含义


例程