TypingCat / spatial-topology-teleoperation

Teleoperation for Mobile Robot using Semantics
GNU General Public License v3.0
4 stars 0 forks source link
mobilerobots ros2-dashing teleoperation topology

Waffle

ROS2 package that develops wheeled mobile robot for semantic teleoperation

The main purpose of this package is to service semantic commands such as 'turn left' and 'go to table'. The topology that extracted at 5Hz will make it possible. This topology basically represents the spatial structure and is ready to add things of interest. The robot can use it to guide teleoperation user or make decisions.

The following is a simple demo video: This robot is moving from the hallway to the room. Black is the movable area detected by the LiDAR. Spatial structure is represented by graph. Yellow nodes are intersections, and red nodes are ends. The edges represent movability.

extract_topology

Algorithms

Local Topology Extraction

Mobile robots should be able to explore the environment itself. This algorithm helps the robot to recognize the spatial structure of the environment. It receives observations and returns a graph. This graph is already a topology that shows movability, but the information quality can be further improved by adding things of interest.

Topology Merge

Mobile robots should be able to remember the environment. Information will be volatilized without the process of connecting local topologies. However, the spatial structure is difficult to estimate because it has coordinates even though there is no substance. As a result of the test #7, intersection clustering approach was adopted. This approach detects probabilistically significant intersections.

Intersection Clustering

One of the important features of the spatial structure is the intersection. This package can recognize intersections as 10Hz. It can be a criterion for the robot to determine semantic direction. For a robot with an intersection in front of it, the right is the edge vector that extends to the right from the intersection.

Simple Usage

  1. Wake up waffle
    ros2 launch waffle wakeup.launch.py
  2. Start teleoperation
    ros2 launch waffle play.launch.py
    ros2 run teleop_twist_keyboard teleop_twist_keyboard
    ros2 run waffle_topology generate_topology

Setup

This package is being developed with modified Turtlebot3. See issue #8 for details.

hardware

git clone https://github.com/TypingCat/waffle.git
cd waffle
colcon build --symlink-install
source install/local_setup.bash