Starting with ROS on the Simulation =================================== Welcome to the ROS simulation package. The easiest way to test our robots is through the ROS simulation. We have the simulation packages for all the robots primed and ready for testing. .. figure:: ros1_welcome.jpg Sourcing, Configuration and Launch ---------------------------------- Sourcing the Workspace ********************** :: echo "source your_catkin_workspace/devel/setup.bash" >> ~/.bashrc Sourcing the Gazebo Models ************************** :: echo "export GAZEBO_MODEL_PATH=~/(Path to your workspace)/src/neo_simulation/models:$GAZEBO_MODEL_PATH" >> ~/.bashrc Add locale path into .bashrc **************************** :: echo "export LC_NUMERIC="en_US.UTF-8" " >> ~/.bashrc Additional step to melodic ************************** To avoid "Error [REST.cc:205] during startup gazebo" while starting ros-gazebo, do the following steps: 1. Open a terminal, go to the following directory :: cd ~/.ignition/fuel 2. Using gedit (or any text editor of your prefernce) open the config.yaml file 3. Change :: url: https://api.ignitionfuel.org To :: url: https://api.ignitionrobotics.org Configuration ************* Available Parameters #################### You can read about the details of the robot in our `official website `_ +----------+------------------------------------------------------------+ | MY_ROBOT | mpo_700, mpo_500, mp_400, mp_500, mmo_700, mmo_500, mm_400 | +----------+------------------------------------------------------------+ .. note:: At the moment for the mobile manipulators, we support Universal robots and Frank-Emika arm. On demand, we are open to add other arms. Please use the `github feature or issue tracker to add your request `_ Please go down to see the available worlds. +----------+------------------------------------------------------+ | MAP_NAME | neo_track1.world neo_track2.world neo_workshop.world | +----------+------------------------------------------------------+ Open simulation.launch :: roscd neo_simulation gedit simulation.launch Change Parameter to your needs :: If you change the world, then you also have to change your exported MAP_NAME like as follows: :: export MAP_NAME=neo_track1 If you wish to change the default robot arm for the mobile manipulator or the laser scanners, follow the steps shown under :ref:`customizing robot model `. Once the robot model has been customized, the controller for the arm needs to be added into the launch. For example, you want to simulate mmo-700 with franka-emika panda arm, but as a default UR10 arm loads. Now in order to replace it, navigate to ``your_workspace/src/neo_simulation/launch/mmo_700`` and open ``mmo_700_simulation_basic.launch``. Now, replace the line that loads the UR10 controller: :: with the frank panda arm controller: :: Launch ****** Launching the simulation is fairly easy. Just use the simulation.launch file that we configured in the chapter above. :: roslaunch neo_simulation simulation.launch After the launch is completed, the simulation is ready to use. Robot can be moved using the keyboard as shown in the Image below: .. figure:: neo_teleop.png Video Demo ********** .. raw:: html Worlds ------ neo_track1 ********** A simple world used to test simple maneuvers. Also this world, allows you to start building and testing your application by spawning the various readily available simulated industrial machineries from gazebo models. .. figure:: world1.png neo_track2 ********** A race track shaped world mainly designed to test the robots for complex maneuvers. .. figure:: world2.png neo_workshop ************ Experience the testing area situated in our campus through this world. .. figure:: world3.png Spawn Moving Obstacles ---------------------- In order to test our robot in the simulation environment, you can use the tailor-made dynamic obstacle scripts for the purpose of testing. Below you can find the link to our dynamic obstacle scripts. You can modify the script and use it to your needs accordingly for the purpose of testing. To know the available obstacle scripts, navigate to neo_simulation -> scripts Depending on the world that you use, you can spawn the obstacles. For example, to spawn obstacles on neo_track1, you need to do the following: :: rosrun neo_simulation spawn_obstacles_track1.py Video Demo ********** .. raw:: html Control robot arm with Moveit ----------------------------- Installation ************ For Noetic: :: sudo apt-get install ros-noetic-moveit For Melodic: :: sudo apt-get install ros-melodic-moveit Running moveit in the simulation ******************************** * In the simulation.launch change the robot to one of the mobile manipulators as seen in the earlier tutorials * Launch the basic simulation :: roslaunch neo_simulation simulation.launch * We have move group packages for 3 of our mobile manipulators: MM_400, MMO_500 and MMO_700. :: cd your_workspace/src git clone your-robot-moveit-package cd .. catkin_make * Launch the custom made move group package of the robot which you want to use :: roslaunch your-robot-moveit-package move_group.launch * In rviz Add -> MotionPlanning plugin * In rviz, see to that OMPL appears in green color as shown in the image below. If not, there is a problem with the setup. .. figure:: neo_ompl.png * In the motion planning GUI of the rviz, navigate to the planning tab. * Below we can see the image of the motion planning GUI. .. figure:: motion_planning.png * In the planning tab, under query -> Select Goal State, select and update the goal by pressing the update. Now you can see the position to which the robot will be moving as shown below. .. figure:: update_pose.png * Then press Plan and Execute to see the robot move to the updated goal position. * You can also move to the robot to the desired position by dragging the interactive marker as shown in the image below .. figure:: interact_marker.png Application Demo **************** .. raw:: html