Unbounded Robotics UBR-1 Simulation Preview
  • Preview Overview
    • Introduction
    • Warnings
  • UBR-1 Overview
    • Kinematics
    • UBR-1 Coordinate System
    • Sensors
    • Software
  • Simulating the UBR-1
    • Starting the Simulator
    • Connecting with RVIZ
    • Teleoperating the Simulated UBR-1
    • Differences and Limitations
  • Navigation with UBR-1
    • Building a Map
    • Configuring to Use Your Map
    • Running Navigation
    • Sending Commands in Python
    • Sending Commands in C++
    • Debugging Common Issues
  • Manipulation with UBR-1
    • Starting MoveIt! on the UBR-1
    • Using the MoveIt! RVIZ Plugin
    • Sending Commands in Python
    • Sending Commands in C++
    • Running the Pick and Place Demo
  • Perception with UBR-1
    • Using Camera Data
    • Basic Grasping Perception
  • UBR-1 Standard Interfaces
    • Arm and Torso Interfaces
    • Gripper Interface
    • Head Interfaces
    • Base Interface
  • Controllers API
    • point_head
    • base_controller
    • follow_joint_trajectory
  • License
 
Unbounded Robotics UBR-1 Simulation Preview

About Us
UBR-1
Blog

  • Docs »
  • Navigation with UBR-1
  • Edit on GitHub

Navigation with UBR-1¶

UBR-1 comes with higher level robot functions which can be used as building blocks when creating your robot application. One of these building blocks is the ROS navigation stack, which allows the robot to navigate from place to place within the environment.

There are several steps involved in navigating within your own environment. First, you will need to build a map of your environment. Once you have a map, you will want to create a launch file that starts navigation with your own map. Finally, when navigation is running, you must localize the robot before sending any navigation goals.

For more complete documentation of the individual components of the navigation stack, see the documentation on the ROS wiki.

Building a Map¶

If you are using a simulated UBR-1, you can skip building a map and configuring to use a map since you have access to a simulated world that includes a pre-made map.

TODO.

Configuring to Use Your Map¶

Now that you have save a map, you need to tell the navigation stack to use your map. The easiest way to do this is to create a new launch file for your environment:

<launch>
  <include file="$(find ubr1_navigation)/launch/navigate.launch">
    <arg name="map_file" value="insert_path_to_your_file" />
  </include>
</launch>

Running Navigation¶

If you created your own launch file in the section above, you want to run that now, if running in simulation, you should start the simulator with the home and environment and then start navigation:

>$ roslaunch ubr1_gazebo simulation_home.launch
>$ roslaunch ubr1_navigation navigate.launch

Once you have started the launch file you created for navigation, you need to localize the robot. The easiest way to do this is using RVIZ. Open RVIZ and select the .rviz file in the navigation stack. This will setup your RVIZ window so that the fixed frame is /map. Once you do this, you should see the map you configured earlier. However, you will not see any sensor data, and may see a number of errors in RVIZ. This is because there is no TF transformation available for getting your sensor data into the /map frame. This is where localization comes in.

Navigation uses a program called amcl, which is an implementation of the Adaptive Monte Carlo Localization algorithm (TODO: citation). This program will use laser and odometry data to track where the robot is, but it does a poor job of making an initial guess as to where the robot is. The easiest way to bootstrap the system is using RVIZ. Click Send 2D Pose and then click where you think the robot is, and laserscans and costmaps should start to appear in RVIZ, along with a robot model. If the robot is not in the right place, you can send another pose estimate, or possibly just teleop the robot around until amcl converges to a proper solution if your first estimate was close, but not quite right.

_images/navigation-rviz.png

Now that navigation is running, you can click Send 2D Goal and the robot will begin planning and then driving to the goal.

Sending Commands in Python¶

TODO

Sending Commands in C++¶

TODO: fill this in (see http://wiki.ros.org/navigation/Tutorials/SendingSimpleGoals for an example)

Debugging Common Issues¶

TODO

Next Previous

© Copyright 2014, Unbounded Robotics Inc..

Sphinx theme provided by Read the Docs