Giter Club home page Giter Club logo

rb1_base_sim's Introduction

rb1_base_sim

Packages for the simulation of the RB-1 Base

Packages

rb1_base_gazebo

This package contains the configuration files and worlds to launch the Gazebo environment along with the simulated robot.

rb1_base_sim_bringup

Launch files that launch the complete simulation of the robot/s.

Simulating RB-1 Base

1) Install the following dependencies:

This simulation has been tested using Gazebo 9 version. To facilitate the installation you can use the vcstool:

sudo apt-get install -y python3-vcstool

2) Create a workspace and clone the repository:

mkdir catkin_ws
cd catkin_ws
vcs import --input \
  https://raw.githubusercontent.com/RobotnikAutomation/rb1_base_sim/melodic-devel/repos/rb1_base_sim.repos
rosdep install --from-paths src --ignore-src -y

3) Compile:

catkin build
source devel/setup.bash

4) Launch RB-1 Base simulation (1 robot by default, up to 3 robots):

  • RB-1 Base:
roslaunch rb1_base_sim_bringup rb1_base_complete.launch

Optional general arguments:

<arg name="launch_rviz" default="true"/>
<arg
  name="gazebo_world"
  default="$(find rb1_base_gazebo)/worlds/rb1_base_office.world"
/>

Optional robot arguments:

<!--arguments for each robot (example for robot A)-->
<arg name="id_robot_a" default="robot"/>
<arg name="launch_robot_a" default="true"/>
<arg name="has_elevator_robot_a" default="true"/>
<arg name="x_init_pose_robot_a" default="0.0" />
<arg name="y_init_pose_robot_a" default="0.0" />
<arg name="z_init_pose_robot_a" default="0.0" />
<arg name="init_yaw_robot_a" default="0.0" />
<arg name="gmapping_robot_a" default="false"/>
<arg name="amcl_and_mapserver_robot_a" default="true"/>
<arg name="map_frame_robot_a" default="$(arg id_robot_a)_map"/>
<arg
  name="map_file_robot_a"
  default="$(find rb1_base_localization)/maps/willow_garage/willow_garage.yaml"
/>
<arg name="move_base_robot_a" default="true"/>
<arg name="pad_robot_a" default="true"/>
  • Example to launch simulation with 3 RB-1 Base robots:
roslaunch rb1_base_sim_bringup rb1_base_complete.launch \
  launch_robot_a:=true \
  launch_robot_b:=true \
  launch_robot_c:=true
  • Example to launch simulation with 1 RB-1 Base robot with navigation and localization:
roslaunch rb1_base_sim_bringup rb1_base_complete.launch \
  launch_robot_a:=true \
  move_base_robot_a:=true \
  amcl_and_mapserver_robot_a:=true
  • Example to launch simulation with 2 RB-1 Base robot with navigation and localization sharing the same global frame:
roslaunch rb1_base_sim_bringup rb1_base_complete.launch \
  launch_robot_a:=true \
  amcl_and_mapserver_robot_a:=true \
  move_base_robot_a:=true \
  map_frame_a:=/map \
  launch_robot_b:=true \
  amcl_and_mapserver_robot_b:=true \
  move_base_robot_b:=true \
  map_frame_b:=/map
  • Example to launch simulation with 3 RB-1 Base robot with navigation and localization sharing the same global frame:
roslaunch rb1_base_sim_bringup rb1_base_complete.launch \
  launch_robot_a:=true \
  amcl_and_mapserver_robot_a:=true \
  move_base_robot_a:=true \
  map_frame_a:=/map \
  launch_robot_b:=true \
  amcl_and_mapserver_robot_b:=true \
  move_base_robot_b:=true \
  map_frame_b:=/map \
  launch_robot_c:=true \
  amcl_and_mapserver_robot_c:=true \
  move_base_robot_c:=true \
  map_frame_c:=/map

Comands and data retreving

Enjoy! You can use the topic ${id_robot}/robotnik_base_control/cmd_vel to control the RB-1 Base robot:

rostopic pub /robot/robotnik_base_control/cmd_vel geometry_msgs/Twist "linear:
  x: 0.1
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0" -r 10

or if you have launched move_base, you can send simple goals using /${id_robot}/move_base_simple/goal:

rostopic pub /robot/move_base_simple/goal geometry_msgs/PoseStamped "header:
  seq: 0
  stamp:
    secs: 0
    nsecs: 0
  frame_id: 'robot_map'
pose:
  position:
    x: 3.0
    y: 0.0
    z: 0.0
  orientation:
    x: 0.0
    y: 0.0
    z: 0.0
    w: 1.0" 

Docker usage

In order to run this simulation you will need nvidia graphical accelation

Installation of required files

Usage

git clone https://github.com/RobotnikAutomation/rb1_base_sim.git
cd rb1_base_sim
git checkout melodic-devel
export ROS_BU_PKG="rb1_base_sim_bringup"
export ROS_BU_LAUNCH="rb1_base_complete.launch"
cd docker
docker compose up

Docker permission fix

In order to run this simulation it's mandatory to the current linux user to have full docker permission. If the script fails due to that, please execute the following command:

sudo usermod -aG docker $USER
newgrp docker

Selecting the robot model

You can select the robot, the launch file of package using the optional arguments on launch By default the selected robot is rb1_base

docker/simulation-in-container-run.sh --help
ROBOTNIK AUTOMATION S.L.L. 2021

Simulation of RB1 BASE using docker

Usage:
docker/simulation-in-container-run.sh [OPTIONS]

Optional arguments:
 --robot -r ROBOT       Select robot to simulate
                        Valid robots:
                            multirobot_2 multirobot_3 rb1_base
                        default: rb1_base

 --launch -l            Select launch file
                        default: rb1_base_complete.launch \
                                 launch_robot_a:=true \
                                 move_base_robot_a:=true \
                                 amcl_and_mapserver_robot_a:=true

 --package -p           Select ros package
                        default: rb1_base_sim_bringup

 --ros-port -u PORT     Host ros port
                        default: 11345

 --gazebo-port -g PORT  Host ros port
                        default: 11345

 -h, --help             Shows this help

2 robots simulation

docker/simulation-in-container-run.sh --robot multirobot_2

3 robots simulation

docker/simulation-in-container-run.sh --robot multirobot_3

Manual Build

If you wish to build manually the image without the use of the script use one the following commands:

Optiona A

cd docker
docker build -f Dockerfile ..

Option B

docker build -f docker/Dockerfile .

Notes

  • This is docker requires a graphical interface
  • The ros master uri is accesible outside the container, so in the host any ros command should work
  • You could also run a roscore previous to launch the simulation in order to have some processes on the host running
  • if you want to enter on the container use the following command in another terminal
docker container exec -it docker-base-1_sim_instance bash
  • In order to exit you have to 2 options
  1. Close gazebo and rviz and wait a bit
  2. execute in another terminal:
docker container rm --force rb1_base_sim_instance

rb1_base_sim's People

Contributors

asoriano1 avatar ggari-robotnik avatar romanrobotnik avatar aliquestomas avatar alvarovillena avatar rguzman1 avatar alex-arnal avatar joserobotnik avatar ndiazrey avatar marbosjo avatar martamillet avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.