ROS1-to-ROS2 Migration & Optimization

Job ID: 40297376

Budget: $30 – $250 USD

I have a working ROS 1 codebase that now needs to run on ROS 2. During the port I also want to tighten the overall architecture. My top priorities are:

• Better performance – specifically lower CPU / memory use and more robust error handling so that unexpected node failures are isolated instead of crashing the whole graph.
• Enhanced modularity in the communication interfaces: each topic, service, and action layer should live in its own cleanly separated package so that future protocol or middleware swaps are painless.

Scope of work
1. Migrate all existing ROS 1 nodes, launch files, and custom messages to ROS 2 (Foxy or later).
2. Replace catkin build system with colcon and update CI scripts accordingly.
3. Profile the new build, identify bottlenecks, and refactor for resource-efficient execution (e.g., smarter callback groups, intra-process comms, reduced copy overhead).
4. Harden error handling by adding lifecycle management, proper return codes, and log-level consistency.
5. Re-architect communication interfaces into discrete packages with clear APIs and documentation.

Deliverables
• Compilable ROS 2 workspace with source code, Dockerfile, and reproducible build instructions.
• Benchmark report comparing CPU, memory, and error-recovery metrics before and after the migration.
• API documentation showing the new interface boundaries.
• A brief hand-off session (video or live) walking through the changes.

Acceptance criteria
– All nodes launch under ROS 2 without warnings.
– CPU and memory footprints reduced by at least 15 % compared to baseline.
– A simulated fault in any single node does not propagate beyond its lifecycle manager.
– Communication packages can be built, tested, and reused independently.

If this fits your skill set in ROS 2, rclcpp, and performance tuning, let’s discuss timelines and milestones.