首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >基于实际硬件更新软件配置

基于实际硬件更新软件配置

作者头像
索旭东
发布2026-01-20 14:51:40
发布2026-01-20 14:51:40
1210
举报
文章被收录于专栏:具身小站具身小站

1. 获取连接端口

1.1 主机械臂

代码语言:javascript
复制
# 1. 主机械臂通过TypeC-USB线连接电脑主机
# 2. 进入主机源码目录
cd lerobot
# 3.  查找主机械臂总线伺服适配器的端口
python lerobot/scripts/find_motors_bus_port.py
# 4. 得到串口号(COM5)
在这里插入图片描述
在这里插入图片描述

1.2 从机械臂(含底盘)

代码语言:javascript
复制
# 1. 底盘和机械臂总线伺服板通过TypeC-USB线连接树莓派
# 2. 进入树莓派源码目录
cd lerobot
# 3.  查找主机械臂总线伺服适配器的端口
python lerobot/scripts/find_motors_bus_port.py
# 4. 得到串口号(/dev/ttyACM2)
在这里插入图片描述
在这里插入图片描述

1.3 摄像头(底部、顶部)

代码语言:javascript
复制
# 1. 底部和顶部相机依次连接树莓派USB口
# 2. 进入树莓派源码目录
cd lerobot
# 3.  查找主机械臂总线伺服适配器的端口
python lerobot/scripts/find_motors_bus_port.py
# 4. 分别得到串口号(dev/video2(/dev/ttyACM1)、dev/video0(/dev/ttyACM1))

底部相机(使用video:dev/video2)

在这里插入图片描述
在这里插入图片描述

顶部相机(dev/video0)

在这里插入图片描述
在这里插入图片描述

1.4 树莓派

代码语言:javascript
复制
# 查看IP地址(ssh登录IP一致)
ifconfig
在这里插入图片描述
在这里插入图片描述

2. 无线链接配置更新

基于前面获取的实际端口值,在 Config(lerobot/common/robot_devices/robots/config.py) 文件中修改网络配置、leader_arms 端口和 follower_arms端口、相机连接口,同步修改PC和树莓派两端的配置文件,如下:

代码语言:javascript
复制
@RobotConfig.register_subclass(“lekiwi”)
ip: str = “192.168.18.200”
cameras.default_factory.front.camera_index=“/dev/video2”
cameras.default_factory.wrist.camera_index=“/dev/video0”
leader_arms.default_factory.main.port=“COM5”
follower_arms.default_factory.main.port=“/dev/ttyACM2”
在这里插入图片描述
在这里插入图片描述

3. 有线直连方案更新配置

如果底盘没用树莓派,而是直接连接了电脑,对于底盘和主机械臂都通过USB连接PC主机的情况,配置的 IP 地址应引用自己的笔记本电脑 (127.0.0.1),因为在这种情况下,leader arm 和 LeKiwi 连接到自己的笔记本电脑。以下是此有线设置的示例配置:

代码语言:javascript
复制
@RobotConfig.register_subclass("lekiwi")
@dataclass
class LeKiwiRobotConfig(RobotConfig):
    # `max_relative_target` limits the magnitude of the relative positional target vector for safety purposes.
    # Set this to a positive scalar to have the same value for all motors, or a list that is the same length as
    # the number of motors in your follower arms.
    max_relative_target: int | None = None

    # Network Configuration
    ip: str = "127.0.0.1"
    port: int = 5555
    video_port: int = 5556

    cameras: dict[str, CameraConfig] = field(
        default_factory=lambda: {
            "front": OpenCVCameraConfig(
                camera_index="/dev/ttyACM1", fps=30, width=640, height=480, rotation=90
            ),
            "wrist": OpenCVCameraConfig(
                camera_index="/dev/ttyACM0", fps=30, width=640, height=480, rotation=180
            ),
        }
    )

    calibration_dir: str = ".cache/calibration/lekiwi"

    leader_arms: dict[str, MotorsBusConfig] = field(
        default_factory=lambda: {
            "main": FeetechMotorsBusConfig(
                port="COM5",
                motors={
                    # name: (index, model)
                    "shoulder_pan": [1, "sts3215"],
                    "shoulder_lift": [2, "sts3215"],
                    "elbow_flex": [3, "sts3215"],
                    "wrist_flex": [4, "sts3215"],
                    "wrist_roll": [5, "sts3215"],
                    "gripper": [6, "sts3215"],
                },
            ),
        }
    )

    follower_arms: dict[str, MotorsBusConfig] = field(
        default_factory=lambda: {
            "main": FeetechMotorsBusConfig(
                port="/dev/ttyACM2",
                motors={
                    # name: (index, model)
                    "shoulder_pan": [1, "sts3215"],
                    "shoulder_lift": [2, "sts3215"],
                    "elbow_flex": [3, "sts3215"],
                    "wrist_flex": [4, "sts3215"],
                    "wrist_roll": [5, "sts3215"],
                    "gripper": [6, "sts3215"],
                    "left_wheel": (7, "sts3215"),
                    "back_wheel": (8, "sts3215"),
                    "right_wheel": (9, "sts3215"),
                },
            ),
        }
    )

    teleop_keys: dict[str, str] = field(
        default_factory=lambda: {
            # Movement
            "forward": "w",
            "backward": "s",
            "left": "a",
            "right": "d",
            "rotate_left": "z",
            "rotate_right": "x",
            # Speed control
            "speed_up": "r",
            "speed_down": "f",
            # quit teleop
            "quit": "q",
        }
    )

    mock: bool = False
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 具身小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 获取连接端口
    • 1.1 主机械臂
    • 1.2 从机械臂(含底盘)
    • 1.3 摄像头(底部、顶部)
    • 1.4 树莓派
  • 2. 无线链接配置更新
  • 3. 有线直连方案更新配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档