Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ROS 2 Migration Plan #1124

Open
cbrxyz opened this issue Feb 2, 2024 · 0 comments
Open

ROS 2 Migration Plan #1124

cbrxyz opened this issue Feb 2, 2024 · 0 comments

Comments

@cbrxyz
Copy link
Member

cbrxyz commented Feb 2, 2024

πŸ€– ROS 1 β†’ 2 Migration Plan

Below is a comprehensive list of packages that need to be migrated from ROS 1 to ROS 2, separated by system. Issues should be made for each package that needs to be converted, with a reference to such issue here!

To avoid having our inboxes and issue page flooded with new issues, only a few issues relevant to this project will be made at any one time!

Helpful Tools

There are several helpful tools and pages that we will use when migrating from ROS 1 to ROS 2. They are listed here:

Introduction to ROS 2, and why are we migrating?

ROS 2 is the next major version of ROS. It serves as a successor to ROS 1 (what we are currently using right now), and features some significant changes that would break compatibility with previous versions of ROS 1. You should know that ROS 1 and ROS 2 are very similar, but many of the names and styles of creating nodes have changed.

More and more ROS development is focusing on ROS 2 (VRX, Gazebo, etc.). We want to update our code to work well with these tools so that we can use the most recent, up-to-date versions of ROS and ROS-related tools.

Versioning and your setup

There are several versions of ROS 2. We will be targeting Humble (with support until May 2027) on Ubuntu 22.04. For now, you do not need to upgrade your installation of Ubuntu 20.04 if you would not like to do so. You will still be able to assist in the migration, you just cannot run any of the converted code yet. That's totally okay, since usually we verify big migrations like this at the end of the migration, since it's hard to test the workings of a codebase that half supports ROS 1 and ROS 2.

Alternatively, you may want to install ROS 2 on your existing Ubuntu 20.04 setup, or you may want to setup Ubuntu 22.04 with a ROS 2 install. It shouldn't be required, but you may want to do so for your convenience, curiosity, or interest.

Required readings

Before getting started, please skim over the following documents: (it will take you like 20 minutes)

Migration Guide

Great! So you're ready to start migration your package. How do you get started?

  1. Choose a package from the list below that still needs to be migrated (:x:)
  2. Create a new branch off of the existing ros2 branch.
  3. Migrate it by hand, or using the automated tools in the links above if you prefer. Remember that if you use the automated tools, they may convert too much/too little, and you'll need to verify their output.
  4. Create a new pull request of your branch back into ros2.

Development Guide

After migrating a package, please immediately open a pull request into the ros2 branch. Once everything has been verified as being stable/when all packages have been migrated, we will merge the ros2 branch into main. That will likely be towards the end of the semester!

Navigator (30 packages)

Migrated Package
❌ NaviGator/gnc/navigator_msg_multiplexer
❌ NaviGator/gnc/navigator_thrust_mapper
❌ NaviGator/gnc/navigator_path_planner
❌ NaviGator/gnc/navigator_controller
❌ NaviGator/hardware_drivers/navigator_kill_board
❌ NaviGator/mission_control/navigator_alarm
❌ NaviGator/mission_control/navigator_launch
❌ NaviGator/mission_control/navigator_missions
❌ NaviGator/mission_systems/navigator_scan_the_code (#733)
❌ NaviGator/perception/navigator_vision
❎ NaviGator/satellite/rviz_satellite
❎ NaviGator/simulation/VRX/vrx/usv_gazebo_plugins (OSRF code)
❎ NaviGator/simulation/VRX/vrx/usv_msgs (OSRF code)
❎ NaviGator/simulation/VRX/vrx/vrx_gazebo (OSRF code)
❎ NaviGator/simulation/VRX/vrx/wamv_description (OSRF code)
❎ NaviGator/simulation/VRX/vrx/wamv_gazebo (OSRF code)
❎ NaviGator/simulation/VRX/vrx/wave_gazebo (OSRF code)
❌ NaviGator/simulation/navigator_2dsim
❌ NaviGator/simulation/navigator_gazebo
❌ NaviGator/test/navigator_test
❌ NaviGator/utils/navigator_battery_monitor
❌ NaviGator/utils/navigator_gui
❌ NaviGator/utils/navigator_judgepanel
βœ… (#1159) NaviGator/utils/navigator_msgs
❌ NaviGator/utils/navigator_robotx_comms
❌ NaviGator/utils/navigator_tools
❌ NaviGator/utils/remote_control/navigator_emergency_control
❌ NaviGator/utils/remote_control/navigator_joystick_control
❌ NaviGator/utils/remote_control/navigator_keyboard_control
❌ NaviGator/utils/voltage_gui

Subjugator (15 packages)

Migrated Package
❌ SubjuGator/command/sub8_alarm
❌ SubjuGator/command/sub8_launch
❌ SubjuGator/command/sub8_missions
❌ SubjuGator/drivers/sub8_actuator_board
❌ SubjuGator/drivers/sub8_thrust_and_kill_board
❌ SubjuGator/perception/sub8_perception
❌ SubjuGator/perception/sub8_pointcloud
❌ SubjuGator/simulation/sub8_gazebo
❌ SubjuGator/simulation/sub8_simulation
❌ SubjuGator/utils/sub8_diagnostics
❌ SubjuGator/gnc/c3_trajectory_generator
❌ SubjuGator/gnc/rise_6dof
❌ SubjuGator/gnc/sub8_controller
❌ SubjuGator/gnc/sub8_system_id
❌ SubjuGator/gnc/sub8_thruster_mapper

mil_common (15 packages)

Migrated Package
❌ mil_common/drivers/mil_pneumatic_actuator
❌ mil_common/drivers/sabertooth2x12
❌ mil_common/drivers/mil_passive_sonar
❌ mil_common/drivers/mil_usb_to_can
❌ (Naresh) mil_common/gnc/odometry_utils
❌ mil_common/gnc/rawgps_common
❌ (Naresh) mil_common/gnc/mil_bounds
❌ mil_common/mil_missions
❌ mil_common/perception/mil_mlp (Deprecated)
❌ mil_common/perception/mil_vision
❌ mil_common/ros_alarms
❌ (cameron) Submodule: mil_common/axros
❌ mil_common/utils/mil_poi
❌ mil_common/utils/mil_tools
@Nihar3430 Nihar3430 assigned Nihar3430 and Abishanka and unassigned Abishanka and Nihar3430 Feb 5, 2024
@Nareshp1 Nareshp1 self-assigned this Feb 5, 2024
@MkMayo MkMayo self-assigned this Feb 5, 2024
@Anthonyl14201 Anthonyl14201 self-assigned this Feb 7, 2024
@Nihar3430 Nihar3430 self-assigned this Feb 8, 2024
@Jorge-R08 Jorge-R08 self-assigned this Feb 8, 2024
@AnvitD AnvitD self-assigned this Feb 13, 2024
@cbrxyz cbrxyz pinned this issue Mar 5, 2024
@cbrxyz cbrxyz unpinned this issue Aug 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

8 participants