Running an OpenMower simulation
Introduction
You can test the OpenMower software stack yourself by running a simulation where you can record a map and then have it mowed.
It's a bit rough around the edges, but it's a good way to see the software in action without hardware.
This mini-HOWTO is meant to save you a bit of detective work and get you started, not to be a comprehensive guide to the simulation.
Prerequisites
You need the OpenMower software on a platform that has a graphical interface for rviz to be able to run and show the map. Ubuntu 20 is a good choice, possibly on VM, VirtualBox is an excellent choice, if you do not already have a running Ubuntu 20 desktop environment.
- Install ROS on Ubuntu: http://wiki.ros.org/noetic/Installation/Ubuntu - use the full install
- Note: make sure that you have ROS environment set up in your terminal by
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
and log out and back in.
- Note: make sure that you have ROS environment set up in your terminal by
- Install the OpenMower software: Use the instructions here: Setting up ROS on a Raspberry Pi (intended to be the Rover -- OpenMower)
- Make sure that you have had
catkin_make
succeed (may take a few tries, often 4 or more)
- Make sure that you have had
You need to have a game controller for controlling the simulated bot.
Making sure the OpenMower environment is sourced
Whenever you are doing anything in a terminal with OpenMower, you need to make sure that ROS knows your OpenMower workspace.
In every terminal that you use: source ~/OpenMower/ROS/devel/setup.sh
Running the simulation
Recording a map
Attach your joystick to a USB port. If you are on a VirtualBox, make sure that the USB port is mapped into your Ubuntu environment (see illustration).
Open a terminal and execute
roslaunch ~/OpenMower/ROS/src/open_mower_ros/open_mower/launch/sim_record_area.launch
This will launch rviz where you can see the Rover and the map.
Use your joystick to record a map and a base. On my gamepad, the btns are
- 1 - enable movement
- 2 - start path recording
- 4 - end path recording
- 3 - register base
Then exit rviz and the map will be recorded in ~/.ros/map.bag
If you want to record a new map, delete the old one, rm ~/.ros/map.bag
Running the simulation
roslaunch ~/OpenMower/ROS/src/open_mower_ros/open_mower/launch/sim_record_area.launch
This will launch rviz with the map and rqt_reconfigure where you can control various parameters of the simulation.
You will need to press manual_start_mowing
in rqt_reconfigure to start the simulation. You will probably need to zoom out, find your area and then zoom in again on that in rviz.
Diagnostics / debugging / issues
Joystick
Your joystick needs to be transmitting messages on the topic /joy. To test that it does:
- Run
roslaunch ~/OpenMower/ROS/src/open_mower_ros/open_mower/launch/sim_record_area.launch
- In a new terminal run
rostopic echo /joy
You should see messages from the joystick streaming on screen. Test that pressing buttons etc. is reflected in the messages.
If not:
- Check which joysticks your Ubuntu installation knows:
ls -l /dev/input/js*
- Try to add/adjust wichh joystick the recorder uses in sim_recorc_area.launch to use the correct joystick, see illustration.