Updates|TIER IV, Inc.

Integrating Autoware on small robot platforms

Written by TIER IV | 30-Oct-2025 01:00:00

Autoware is open-source software for autonomous driving that was originally designed for cars. However, not everyone has access to a full-sized autonomous vehicle for research, testing, or learning. As interest grows in trying Autoware in more accessible environments, developers are increasingly turning to small mobile robots as a low-cost way to begin experimenting with autonomous mobility.

 

To support these efforts, TIER IV has released a sample repository that demonstrates how to configure Autoware for a mobile robot, providing an accessible starting point for anyone looking to experiment with autonomous mobility.


This post introduces the repository – autoware.sample_mobile_robot – and includes specific configuration examples for the WHILL Mobile Robot Platform.


Configuration overview

 

For autonomous operation, we installed sensors and an onboard computer on the WHILL platform, which can be driven using external control signals. In this setup, we mounted a computer to run Autoware, a 3D LiDAR, a camera and an IMU. The diagram below shows how these sensors, the computer, and the base vehicle are connected. For more details, check the docs folder in the repository.

 


autoware.sample_mobile_robot repository overview

Structure

The autoware.sample_mobile_robot repository is a project that integrates Autoware with a small mobile robot. It’s a fork of the autowarefoundation/autoware repository and it serves as a meta-repository containing the autoware.repos file. Based on this repos file, we have prepared the autoware_launch package containing the launch file and parameter files for this small mobile robot, the vehicle interface connecting Autoware to the vehicle, and the repository for the onboard camera drivers. For details on these repositories, please refer to the README of autoware.sample_mobile_robot.


Comparing default configuration

Next, let’s look at the system configuration for the small mobile robot. By default, the setup follows the structure shown in Autoware’s node diagram. For this project, however, we’ve adjusted the configuration and created a diagram highlighting those changes. In the diagram, nodes and modules that are not active in this setup are grayed out to make the differences easier to see.

 

 

The configuration of the sensing component depends on the sensors installed on the robot. In this example, the setup includes one LiDAR and one camera. Because of that, features that rely on radar or GNSS are not used.


In the default configuration, data from multiple LiDARs is merged before being passed to other components such as perception. Since we’re only using a single LiDAR here, the point cloud data is sent directly to those components without being merged.

 


Next is the perception component. In this setup, we’ve disabled functions for traffic light recognition and features related to radar, as the robot isn’t equipped with one.

 


Finally, let’s look at the planning component. Many of its functions are designed for cars operating on public roads. Since a small mobile robot such as this is typically designed to run on sidewalks or indoors, only a limited subset of those functions is relevant. For this reason, many of the modules are disabled in our configuration.

 

Vehicle interface and manual driving

The packages ros2_whill and autoware_ros2_whill_adapter are used to connect Autoware to the WHILL platform. The diagram below shows how these components interface with Autoware. For more details, refer to the documentation in each repository.

 

 

Autoware also includes a package called autoware_joy_controller, which lets you manually operate the vehicle. Since small mobile robots don’t have a driver’s seat, this feature is useful when you need to move the robot outside its path while Autoware is running, or when collecting data. During autonomous operation, the controller can also be used to send start or emergency stop commands. In our setup, the controller is connected wirelessly via Bluetooth.

 

Key parameters

The sample_mobile_robot repository includes many modified parameters. Here we’ll highlight the ones that are especially important for running a small mobile robot with Autoware.

 

Most of the changes are in the planning component. Since the overall scale of the robot is much smaller than that of a car, certain values related to path planning for turns and overall speed planning need to be reduced.

 

Here are some of the key parameters we modified in the planning component.

 

autoware_launch/config/planning/scenario_planning/lane_driving/behavior_planning/behavior_path_planner/behavior_path_planner.param.yaml

 

refine_goal_search_radius_range: 1.0
input_path_interval: 0.1
output_path_interval: 0.1

 

We also made some adjustments to the map component in relation to the planning component. In this setup, the resolution of the centerline generated from the imported vector map – used for path following – is set to 1.0 [m].

 

autoware_launch/config/map/lanelet2_map_loader.param.yaml

 

center_line_resolution: 1.0

 

Next is the control component. The default MPC setting for the lateral_controller isn’t suitable for small mobile robots without steering mechanisms, so here we use pure_pursuit instead. You can select the lateral controller via an argument in the launch file, and we’ve also adjusted the pure_pursuit parameters for small mobile robots.

 

autoware_launch/launch/autoware.launch.xml

 

  <!-- Control -->
  <group if="$(var launch_control)">
    <include file="$(find-pkg-share autoware_launch)/launch/components/tier4_control_component.launch.xml">
      <arg name ="lateral_controller_mode" value="pure_pursuit"/>
      <arg name="enable_autonomous_emergency_braking" value="false"/>
    </include>
  </group>

 

