
Skills
- Python
- PyBullet
- RoboticsToolboxPython
- ROS2
Goal
Build an autonomous wheeled manipulator capable of pick-and-place of small wooden blocks
What I did
- A custom motion planning pipeline in ROS 2 (Python) that generated Cartesian end-effector trajectories and solved inverse kinematics along each waypoint using Robotics Toolbox for Python.
- A collision-checking layer in PyBullet covering both environmental obstacles and arm self-collision, validating trajectories before execution.
- A ROS messaging and service interface that streamed planned joint states to
sync_plan.pyon the arm controller for hardware-level execution.
Design Choices
I deliberately avoided MoveIt to reduce computational overhead on the Pi-class hardware and gain deterministic, predictable behaviour. Owning the planning stack end-to-end also made failure modes transparent and far easier to debug than an opaque off-the-shelf planner would have allowed.

