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
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
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