ArduPilot can be used with ROS using Gazebo and MAVROS. The best tutorials are these Emlid.

Instructions for using Gazebo with ArduPilot are here and has been blogged about here.

VR Robotics has successfully used Rover with ROS for SLAM as demonstrated below.

We are keen to improve ArduPilot’s support of ROS so if you find issues (such as commands that do not seem to be supported), please report them in the ArduPilot issues list with a title that includes “ROS” and we will attempt to resolve them as quickly as possible.