This repo contains a ROS driver and ROS configuration files (URDF description, Gazebo launch files, move_base config, bringup launch files, message and action descriptions) for the MiR 100 robot.
mir_actions
: Action definitions for the MiR robotmir_description
: URDF description of the MiR robotmir_driver
: A reverse ROS bridge for the MiR robotmir_gazebo
: Simulation specific launch and configuration files for the MiR robotmir_msgs
: Message definitions for the MiR robotmir_navigation
: move_base launch and configuration files
# install sbpl library from source
cd $(mktemp -d)
git clone -b master https://github.com/sbpl/sbpl.git
cd sbpl
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
sudo make install
# create a catkin workspace and clone all required ROS packages
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
git clone -b kinetic https://github.com/dfki-ric/mir_robot.git
git clone -b indigo-devel https://github.com/ricardo-samaniego/sbpl_lattice_planner.git
# use rosdep to install all dependencies (including ROS itself)
apt-get update -qq
apt-get install -qq -y python-rosdep
sudo rosdep init
rosdep update
rosdep install --from-paths ./ -i -y --rosdistro kinetic --skip-keys=sbpl
# build all packages in the catkin workspace
source /opt/ros/kinetic/setup.bash
catkin_init_workspace
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=RelWithDebugInfo
In case you encounter problems, please compare the commands above to the build
step in .travis.yml
; that should always have the most
recent list of commands.
You should add the following line to the end of your ~/.bashrc
, and then
close and reopen all terminals:
source ~/catkin_ws/devel/setup.bash
roslaunch mir_gazebo mir_maze_world.launch
rosservice call /gazebo/unpause_physics # or click the "start" button in the Gazebo GUI
roslaunch mir_gazebo fake_localization.launch delta_x:=-10.0 delta_y:=-10.0
roslaunch mir_navigation start_planner.launch \
map_file:=$(rospack find mir_gazebo)/maps/maze.yaml \
virtual_walls_map_file:=$(rospack find mir_gazebo)/maps/maze_virtual_walls.yaml \
local_planner:=eband
rviz -d $(rospack find mir_navigation)/rviz/navigation.rviz
Now, you can use the "2D Nav Goal" tool in RViz to set a navigation goal for move_base.
- switch on MiR base
- connect to MiR_R??? wifi (password "mirex4you"), for example from your Android phone/tablet
- disable other network connections (mobile data / LAN / etc.)
- open mir.com (192.168.12.20) in Chrome (!)
- log in (admin/mir4you)
The internal robot PC's is not synchronized (for example via NTP), so it tends
to get out of sync quickly (about 1 second per day!). This causes TF transforms
timing out etc. and can be seen using tf_monitor
(the "Max Delay" is about
3.3 seconds, but should be less than 0.1 seconds):
$ rosrun tf tf_monitor
Frames:
Frame: /back_laser_link published by unknown_publisher Average Delay: 3.22686 Max Delay: 3.34766
Frame: /base_footprint published by unknown_publisher Average Delay: 3.34273 Max Delay: 3.38062
Frame: /base_link published by unknown_publisher Average Delay: 3.22751 Max Delay: 3.34844
Frame: /front_laser_link published by unknown_publisher Average Delay: 3.22661 Max Delay: 3.34159
Frame: /imu_link published by unknown_publisher Average Delay: 3.22739 Max Delay: 3.34738
Frame: /odom_comb published by unknown_publisher Average Delay: 3.16493 Max Delay: 3.28667
[...]
All Broadcasters:
Node: unknown_publisher 418.344 Hz, Average Delay: 0.827575 Max Delay: 3.35237
Node: unknown_publisher(static) 465.362 Hz, Average Delay: 0 Max Delay: 0
To fix this:
- go to "Service" -> "Configuration" -> "System settings" -> "Time settings" -> "Set device time on robot"
Afterwards, the ROS software on the robot will restart, so you'll have to start move_base
again (see below).
- go to "Service" -> "Configuration" -> "Launch menu", start "Planner"; this starts
move_base
andamcl
on the robot
- go to "Manual", press yellow button (LEDs change from yellow to blue); now the robot can be teleoperated
If the robot's localization is lost:
- go to "Service" -> "Command view" -> "Set start position" and click + drag to current position of robot in the map
- click "Adjust"
roslaunch mir_driver mir.launch