Posts
Pattern Matching on 2D Lidar Data
Sometimes we need to interact with a specific object in a specific way. To do this, we need to find it first!
In this post, i will introduce a simple but effective Pattern Matching technique. This technique uses 2D Lidar Data and tries to find a pattern inside of it. You can use it to find chargers, docking stations, pallets etc.
To process lidar data, i used Point Cloud Library (PCL). PCL is a flexible, strong and time tested point cloud processing library. It already has required capabilities for Pattern Matching. Therefore, we don’t have to re-invent wheel.
The algoritm is as follows:
- Extract clusters. Divide main point cloud into smaller ones. After this step, you will have small point clouds that clustered based on distance. You can see end result below. Each cluster was given a different color.
- Extract clusters. Divide main point cloud into smaller ones. After this step, you will have small point clouds that clustered based on distance. You can see end result below. Each cluster was given a different color.
ROS Navigation REST API
While building autonomous vehicles, we tend to focus heavily on autonomy and forget that these robot are being developed for commercial purposes. Eventually, someone who does not have any robotics background will need to control these robots. And unlike us, they will not have the luxury of Rviz and ROS command line tools.
We need an interface that will let customers communicate to robots and this interface should be:
- Fast. Communication should be fast enough that end users can operate easily.
- Secure. Only authorized users should be able to give commands to robots.
- Flexible. Same interface should be able to be used for different customers and needs.
- Scalable. Interface should be (almost) independent of fleet size.
Cartographer GRPC
Cartographer has built in cloud capabilities but it is not well documented. In this post, i will give a basic server and client example.
To use Cartographer, Cloud you need
cartographer_grpc_node
. This node is not available with default compile settings. You can check by double tabbing afterrosrun cartographer_ros
.Before recompile, you need to install GRPC dependencies. Assuming you already installed basic dependencies, you can use following scripts provided by cartographer:
~/catkin_ws/src/cartographer/scripts/install_grpc.sh ~/catkin_ws/src/cartographer/scripts/install_async_grpc.sh