This package suite is designed to bring the JPL Open Source Rover to life in a simulated environment using Gazebo. Inspired by NASA JPL's Open Source Rover project, these packages allow for visualization and control in a Gazebo simulation.
The following ROS packages are included to visualize the rover in rviz and simulate its operations in Gazebo:
rover.launch
: Launches a package for observing the rover in rviz, providing real-time visualization of its movements and sensor data.rover_gazebo.launch
: Deploys the rover within the Gazebo simulation environment, creating a virtual testing ground for rover operations.controller.launch
: Initializes the control system for the rover, setting the stage for user interaction through various input devices.rover_teleop_keyboard.launch
: A package that allows the user to maneuver the rover using keyboard inputs, ensuring precise and responsive control.rover_teleop_xbox.launch
: Enables control of the rover via an Xbox controller, offering an intuitive and ergonomic option for navigation and operation.
- Operating System: Ubuntu 20.04.06 LTS
- ROS Distribution: Noetic
- Gazebo Version: 11.14.0
To fully utilize the capabilities of the rover simulation, the following ROS packages are necessary:
rviz
urdf
xacro
gazebo_ros
robot_state_publisher
joint_state_publisher
diagnostic_updater
ros_control
example:
sudo apt-get install ros-noetic-ros-controllers
sudo apt-get install ros-noetic-diagnostic-updater
sudo apt-get install ros-noetic-robot-state-publisher
sudo apt-get install ros-noetic-joint-state-publisher
sudo apt-get install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control
Source your ROS installation:
source /opt/ros/noetic/setup.bash
Create a catkin workspace:
mkdir -p ~/rover_ws/src
cd ~/rover_ws/src
catkin_init_workspace
cd ..
catkin_make
Clone and build the packages:
cd ~/rover_ws/src
git clone https://github.com/dongjineee/rover_gazebo.git
cd ..
catkin_make
source devel/setup.bash
This package includes launch and rviz configuration files for visualising the rover.
To view the rover in rviz and manually control the joints, execute the following command:
roslaunch rover rover.launch
This package provides essential launch needed for the visualization of the rover within a simulation environment.
To launch the simulation along with the capability to manually control the joints, use the command:
roslaunch rover empty_world.launch
To launch the simulation along with the capability to manually control the joints, use the command:
roslaunch rover controller.launch
Keyboard controller
roslaunch rover rover_teleop_keyboard.launch
To execute this package, first clone the repository using the following command:
git clone https://github.com/methylDragon/teleop_twist_keyboard_cpp.git
xbox controller
roslaunch rover rover_teleop_xbox.launch
places the rover in a Moon terrain model sourced from https://github.com/MobileRobots/amr-ros-config/tree/master/gazebo
export GAZEBO_MODEL_PATH=:${your_workspace_dir}/src/rover_gazebo/worlds
roslaunch rover rover_moon.launch
- When you run the Gazebo and control launch files, you may encounter a message stating
No p gain specified for pid
. This message can safely be ignored. The reason is that the*_wheel_joint_*
entities are intended to function as servos. - The control does not have specified linear and angular velocities. Therefore, it's necessary to add the maximum and minimum values for
cmd_vel
in themotor_controller.cpp
. - There are two types of odometry topics available:
gt_odometry
, which is based on ground truth data, and another that derives from the position of thewheel_joint
.
- The joint type for rocker_bogie 1&2 has been set to 'revolute' to provide degrees of freedom. However, doing so results in the actual tf relationship not being connected between the box and rocker_bogie2. It's necessary to give freedom to the bogie while not affecting the tf relationship.