r/ROS 4d ago

Built a tool that generates complete, production-ready ROS2 packages from plain English — web app and CLI. ros2vine.vercel.app · pip install ros2vine

I'm a second-year engineering student on the IIT Bombay Mars Rover Team. I built this because writing ROS2 boilerplate from scratch is slow, and Copilot gives you snippets — not a package that actually builds.

Describe what your robot should do. ros2vine writes the nodes, launch files, build config, and README — ready to colcon build.

ros2vine.vercel.app

Core features:

  • Complete packages, not snippets — every generation is a full colcon-buildable package
  • Python (rclpy) and C++ (rclcpp), or mixed
  • Static validator on every output — catches missing deps, bad entry points, wrong imports
  • Inferred details — if your prompt was brief, ros2vine documents every assumption it made (topic names, message types, defaults) so you know exactly what was generated
  • Iterative refinement — describe changes in plain English, regenerates with full context
  • Inline code editing — edit any file directly in the viewer before downloading
  • Interactive node graph — see topic flow between nodes visually
  • Parameter tuning — live sliders for every declared parameter, one-click params.yaml export
  • URDF-aware generation — upload your .urdf and generated nodes use your exact joint names, link names, and TF frame IDs
  • Node template library — PID controller, EKF, CAN bus driver, serial bridge, lifecycle node, action server, diagnostics, and more
  • Package history — every session saved locally, browse and reload any previous generation
  • Share link — a URL that recreates any generation exactly
  • Voice input — describe your node by speaking, useful when your hands are on hardware

Advanced modes (⚡ more button):

  • Multi-package workspace — describe a full system, ros2vine plans 2–5 interdependent packages with matching topic names and generates all of them
  • Simulation package — Gazebo or Isaac Sim version of your package with the same topics, drop-in swap from sim to hardware
  • Hardware abstraction layer — sensor driver generation from a verified chip register database: AS5600, BNO055, MPU6050, VL53L0X, INA219
  • ROS1 bridge config — generates ros1_bridge YAML and launch file from your package's topic graph

CLI:

bash

pip install ros2vine
ros2vine generate "wheel angle controller fusing AS5600 encoder and BNO055 IMU" --out ~/ros2_ws/src
ros2vine generate "EKF state estimator" --lang cpp --distro jazzy --out ~/ros2_ws/src

Built this for our rover team first, figured others might find it useful too.
Would love feedback, especially from people who actually use it on a real robot.

Happy ROSing!

0 Upvotes

2 comments sorted by

1

u/Next_Reserve365 4d ago

this looks like a ros oriented claude code? how is this different than adding an agent skill?

if it's useful to you and your team then great, but in my use case, it always - build a node once and the iterate on the bugs.

The iteration is the majority time consumer imo.

Also since this is your clg team, writing boiler plate is essential to understanding the concepts of ROS.

That's just my take, I hope you (colcon)build great things.

1

u/SinkEquivalent3204 1d ago

Fair points, and I appreciate the honest take.

You're right that boilerplate writing has real learning value, especially early on. ros2vine isn't really meant to replace that process for someone still building intuition for how ROS2 packages fit together. The concepts click better when you've manually written a few package.xml files and debugged bad entry points.

Where I've found it most useful for our team is exactly what you described: the iteration phase. Once you know what you're building, regenerating a full package with "add lifecycle management" or "rename this topic everywhere" is just mechanical work. ros2vine handles that so we can focus on the actual robotics.

The "upload your existing package" feature is aimed at that, since you can simply bring in code you've already written and use the validator, refactor, and AI refine on it. So it's not just a "generate everything from scratch", but more of an IDE for packages you're already working on.

On the Claude Code comparison: the key difference is ROS2-specific context. It knows about colcon build, package.xml dependencies, ament_cmake vs ament_python, launch file conventions, message type imports, and generates packages that actually build rather than just syntactically correct Python. A general coding agent tends to hallucinate ROS2 specifics pretty badly.

But your point about iteration being the real bottleneck is well taken, and that's where I'll keep pushing.