Bassam Ahmad
←Back to projects

Graduation project

Autonomous Mobile Robot with a Soft Manipulator Arm

A mobile robot that localizes itself with ArUco markers and manipulates objects with a compliant soft arm, built on ROS2.

RoboticsROS2LocalizationSoft robotics
AMR with a soft manipulator arm navigating toward a marked object

Stack

ROS2GazeboPythonOpenCVArUcoC++

Problem

Rigid grippers are precise but punishing: a small localization error becomes a collision or a dropped object, especially on a mobile base that isn’t perfectly still when it arrives. This graduation project set out to combine a wheeled AMR with a soft, compliant arm, so that positioning error is absorbed by the arm rather than by the object – while still needing accurate enough localization to know where to reach.

Approach

The system is split into three ROS2 subsystems that talk over standard topics/actions rather than one monolithic node:

  • Perception & localization – an onboard camera detects ArUco markers on the target and the docking station. Marker pose estimation (OpenCV solvePnP) feeds a filter that fuses vision with odometry, so the robot has a usable pose estimate even when a marker briefly leaves the frame.
  • Navigation – the AMR uses ROS2’s navigation stack (costmaps + a local planner) to drive from its current pose to a pose offset from the target marker, then hands off to a short vision-servoed final approach for the last centimeters, where dead-reckoning error matters most.
  • Manipulation – the soft arm’s compliance is what makes the last step forgiving: instead of solving for a millimeter-perfect end pose, the controller only needs to get “close enough,” and the arm’s own flexibility handles the rest during contact.

Results

  • Localization error at the final approach: [add measured cm error]
  • Successful grasp/placement rate over [N] trials: [add %]
  • End-to-end task time (dock to placement): [add seconds]

What I’d improve next

  • Replace the marker-based localization with a learned pose estimator so the robot isn’t dependent on fiducials in the environment.
  • Add closed-loop force feedback from the soft arm instead of relying purely on its passive compliance.

Media