Hello everyone, for the purpose of transferring experience, as well as in order to structure and consolidate the entire amount of information that had to be shoveled, I am writing this article. I do not set myself the goal of presenting a manual for creating our solution ( since the source code is already completely open). I mean that the main interest is to outline the basic principles of building such systems, to outline the sources used, to tell about what we gave up and what we came to. I will try to keep a balance between the amount of information and readability.
If you do not know what ROS is, I advise you to study the resource Voltbto.com , for example, here is an article on working with services in ROS .
At the end of March 2020, Starline held a hackathon for the second time in its history .

Compared to the previous hackathon ( youtube ), held in October 2018, this time the level of organization has greatly increased: there were clear regulations, an assessment system, equal conditions for all participants and a complex qualification assignment - the way it should be.
This time, the organizers set a high bar in terms of the complexity of the competition: so much so that out of 25 applications submitted, only 5. To solve the qualifying task, it was necessary to set up the robot in the simulator gazebo to travel from one point to another. More on this here .
: , . , ( ):
Starline Hackathon
COEX Hackathon
Autonet 18+
UpGreat + vc.ru
-1, -2
Pro ( )
[ ]
, [] .
. , , , . : , ( ).
@urpylka @goldarte ( , โ ).
Turtlebot E2 :
Kobuki
RGBD- Orbbec Astra
Rplidar A2
Intel NUC [BOXNUC7I7BNH]
Logitech HD Pro C920
, , . , , .
4 , , .
(7x7 ): , . , - , . .

( ):
โโ
โ โ
, .
( ) . ฬ .
:
โโ
, ROS
, . TurtleBot3 robotis.com, autorace: turtlebot3autorace, https://github.com/ROBOTIS-GIT/turtlebot3autorace2020. :
( : , );
;
-.
State Machine
: - : GOTO_0, GOTO_1. 0 1 .
, 0, , ; , 0, , , , . , , , .
( ) . , .
GOTO_0, GOTO_1 - , โโ. , .
INIT IDLE. INIT , IDLE. IDLE GOTO_0 GOTO_1. state-machine , - Karn Saheb. StateMachine S ObjectStorage. setattr(Class, Attr, Value) Class.Attr = Value.
, lane-detection:
github/awesome-lane-detection
github lane-detection
hackster.io curved-lane-detection
birdview dynamic_reconfigure.
color-segmentation. dheera/ros-semantic-segmentation. .
.
, , , - . . .
. gmapping . , .
- . , , R1 , , R2.
, . ROS find_object_2d: , /objects objectsStamped. , , , opencv. detect_objects_node.py. CarND-Capstone .
find_object_2d. ORB . . :

, /objects, .
detected_stop, , .
dynamic_reconfigure, ( ) rqt. :
. find_object_2d . . - , ( ). - . .
: HSV, , ( Hough Circles) . - , .
- , , ( ). , , , , .
, Astra . Logitech HD Pro C920 - โ . - .
Navigation Stack
ROS Navigation Stack ( PhD PaulโEdouard Sarlin) .
Map prior:
Kinect: ,
Odometry:
Map updater:
Global planner: ,
Local planner:
- navigation, move_base( ) : . โ , , , . . , , .
Navigation Stack . ROS Navigation Stack.
robot_navigation, .
amcl. , , .
teb_local_planner (github), TU Dortmund University. c :
https://github.com/rst-tu-dortmund/teblocalplannertutorials
http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide#TheLocalPlanner
http://wiki.ros.org/teblocalplanner/Tutorials
- , , .
:
obstacle_layerโ ( Obstacle inflation in costmap2d)inflation_layerโstatic_layerโ
:
costmap_2d::StaticLayerโ ,costmap_2d::ObstacleLayerโLaserScanPointCloudcostmap_2d::InflationLayerโcostmapcostmap_2d::VoxelLayerโ 3D
, . costmap_2d::StaticLayer, , costmap .
costmap_2d . (1, 2, 3), (staticmap, obstacles), flat layered.
Sr4l/virtualobstacles, Costmap Plugin costmap_2d::MovingObjects. , Lars Kistner , . - . .
.
() Maps Merger.
:
/maps/map_amclโ ,gmapping( )/maps/map_mbโ/maps/map_amcl+ ( )/maps/crossroadsโ/maps/start_wallโ/maps/map_merged-/maps/map_mb,/maps/crossroads,/maps/start_wall( )
map_servernavigation.
:
rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped '{header: {stamp: now, frame_id: "map"}, pose: {position: {x: 0.674, y: 0.119, z: 0.0}, orientation: {w: 1.0}}}'
# PS ( ) . ( ) velocity_smoother, .
costmap_2dPixhawkLayered Costmaps for Context-Sensitive Navigation David V. Lu, Dave Hershberger, and William D. Smart
Fast Gaussian Process Occupancy Maps. In 2018 15th International Conference on Control, Automation, Robotics and Vision (ICARCV) (pp. 1502โ1507). IEEE. Yuan, Y., Kuang, H. & Schwertfeger, S. ( gpmaps.py)
- ROS
geometry2. 1 2.occupancy_grid_utilsTU Dortmund University
costmap_convertercostmap. github, DBSCAN.costmap_2d, C++, GridMap ETHZ ASL, , ( grid_map).
TurtleBot . .
RGBD- ( ). , .
SLAM , , , .
, RGBD- .
. , , teb_local_planner . , . , , . 2 , . , , . - , , .
, , , .
. Starline, : , , , , .

- :
developer.starline.ru โ API Starline.
The RoboFinist portal , by the way, its main developer is only one person - Kirill Gorev. And on this portal you can find more photos from this wonderful event.
YouTube channel of Nikolay Dem . Kohl is a cool robotics engineer and interesting videos appear on his YouTube from time to time.
That's all, thank you very much for reading!