Club-hanqingxie

From jderobot
Jump to: navigation, search

GSOC 2018: Robot Navigation Using Open Motion Planning Library[edit]

The main idea of this project is to introduce the OMPL (Open Motion Planning Library) into JdeRobot-Academy, in a new robot navigation exercise. For this task, the student will develop a new exercise and their solutions using different path planning algorithms of an autonomous wheeled robot or drone which moves along a known scenario in Gazebo.

People[edit]

  • Hanqing Xie (hywel1994cn@gmail.com)
  • Alberto Martin (almartinflorido@gmail.com}

Resource[edit]

About OMPL[edit]

OMPL, the Open Motion Planning Library, consists of many state-of-the-art sampling-based motion planning algorithms. OMPL itself does not contain any code related to, e.g., collision checking or visualization. This is a deliberate design choice, so that OMPL is not tied to a particular collision checker or visualization front end. The library is designed so it can be easily integrated into systems that provide the additional needed components.

Difficulitis[edit]

This project includes three part: global navigation, autopark and ardrone navigation. It aims to solved the navigation and complete the whole motion with ompl. It includes:

  • OMPL
    • RigidBodyPlanning
    • RigidBodyPlanningWithControls
    • RigidBodyPlanningWithODESolverAndControls
  • Generate gridmap
  • Path processing
    • Smooth
    • Check
  • Taxi and ardrone's control
    • PID

Development Status[edit]

S.No. Step Status Date Remarks
Phase 1: Global Navigation
1 Get familiar with jdrobot and academy, implement Global Navigation of a TeleTaxi with OMPL DONE May 26, 2018
Phase 2: Autopark
2 Code and test some ompl algorithm DONE Jun 02, 2018
3 Aim to solve the last week's issue that the path is not smooth DONE Jun 09, 2018
4 Try some algorithm to control the taxi to following the path DONE Jun 16, 2018
5 Learn a slam algorithom gmapping DONE Jun 23, 2018
6 Learn from a slam algorithom gmapping to build a map DONE Jul 1, 2018
7 Code a class to build occupied map with laser data. DONE Jul 8, 2018
8-9 Implement OMPL autopark exercise DONE Jul 22, 2018
Phase 3: Ardrone Navigation
10 Build a new gazebo world for ArDrone navigation DONE Jul 29, 2018
11 Implement navigation of ardrone with OMPL and update the readme DONE Aug 5, 2018
12 Improve navigation of ardrone with OMPL and ardrone can follow a list of point now DONE Aug 12, 2018

Weekly Development Notes[edit]

Week1 : 20 May - 26 May , 2018[edit]

  • learn: Get familiar with jdrobot and academy, especially autonomous car and drone
    • Solve some jdrobot academy's exercises such as position control, local navigation with vff and global navigation with gpp
  • learn: Learning the Open Motion Planning Library
    • Read a few tutorials on its official website
    • The main problem is its incomplete tutorials and few documents, so I need read learn for its python and c++ demo with ompl api documentation
  • progress: Implement Global Navigation of a TeleTaxi with OMPL,its algorithm is a 2D point planning with a PPM image

Week2 : 27 May - 02 Jun , 2018[edit]

  • experiment: Expectation to implement autoparking of a Holo Taxi with ompl
    • Code and test ompl point 2D Planning algorithm in autopark
    • Code and test ompl optimal planning algorithm in autopark
    • Code and test ompl rigid body planning algorithm in autopark
    • Code and test ompl rigid body planning with control algorithm in autopark
    • Try rrt est kpiecei syclop and sycloprrt planner with above four algorithm
    • The main problem is that the path generated by OMPL is not smooth so that the taxi cannot complete autoparking.
  • progress: using rigid body planning with control algorithm, next week I want to find a way to smooth the ompl path.

Week3 : 03 Jun - 09 Jun , 2018[edit]

  • experiment: Aim to solve the last week's issue that the path is not smooth
    • Code and test floyd algorithm
    • Code and test cubic spline interpolation algorithm
    • Add pid control to control the taxi
    • Autopark exercise successfully runs with known environment
  • progress: Modify code structure, put there only the file or files with the solution in a directory

Week4 : 10 Jun - 16 Jun , 2018[edit]

  • discussion: How to implement autopark with laser data.
    • Implement navigation process
    • Create a global and local map by gmapping slam with laser data
    • Use ompl to generate a path, and update path at a certain frequency
    • Control the taxi to following the path
  • learn: Learn ros navigation
    • Learn and analyze its framework
    • Focus on learning how to design a cost map
  • experiment: Try some algorithm to control the taxi to following the path
    • Test pid control. The result is not satisfied.
    • Test Open loop control, import control sign and control duration from ompl algorihm, but failed, I think the reason is mathematical model in ompl is different from taxi in gazebo

