RicoJia / Omnid_Project

9 stars 3 forks source link

Omnid Simulator and Moveit! Packages

This is the main repository of an Omnid group simulator and its Moveit! motion planning pipeline. If you haven't done so, check out my blog post for some higher level implementation detals.

Hnet-image

There are 3 Delta robots and one object platform in this project. 1*c-ZS4OG450Jem4atBD1XIQ

The simulator includes:

Screenshot from 2020-12-11 18-48-34

The motion planning pipeline includes

Build the Package

The repo runs on Ubuntu Linux 20.04, ROS Noetic, rosdep, catkin_tools and several other prerequisites. As a universal way to setup the workspace,

  1. Create workspace

        mkdir -p omnid/src
        cd omnid/src
        git clone https://github.com/RicoJia/Omnid_Project.git
  2. Pull Dependencies

    • cd Omnid_Project Go to the project directory
    • Install VCS tool, see here
    • Use VCS tool to download all necessary packages. If VCS tool does not work, try git clone all pacakges in docker_setup/omnid_docs.repos manually.
         vcs import < docker_setup/omnid_docs.repos
    • cd ../.. go to the root of the package
  3. Build a docker container and start it(Please use this dockerfile as it contains the latest dependencies we need)

    • Build the image

          cp src/Omnid_Project/docker_setup/dockint .
          cp src/Omnid_Project/docker_setup/Dockerfile .
          ./dockint from omnid $(pwd)/src/Omnid_Project/docker_setup
    • Build a container. Thanks Dr.Matt Elwin for sharing his dockint tool!

      ./dockint start omnid $(pwd)
      ./dockint run omnid bash
  4. Build the package in the docker container

    • source /opt/ros/noetic/setup.bash this will setup some initial settings
    • catkin build build this package
    • source devel/setup.bash Source the workspace
    • source src/Omnid_Project/docker_setup/ros_settings.bash Source some correct ros settings that overwrite the previous ones
    • roslaunch omnid omnid.launch Launch the project
    • Have fun planning!
  5. Once done with the project

    • exit to exit the container
    • ./dockint stop omnid to stop the container

Basic Usage

On Rviz,

  1. Click and drag the marker embedded in the object platform to a desired pose
    • If we first start at unachievable poses, we can drag the marker anywhere we want until we reach the first achievable poses.
    • If we try to reach a valid pose to an unachievable pose, the marker will jump back to the closest valid pose
  2. Hit plan to see the plan
  3. Hit plan and execute to execute the plan
    • The simulator will return fail only if the action request from Moveit! is preempted.
      This is because Moveit! checks the proximity between the plan and the actual robot TF. Also it checks if the controller takes too long to execute a path. see move_group/trajectory_execution/execution_duration_monitoring

External Resources

  1. Notes for Developers
  2. Blog Post
  3. Video Demonstration Screenshot from 2020-12-13 14-03-54