Simulating RIA

E100_sim is a gazebo simulator. It provides the mobile base robot “ria_e100” model with simulated sensors such as an IMU, a odometry sensor, and the rplidar, rgbd camra, Other sensor which can be mounted on the robot.

This package contains some controllers,like teleop in an indoor worlds, a joystick controller. Below we provide the instructions necessary for getting started with the navigation in the simulation world.

Note

Prerequisites : RIA E100 host PC setup is required before proceed this tutorial You can find the a aguide to install all prerequisites of this tutorial in this git hub repository.

Basic Usage

First, launch the simulation include only the model of the robot and inspect the topics in the simulator, by use the following:

roslaunch e100_sim gazebo.launch

Note

The first run of gazebo might take considerably long, as it will download some models from an online database.

Getting the robot to move

To let the robot move you need to send velocity command, There are currently a few ways to send commands to the robot, we will show them here. We will also show how you can control the robot with a joystick.

  • Send direct velocities commands

We will for now just send some constant command velocities to the robot by:

rostopic pub /cmd_vel geometry_msgs/Twist "linear: x: 1.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 0.0"
  • Teleop using keyboard

Now, we are goining to send the command to the robot via keypoard by typing the following:

roslaunch e100_sim keyboard.launch
  • Usage with a joystick
roslaunch e100_sim joy.launch

Navigation

Note

  1. To use navigation based on odometer keep “export USE_EKF=true” in bashrc file. Results with this will be good when robot is being operated in open environment but please note that E100 is meant to use for indoor. so try to choose your operating environment accordingly.
  2. To use navigation using laser based odometer keep “export USE_EKF=false” in bashrc file. Results with this will be quite good when robot is being operated in closed environment with asymmetric properties around.

Create a map using slam_gmapping

First launch the robot in the simulation world by:

roslaunch e100_sim gazebo.launch

Then, launch the teleop control via joystick by runing the following:

roslaunch e100_sim joy.launch

After that, we are going to build a map for our indoor environment using a simultaneous localization and mapping called gmapping slam:

roslaunch e100_navigation slam_gmapping.launch

Now, open rviz, start move the robot in the whole environment and visualize the map

../_images/sim2.png

After moving in the whole environment, the last step you have to save the map using the following:

rosrun map_server map_saver -f simulation_world
../_images/sim4.png

It is recommended to save the map in the path:

~/catkin_ws/src/ria_e100/e100_navigation/maps

After building the map, shut down the gmapping node using Ctrl+c, then replace the map name in the navigation lanuch file by the new one. And start the navigation by typing :

roslaunch e100_navigation navigation.launch
../_images/sim3.png

Gazebo Version It is recommended to install at least Gazebo v7.x for full functionlity, (which is installed by default with ROS Kinetic).