Pick and Place with Ridheback-Sawyer-PX100 Robot Ridgeback-Sawyer-PX100 机器人拾取放置

Mobile manipulation with Ridgeback platform and dual robot arms Ridgeback平台搭载双机械臂的移动操作

ROS1, ROS Noetic, Linux, Bash Shell, C++, Python, Moveit!, Navigation, Rethink Sawyer Robot Arm, Interbotix PincherX-100 Robot Arm, Clearpath Ridgeback Mobile Platform

View This Project on GitHub

Sawyer MoveIt!

Intera SDK

Description

This project aims for implementing a pick-and-place pipline on a mobile manipulator via ROS Noetic, which is a Clearpath Ridgeback Mobile Platform with Rethink Sawyer Robot Arm and Interbotix PincherX-100 Robot Arm mounted on top of it.

System Architecture

The overall system architecture integrates three primary subsystems to enable coordinated mobile manipulation.

graph TB
    subgraph UI["User Interface"]
        USER[User Commands]
        RVIZ[RViz Visualization]
    end

    subgraph Command["Command Interface"]
        PARSER[Goal Parser]
        COORD[Task Coordinator]
    end

    subgraph ArmControl["Robot Arm Control<br/>Rethink Sawyer"]
        MOVEIT[MoveIt! Planner]
        ARM_CTRL[Intera SDK Controller]
        SAWYER[Sawyer Arm]
    end

    subgraph BaseControl["Mobile Platform Control<br/>Clearpath Ridgeback"]
        NAV[ROS Navigation Stack]
        BASE_CTRL[Ridgeback Controller]
        MOBILE[Mobile Base]
    end

    subgraph Vision["Vision System<br/>Interbotix PX100"]
        CAM[RealSense Camera]
        PX100[PX100 Arm]
        DETECT[Object Detection]
    end

    USER --> PARSER
    PARSER --> COORD
    COORD --> MOVEIT
    COORD --> NAV
    MOVEIT --> ARM_CTRL
    ARM_CTRL --> SAWYER
    NAV --> BASE_CTRL
    BASE_CTRL --> MOBILE
    CAM --> DETECT
    DETECT --> COORD
    PX100 --> COORD

    SAWYER --> RVIZ
    MOBILE --> RVIZ

    style COORD fill:#fff4e1
    style MOVEIT fill:#e1f5ff
    style NAV fill:#d4edda

Key Subsystems:

  • Robot Arm Control: Controls the Sawyer robot arm motion using MoveIt! for motion planning and the Intera SDK for execution
  • Mobile Platform Control: Manages Ridgeback mobile base navigation using the ROS Navigation stack
  • Command Interface: Receives user goals, coordinates task execution between arm and base controllers
  • Vision System: PX100 arm with RealSense camera for object detection and localization

Software Workflow

Pick Operation

sequenceDiagram
    participant User
    participant Vision
    participant Navigator
    participant Base
    participant Planner
    participant Arm

    User->>Vision: Select target object
    Vision->>Vision: Detect object pose
    Vision->>Navigator: Send target coordinates

    Navigator->>Navigator: Compute base goal pose
    Navigator->>Base: Navigate to position
    Base->>Base: Move to target location

    Base->>Planner: Base at goal, request grasp
    Planner->>Planner: Compute arm trajectory
    Planner->>Arm: Execute pick motion
    Arm->>Arm: Approach object
    Arm->>Arm: Close gripper (grasp)
    Arm->>Arm: Lift object

    Arm-->>User: Pick complete

The user selects a target object, the Ridgeback navigates to the appropriate position, and the Sawyer arm executes the pick motion.

Place Operation

flowchart TD
    START([Object Grasped]) --> INPUT[User specifies<br/>placement location]
    INPUT --> NAV_PLAN[Compute navigation path]
    NAV_PLAN --> MOVE[Ridgeback navigates<br/>to drop-off zone]

    MOVE --> ARM_PLAN[Plan placement trajectory]
    ARM_PLAN --> APPROACH[Arm approaches<br/>placement pose]
    APPROACH --> OPEN[Open gripper]
    OPEN --> RELEASE[Release object]

    RELEASE --> RETRACT[Retract to safe pose]
    RETRACT --> END([Place complete])

    style START fill:#d4edda
    style END fill:#d4edda
    style MOVE fill:#e1f5ff
    style ARM_PLAN fill:#fff4e1

Hardware

The overall hardware structure is shown in the figure below, which is a sawyer arm and a px100 arm with a realsense cammera attached mounted on the top of the ridgeback.

