Advanced usage

This section highlights some non-standard scenarios that might occur when environments change, for example when new furniture is introduced or the robot is brought to a new place.

Stop defaults

Among others, navigation and arm control (MoveIt) are both started automatically on the robot, see Starting up. In some advanced use cases, these processes might interfere with what you need the robot to do and you may have to log into the robot and stop these processes.

Warning

Please mind that this also stops other processes like the Remote control demonstrations. Only follow these instructions if you know what you are doing!

$ ssh fetch42
$ screen -r

Press Ctrl+C to abort the running process (roslaunch uh_fetch bringup.launch). If you change your mind, press Ctrl+A,D to detach the screen session.

Modify defaults

Warning

This section assumes that the default processes on the robot have been stopped, that the terminal’s Environment configuration is set to fetch, and that ROS IP is configured correctly.

If you need the control components to run with a different configuration, you can start them individually or with different parameters, for example, on a local computer. The bringup.launch launch configuration supports arguments such as env that can be set to configure non-default locations other than the default robothouse2, for example e125, or forum. Besides the plain map, environments also set common navigation goals that can be used in interactive scenarios. For a complete list of environments and maps, please have a look at the Robot House ROS packages.

$ roslaunch uh_fetch bringup.launch env:=<environment>

If you only need navigation use the following command to start it individually. Besides the env paramter, it also supports a map parameter that can be used to specify any other map:

$ roslaunch uh_fetch navigation.launch env:=<environment> map:=<map>

For example, if you have brought the robot to the lab in E125 and want to use a custom map mymap that you have recorded last-minute (see below), type in the following:

$ roslaunch uh_fetch navigation.launch env:=e125 map:=./mymap.yaml

To only start a component for controlling the arm, please use Fetch’s built-in MoveIt configuration:

$ roslaunch fetch_moveit_config move_group.launch

Record a new map

Warning

This section assumes that the default processes on the robot have been stopped, that the terminal’s Environment configuration is set to fetch, and that ROS IP is configured correctly.

If you need to record a map of the environment you can use the following instructions. Firstly, start a local navigation component to build up a map. If you don’t have RViz running, start it to inspect the results.

Note

The map’s origin will be at the robot’s current position.

$ roslaunch fetch_navigation build_map.launch
$ roslaunch uh_fetch rviz.launch

Carefully drive the robot around using the Remote control control until you are satisfied with the result. Do not move the robot too quickly or rotate it unnecessarily to achieve a better map quality. The map_saver module can be used to store the map as two files that belong together: an image and a metadata description file.

$ rosrun map_server map_saver -f <map_directory/map_name>

For example, type in the following to generate the files mymap.yaml and mymap.png in the current directory:

$ rosrun map_server map_saver -f ./mymap

Simulation

  1. Setup your terminal’s Environment configuration to use the fetch software but not relying on the robot for ROS but instead on the local computer:

$ robot_env -l fetch
  1. Start the robot simulation:

Todo

Give more elaborate information on these examples, in the future the simulation section might become a dedicated page.

$ roslaunch fetch_gazebo_demo demo.launch
$ roslaunch fetch_gazebo playground.launch
$ roslaunch fetch_moveit_config demo.launch