Packages for the simulation of the RB-1 Base
This package contains the configuration files and worlds to launch the Gazebo environment along with the simulated robot.
Launch files that launch the complete simulation of the robot/s.
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
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
catkin build
source devel/setup.bash
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/demo.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/demo/demo.yaml"
/>
<arg name="move_base_robot_a" default="true"/>
<arg name="pad_robot_a" default="true"/>
roslaunch rb1_base_sim_bringup rb1_base_complete.launch \
launch_robot_a:=true \
launch_robot_b:=true \
launch_robot_c:=true
roslaunch rb1_base_sim_bringup rb1_base_complete.launch \
launch_robot_a:=true \
move_base_robot_a:=true \
amcl_and_mapserver_robot_a:=true
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
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
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"
In order to run this simulation you will need nvidia graphical accelation
git clone https://github.com/RobotnikAutomation/rb1_base_sim.git
cd rb1_base_sim
git checkout melodic-devel
cd docker
export ROS_BU_PKG="rb1_base_sim_bringup"
export ROS_BU_LAUNCH="rb1_base_complete.launch"
docker compose up
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
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
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 .
docker container exec -it docker-base-1 bash
gazebo
and rviz
and wait a bitdocker container rm --force rb1_base_sim_instance