There’s also an important parameter for differential two-wheel-drive robots. When this parameter is set to true, it enables a function that prevents the steering from turning sharply immediately after the vehicle starts moving. This function is intended to support situations such as starting in the middle of a turn or performing parking maneuvers. However, because differential two-wheel-drive robots do not have a steering mechanism, enabling this function may prevent the robot from starting in some cases. To avoid that, it should be disabled for robots without steering.

 

autoware_launch/config/control/trajectory_follower/longitudinal/pid.param.yaml

 

enable_keep_stopped_until_steer_convergence: false

 

Finally, let’s look at the localization component. Cars typically operate outdoors, but small mobile robots are just as likely to run indoors. Parameters for self-localization need to be adjusted based on the environment, but manually tweaking parameter files every time the environment changes is impractical. To make this easier, the repository includes two directories – indoor and outdoor – and the launch file has been modified so you can switch between them as needed.

 

autoware_launch/config/localization/ndt_scan_matcher

 

localization/ndt_scan_matcher/
├── indoor
│   ├── ndt_scan_matcher.param.yaml
│   └── pointcloud_preprocessor
│       ├── crop_box_filter_measurement_range.param.yaml
│       ├── random_downsample_filter.param.yaml
│       └── voxel_grid_filter.param.yaml
└── outdoor
    ├── ndt_scan_matcher.param.yaml
    └── pointcloud_preprocessor
        ├── crop_box_filter_measurement_range.param.yaml
        ├── random_downsample_filter.param.yaml
        └── voxel_grid_filter.param.yaml

 

autoware_launch/launch/autoware.launch

 

 <!-- Localization -->
  <group if="$(var launch_localization)">
    <include file="$(find-pkg-share autoware_launch)/launch/components/tier4_localization_component.launch.xml">
      <arg name="input_pointcloud" value="/sensing/lidar/top/pointcloud_before_sync"/>
      <arg name="environment" value="indoor"/>
    </include>
  </group> 

 

Setup

Even if you use the exact same hardware setup introduced in this post, simply building the sample_mobile_robot repository isn’t enough – you’ll also need to configure and calibrate the sensors. The autoware.sample_mobile_robot README includes links to Autoware documentation that cover sensor details, setup procedures, and calibration methods. Please refer to those resources when setting up your system.

 

Demonstration

We tested the robot autonomously on a sidewalk in a controlled, closed-off environment. This setup requires a pointcloud map and a vector map, which can be produced by following the Creating Maps section in the Autoware documentation.

 

The bag2lanelet tool is useful when creating vector maps for small mobile robots, as it lets you generate lanes based on trajectories recorded during manual operation. The approach to vector map creation is different for vehicles, which rely on lane markings along the road. Vector maps can be created and edited using the Vector Map Builder tool.

 

 

In the demo video, you can see the robot start moving, stop for an obstacle, and then resume once the obstacle is cleared.

 

 

We also tested object detection in a closed indoor environment. A mannequin and bicycle were placed in front of the robot, and they were detected as a pedestrian and cyclist. Note that the configuration of the small mobile robot introduced here uses a simple sensor setup, which may result in unstable object detection.

 

Wrap-up

This sample project is part of TIER IV’s ongoing effort to make Autoware more adaptable and easier to use across different types of vehicles — from passenger cars to small mobile robots.

 

By sharing practical examples like this, we hope to lower the barrier to entry for developers and accelerate experimentation and learning in autonomous robotics. The repository will be regularly updated to keep up with the latest versions of Autoware. We hope you find it useful for your own projects.

About the authors

 

Azumi Suzuki | System Integration

Since joining the company in April 2018, Azumi has worked on real-world integration and field testing of Autoware. He is currently involved in product development of small mobile robots.

 

Michinari Kawai | Business Unit

Michinari joined TIER IV in April 2018 and works on projects involving mobile robots, passenger vehicles, and mechatronics systems. Before joining TIER IV, he worked on the development of digital technology for construction machinery.

TIER IV is always on the lookout for passionate individuals to join our journey. If you share our vision of making autonomous driving accessible to all, get in touch.

 

We’re currently hiring for the following related positions:

 

Visit our careers page to view all job openings.

 

If you’re uncertain about which roles align best with your experience, or if the current job openings don’t quite match your preferences, register your interest here. We’ll get in touch if a role that matches your experience becomes available, and schedule an informal interview.

 

Inquiries

  • Media: pr@tier4.jp
  • Business: sales@tier4.jp

 

Social Media

X (Japan/Global) | LinkedIn | Facebook | Instagram | YouTube

 

More