Week5 : 17 Jun - 23 Jun , 2018[edit]

  • learn: Learn a slam algorithom gmapping
    • Learn and analyze its framework
    • Focus on learning how to build a map
  • discussion: Whether using slam in this project
    • Not use SLAM
    • Autopark exercise is not an auto-localization problem
    • First approach: set two fixed global coordinates, the first one is the place where the car starts and the second one is the place to park the car. With two coordinates you can make a path to park the car
    • Second approach: infer the second coordinate (the place to park the car) from laser data using relatives coordinates ((0,0) for the car origin position)
    • Third approach: infer the second global coordinate (the place to park the car) from laser data using global coordinates, and find a algorithm to draw a global map
  • progress: Create a navigation package include control map ompl_planer path_smooth
    • Add a cost map class, using a bresenham algorithm to draw line (issue #6)
    • Implement a ompl planner by rigidBodyPlanning, rigidBodyPlanningWithControls and rigidBodyPlanningWithODESolverAndControls and modify ompl_planer's structure (issue #3)

Week6 : 24 Jun - 1 Jul , 2018[edit]

  • discussion: Learn from a slam algorithom gmapping to build a map
    • review gmapping's code and it's slam framework, maybe not use the first few steps, but the final steps about occupancy grid map can be used to build map.
      • GridSlamProcessor::processScan -> GridSlamProcessor::scanMatch -> ScanMatcher::score -> GridSlamProcessor::resample -> ScanMatcher::computeActiveArea -> ScanMatcher::registerScan
      • In map, we use P(s=1) to show the probability that it is in the Free state, use P(s=0) to show the probability that it is in the Occupied state. So, we can use Odd(s)=P(s=1)/P(s=1) to show its state. When sensor update data z~(0,1), we nee update its state Odd(s|z) = P(s=1|z)/p(s=0|z).And logOdd(s|z) = log(P(z|s=1)/P(z|s=0)) + logOdd(s).

Week7 : 2 Jul - 8 Jul , 2018[edit]

  • progress: code a class to build occupied map with laser data.
  • problem: the occupied map is a bit fuzzy, can not fully reflect the real environment. I guess the laser data and pose is not completed correspondence if not use slam.
  • discussion: Hope to implement a exercises: a car in a known or unknown scene, and we set a target pose in GUI and set the ompl, smooth, control method. If in a know scene, the car can follow a path to the target by ompl. If in a unknow scene, the scene can be generated by occupied map with laser when the car moves.
  • progress: Modify navigation code structure and complete the ompl navigation process with a known scene. I haven't implement gui and haven't implement the whole process with unknown scene.

Week8 9 : 9 Jul - 22 Jul , 2018[edit]

  • progress: Implement OMPL autopark exercise.
    • I add a laser handle package using laser data to find park position.And can dynamic update the costmap.
    • First the taxi drives forward and find the park position in the taxi the right place. When the taxi find target, build a costmap and generate the path with RigidBodyPlanningWithControls according this costmap. Then use control package to implement path following.

Week10 : 23 Jul - 29 Jul , 2018[edit]

  • progress: build a new gazebo world for ArDrone navigation
    • build a house model

  • extra: JdeRobot pull requests 'merge two small mistakes about cmakelist and a python file #1259'

Week11 : 30 Jul - 5 aug , 2018[edit]

  • progress: implement navigation of ardrone with OMPL and update the readme
    • OMPL Navigation in 3 dimension

    • OMPL Planner of Ardrone in House

    • Ardrone Path Following in House

    • Navigation of Ardrone with OMPL(1)

    • Navigation of Ardrone with OMPL(2)

Week12 : 6 aug - 12 aug , 2018[edit]

  • progress: improve navigation of ardrone with OMPL and ardrone can follow a list of point now.
    • Navigation of Ardrone with OMPL(3)
  point list: [[7.5,7.5,1],[-5,-7.5,1],[-7.5,-7.5,5],[-7.5,7.5,5],[7.5,-7.5,5]]

    • Navigation of Ardrone with OMPL(4)
  point list: [[7.5, 0 ,6], [7.5,7.5,2],[-7.5, 7.5, 2],[-7.5,7.5,6]]

  • pull requests:
    • [gsoc2018]implement taxi global navigation with ompl
  https://github.com/JdeRobot/Academy/pull/255
    • [gsoc2018]implement taxi autopark with ompl
  https://github.com/JdeRobot/Academy/pull/256
    • [gsoc2018]implement ardrone navigation with ompl
  https://github.com/JdeRobot/Academy/pull/257