Network Architecture

The distributed computing system spans three networked machines for coordinated control.

graph TB
    subgraph PC["User PC"]
        UI[User Interface<br/>RViz + Command Line]
    end

    subgraph Ridgeback["Ridgeback Onboard Computer"]
        MASTER[ROS Master]
        NAV_NODE[Navigation Stack]
        COORD_NODE[Coordinator Node]
        BASE_DRIVER[Ridgeback Driver]
        PX100_DRIVER[PX100 Driver]
    end

    subgraph Sawyer["Sawyer Onboard Computer"]
        INTERA[Intera SDK]
        ARM_DRIVER[Sawyer Controller]
        ARM_STATE[Joint State Publisher]
    end

    UI <-->|ROS Network| MASTER
    MASTER <--> NAV_NODE
    MASTER <--> COORD_NODE
    MASTER <--> BASE_DRIVER
    MASTER <--> PX100_DRIVER

    MASTER <-->|ROS Network| INTERA
    INTERA <--> ARM_DRIVER
    ARM_DRIVER <--> ARM_STATE

    style PC fill:#e1f5ff
    style Ridgeback fill:#fff4e1
    style Sawyer fill:#d4edda

System Components:

  • PC: User control interface for sending commands and visualization via RViz
  • Ridgeback Computer: Hosts ROS Master, performs navigation calculations, coordinates system behavior
  • Sawyer Computer: Executes Intera SDK for arm control based on commands from Ridgeback computer

ROS

Based on the ROS1 standard, in order for all nodes to be discovered by others, the ROS_MASTER_URI must be set to be the same, so that all nodes are running under the same ROS master. So that all parameters and topics are served on the same server so that they can listen to others.

Packages

  • motion_control: Used the ROS Navigation to control the motion of the mobile platform.
  • arm_control: ontrol the motion of the robot arm.
  • vision_control: Calibrate the camera and control the motion of the px100 arm.
  • object_detection: Used for detect target pose as for the target object.
  • picker_interfaces: Customized interfaces for transporting data between ROS nodes
  • manipulator_description: Visualizing the robot over rviz.

Final Result

Technical Challenges

Moveit! with Sawyer

The default Moveit! interface configuration for sawyer was not compatible with the current configuration of the robot since the robot arm is mounted on the base instead of mounting on the control algorith coming along with the software.

Sawyer Hardware

There was a lot of issue setting up the Rethink Sawyer robot arm, there was some both mechanical and software issue for fixing it.

Link: Fixing Sawyer Arm

Low Bandwidth

The robot is configured to use a 2G wifi to communicate with the laptop, making it difficult to transport large amount of data within short period of time. Which increases the latency between sensor and when data is processed. This will cause inacuracy on SLAM, path planning and motion planning.

ROS1, ROS Noetic, Linux, Bash Shell, C++, Python, MoveIt!, 导航, Rethink Sawyer 机械臂, Interbotix PincherX-100 机械臂, Clearpath Ridgeback 移动平台

在 GitHub 上查看此项目

描述

该项目旨在通过 ROS Noetic 在移动机械臂上实现拾取放置流程,该机器人由安装在 Clearpath Ridgeback 移动平台 上的 Rethink Sawyer 机械臂Interbotix PincherX-100 机械臂 组成。

系统架构

整体系统架构集成了三个主要子系统,实现协调的移动操作。

主要子系统:

  • 机械臂控制: 使用 MoveIt! 进行运动规划,使用 Intera SDK 执行控制 Sawyer 机械臂的运动
  • 移动平台控制: 使用 ROS 导航栈管理 Ridgeback 移动基座导航
  • 命令接口: 接收用户目标,协调机械臂和基座控制器之间的任务执行
  • 视觉系统: PX100 机械臂配备 RealSense 相机,用于目标检测和定位

最终结果

技术挑战

MoveIt! 与 Sawyer

Sawyer 的默认 MoveIt! 接口配置与机器人当前配置不兼容,因为机械臂是安装在移动基座上的,而不是安装在软件自带的控制算法上。

Sawyer 硬件

在设置 Rethink Sawyer 机械臂时遇到了很多问题,包括机械和软件方面的问题需要修复。

链接: 修复 Sawyer 机械臂

低带宽

机器人配置使用 2G wifi 与笔记本电脑通信,导致难以在短时间内传输大量数据。这增加了传感器和数据处理之间的延迟,会导致 SLAM、路径规划和运动规划的不准确。