RoverROS

A repository containing the source code of a Rover with a 5DOF manipulator.

My user name in github 'mturktest123' is a carryover from my days working on crowdsourcing via AWS Mechanical Turk.

This project includes the development of the robot to be simulated in Gazebo.

It uses MoveIT to trajectory control the manipulator.

Dependancies:

You will need to install the following:

ROS Melodic

sudo apt-get install ros-melodic-ackermann-msgs

sudo apt-get install ros-melodic-ros-control ros-melodic-ros-controllers

Summary (quick start):

After you have everything installed use these two commands to see the full functionality.

  `roslaunch rover_with_arm_gazebo_control rover_with_arm_gazebo_moveit_keyboard_control.launch`
  
  `roslaunch rover_with_arm_moveit_config moveit_planning_execution.launch`

This youtube video demonstrates these two commands to control the rover and the arm in gazebo.

A detailed description of various packages is as follows.

rover_arm_resources_pkg

This package contains the xacro/urdf used by the rover and arm descriptions for materials, links & joints macros, and some common constants used in defining the robot models.

rover_desc_pkg

This package contains the urdf/xacro description of the rover. The robot model includes the rover chassis, steers, and wheels. The model is deliberately kept simple to have a lower computation load in simulation.

The following command shall be used to spawn the Rover model in RViz.

roslaunch rover_desc_pkg rover_rviz.launch

This command launches RViz with joint_state_publisher that allows us to play with various steers and wheels joints.

To understand how the command works, take a look at this video on youtube.

rover_arm_desc_pkg

This package contains the urdf/xacro description of the 5DOF manipulator arm. The arm model includes 5 revolure joints.

The following command shall be used to spawn the Arm in RViz.

roslaunch rover_arm_desc_pkg arm_rviz.launch

This command launches RViz with joint_state_publisher that allows us to play with various joints of the arm.

rover_with_arm_desc_pkg

This package combines the description of rover and arm to allow the spawning of complete rover assembly.

The following command shall be used to spawn the rover_with_arm in RViz.

roslaunch rover_with_arm_desc_pkg rover_arm_rviz.launch

This command launches RViz with joint_state_publisher that allows us to play with various joints of the rover and the arm.

To understand how the command works, take a look at this video on youtube.

rover_gazebo_control

This package simulates the rover in the gazebo simulation world. It spawns only the rover in gazebo.

Following commands shall be used to control the rover in simulation as described under:

  1. Use this command to spawn the rover in empty gazebo world:

    roslaunch rover_gazebo_control rover_gazebo_control.launch

    Following command launches a rqt_gui to control rover joints:

    rosrun rqt_gui rqt_gui

    Watch this video on youtube to understand how rover joints can be played.

  2. Use this command to spawn the rover in empty gazebo world and be controlled using keyboard commands:

    roslaunch rover_gazebo_control rover_gazebo_keyboard_ctrl.launch

    This command also brings up a node to take in the keyboard commands and publish velocity commands to the joints.

    The up and down arrow keys are used to run the rover in forward and reverse directions respectively.

    The left and right arrow keys are used for steering control of the rover.

    This youtube video shows how the rover is controlled using keyboard inputs.

rover_arm_gazebo_control

This package spawns the arm in the gazebo simulation world. It spawns only the arm in gazebo.

The following command shall be used to spawn the arm.

roslaunch rover_arm_gazebo_control rover_arm_gazebo_control.launch

rover_with_arm_gazebo_control

This package spawns the rover and the arm in the gazebo simulation world.

The following commands shall be used to have various controls of the rover and arm in the gazebo simulation world.

  1. Use this command to simply launch the rover and the arm in gazebo.

    roslaunch rover_with_arm_gazebo_control rover_with_arm_gazebo_control.launch

  2. Use this command to launch the rover and the arm in gazebo simulation and to control only the rover using keyboard inputs.

    roslaunch rover_with_arm_gazebo_control rover_with_arm_gazebo_keyboard_ctrl.launch

  3. Use this command to launch the rover and the arm in gazebo simulation and to control only the arm using MoveIT trajectory control.

    roslaunch rover_with_arm_gazebo_control rover_with_arm_gazebo_moveit_control.launch

    Please refer to the description under the next package to launch the MoveIT control of the arm.

    You may watch this video on youtube to understand how the command can be used with MoveIT package.

  4. Use this command to launch the rover and the arm in gazebo simulation with nodes to control the rover using keyboard inputs and the arm using MoveIT trajectory control.

    roslaunch rover_with_arm_gazebo_control rover_with_arm_gazebo_moveit_keyboard_control.launch

    Please refer to the description under the next package to launch the MoveIT control of the arm.

rover_with_arm_moveit_config

This package defines the MoveIT configuration of the arm joints. The joints are controlled using joint_trajectory_controller. Some random cartesian positions are defined for the arm.

Follow these commands to test or move the arm in cartesian control.

  1. This command launches the arm in RViz to plan and execute fake controllers for the testing of the configuration.

    roslaunch rover_with_arm_moveit_config demo.launch

  2. Use this command to control the arm in simulation mode such as in gazebo as mentioned in the above package description.

    roslaunch rover_with_arm_moveit_config moveit_planning_execution.launch

    This youtube video explains how this command can be used to control the arm in gazebo environment.