GithubHelp home page GithubHelp logo

tahsinkose / hector-moveit Goto Github PK

View Code? Open in Web Editor NEW
58.0 6.0 12.0 5.79 MB

Hector Quadrotor with MoveIt! Motion Planning Framework

License: MIT License

CMake 0.84% C++ 97.96% C 0.88% Python 0.12% Shell 0.02% M 0.01% MATLAB 0.17%
motion-planning moveit octomap hector-quadrotor exploration object-detection tensorflow robotic-manipulation ros gazebo-simulator

hector-moveit's Introduction

Getting Started

This project depends on MoveIt! framework and Gazebo 9. In order to get all necessary packages, run the commands:

sudo apt-get install gazebo9 libgazebo9-dev ros-melodic-gazebo9*
rosdep install --from-paths src --ignore-src -r -y --rosdistro melodic

After that, the repository should be cloned with all its submodules:

git clone --recurse-submodules https://github.com/tahsinkose/hector-moveit.git

Since, Github does not support partial submoduling yet, the package hector_gazebo_termal_camera should be deleted after above command is executed.

In order to build the project execute catkin build. Since there are roughly 30 packages, build time may be around 5 minutes.
To run the project, launch consecutively:

roslaunch hector_moveit_gazebo orchyard_navigation.launch
roslaunch hector_moveit_exploration explore.launch

hector-moveit

Hector Quadrotor with MoveIt! Motion Planning Framework.

This project aims a generic application that can autonomously manipulate a quadcopter with the minimal human-operator intervention. In order to implement Motion Planning primitives, MoveIt! framework is being used. This work highly inspires from the references outlied below.

What is New?

The new thing is the usage of MoveIt! code API so as to implement a 3D autonomous navigation stack for a Quadcopter. Referenced projects and the several others not referenced directly but have similar context use only GUI. As known, despite being a moderately skilled one, MoveIt! GUI is there for just testing purposes. For those who seek industrial applications with a really complex architecture (e.g. several drones as swarms or teams, with image processing or machine learning modules), usage of code API is the inevitable task to consider. In that sense, this project possesses quite a big potential and aims to have a frontier role. Any who interested is greatly welcomed to contribute!

Simulation View

Garden ViewGarden View Garden ViewGarden View Garden ViewGarden View

Exploration v1

Orchard Exploration

Exploration v2

Exploration version 2 is explained in further detail in the Development log. In summary, missions that were postponed into this version are implemented except one particular mission. According to the log, orientation fixation and trajectory action is succesfully implemented. Only task delayed to version 3 is the grid approach. Also, a very simple metrics is devised to quantify the success of the stack itself. Initial statistics are outlined in this comment. They are very important and will provide the basis for enhancements on version 3.

Exploration v3

Orchard Exploration v3

In this version, the last proposed feature is implemented, i.e. there is a grid heuristics in which the drone does not navigate back into the cells that it previously visited. I have observed an inversely linear relation between the grid size and exploration percentage in 10 minutes. For example, for a 25x25 grid, the exploration rate was at most 32% whereas, in 15x15 case it boosted up to 37% degrees. In the final case, 13x13 grid allowed the drone to explore 40.7% of the volume in 10 minutes. With much more advanced heuristics, it is possible to increase this number.

Consequently, a new RViz panel for Exploration stack is developed in which the grid can be interactively inspected and the exploration rate can be observed. In future, there might be some user interface logic for particular areas to be investigated, but in the foreseeable future it is not on the To-Do list.

Exploration GUIExploration GUI

In order to welcome newcomers, status quo of simulation is the best advertisement. For further detail, go to Development log.

Object Detection v1

It has officially started! I will try to implement a ROS node that detects and collects valuable information (centers in 3D WCS, their dimensions) of trees and fruits. Current candidate is YOLO. I aim to produce a custom dataset consisting of snapshots from simulation view.

References

ROS Quadrotor Simulator by Wil Selby

Autonomous Flight by Alessio Tonioni

Darknet Retraining with Custom Dataset by Riccardo Grin

Note: If you know other similar projects that have the same context with the proposed ability, please inform me so that I can list them as a reference.

hector-moveit's People

Contributors

tahsinkose avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hector-moveit's Issues

"catkin_make" error

Hello, thanks your project. I git clone your code and catkin_make, but it has some errors as follow:

-- Could not find the required component 'moveit_core'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "moveit_core" with
any of the following names:

moveit_coreConfig.cmake
moveit_core-config.cmake

Add the installation prefix of "moveit_core" to CMAKE_PREFIX_PATH or set
"moveit_core_DIR" to a directory containing one of the above files. If
"moveit_core" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
hector_moveit_exploration/CMakeLists.txt:5 (find_package)

-- Configuring incomplete, errors occurred!
See also "/home/felicx/hector-moveit/build/CMakeFiles/CMakeOutput.log".
See also "/home/felicx/hector-moveit/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

Could you help me, thanks.

Can't launch orchyard_navigation.launch

Hi, I am trying to run the code but without success. To reproduce the environment I am running a LXC instance with ubuntu 16.04 with ros kinetic and gazebo 9. When launching I get the following error:

[gazebo_gui-4] process has died [pid 3285, exit code 134, cmd /opt/ros/kinetic/lib/gazebo_ros/gzclient __name:=gazebo_gui __log:=/home/ubuntu/.ros/log/45c929e4-6bee-11eb-9fa2-00163e3136de/gazebo_gui-4.log].
log file: /home/ubuntu/.ros/log/45c929e4-6bee-11eb-9fa2-00163e3136de/gazebo_gui-4*.log

I wanna use hector + moveIt in my masters in distributed SLAM, appreciate any help, thank you.

hector_quadrotor_description" does not exist.

Thanks for your helpful answer!
Now I install the gazebo9, and I met a new error again:

Errors << hector_quadrotor_description:check /home/yinjie/ws_moveit/logs/hector_quadrotor_description/build.check.008.log
CMake Error: The source directory "/home/yinjie/ws_moveit/src/hector_quadrotor-kinetic-devel/hector_quadrotor_description" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
make: *** [cmake_check_build_system] Error 1

and

Could not find a package configuration file provided by
"hector_pose_estimation" with any of the following names:

hector_pose_estimationConfig.cmake
hector_pose_estimation-config.cmake

Add the installation prefix of "hector_pose_estimation" to
CMAKE_PREFIX_PATH or set "hector_pose_estimation_DIR" to a directory
containing one of the above files. If "hector_pose_estimation" provides a
separate development package or SDK, be sure it has been installed.
Call Stack (most recent call first):
CMakeLists.txt:7 (find_package)

Can I ask a more question? why are the directory hector_gazebo and hector_gazebo empty?

Gazebo 7 Incompatibility

Thanks for your help, I have solved my last problem, but I got another one when I catkin_make:

/home/felicx/hector-moveit/src/hector_moveit_gazebo_plugins/src/fruit_generator.cc: In member function ‘virtual void gazebo::FruitGenerator::Load(gazebo::physics::WorldPtr, sdf::ElementPtr)’:
/home/felicx/hector-moveit/src/hector_moveit_gazebo_plugins/src/fruit_generator.cc:23:32: error: ‘class gazebo::physics::World’ has no member named ‘Models’
auto models = _parent->Models();
^
/home/felicx/hector-moveit/src/hector_moveit_gazebo_plugins/src/fruit_generator.cc:25:22: error: unable to deduce ‘auto&&’ from ‘models’
for(auto m : models){
^
hector_moveit_gazebo_plugins/CMakeFiles/fruit_generator.dir/build.make:62: recipe for target 'hector_moveit_gazebo_plugins/CMakeFiles/fruit_generator.dir/src/fruit_generator.cc.o' failed
make[2]: *** [hector_moveit_gazebo_plugins/CMakeFiles/fruit_generator.dir/src/fruit_generator.cc.o] Error 1
CMakeFiles/Makefile2:4369: recipe for target 'hector_moveit_gazebo_plugins/CMakeFiles/fruit_generator.dir/all' failed
make[1]: *** [hector_moveit_gazebo_plugins/CMakeFiles/fruit_generator.dir/all] Error 2
make[1]: *** 正在等待未完成的任务....
[ 0%] Linking CXX shared library /home/felicx/hector-moveit/devel/lib/libhector_gazebo_reset_plugin.so
[ 0%] Built target hector_gazebo_reset_plugin
[ 0%] Linking CXX shared library /home/felicx/hector-moveit/devel/lib/libdiffdrive_plugin_6w.so
[ 0%] Linking CXX shared library /home/felicx/hector-moveit/devel/lib/libhector_servo_plugin.so
[ 0%] Built target diffdrive_plugin_6w
[ 0%] Built target hector_servo_plugin
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed

Could you help me? thanks

MoveIt! GUI invalid planning after first motion

Tests thus far are only made through well-known MoveIt! GUI. At first, planning seems perfect with respect to constructed OctoMap. However, after this point, wandering around in the map and re-planning for newer goals results in invalid plans, who violate the occupancy grid. Resolving this can be a good first step for advanced in-code features.

EDIT: Problem is related to the start state deviation. Same problem occurs in the code manipulation, since the MoveGroupInterface assigned to the quadrotor cannot fetch the start state.

Note: Project does not implement an action controller which is required by MoveIt! Motion Planning framework yet. Implementing it might auto-resolve the problem.

Issue launching with different world

Hello,

I was wondering if it is possible to run hector-moveit with different Gazebo worlds. I am currently trying to launch hector-moveit in Gazebo's empty world, but am having some errors as described below.

I have installed Hector-moveit on Ubuntu 18.04 with ROS Melodic and I tested it using the default launch files that use the garden2 world. I copied empty.world into the hector_moveit_gazebo_worlds/worlds/ directory and modified the orchard_navigation.launch file to launch the empty.world file. I first launch the orchard_navigation.launch file and the output looks normal. I then launch explore.launch and I begin to see different error messages. On hector_explorer node, I get the following error messages indicating that the takeoff has failed.

[ INFO] [1576012707.894704884, 16.150000000]: Try to start from [19.957798,-0.001118,0.184687]
[ INFO] [1576012707.894814936, 16.150000000]: Try to go to [19.957798,-0.001118,1.000000]
[ WARN] [1576012709.015593266, 16.866000000]: Fail: ABORTED: No motion plan found. No execution attempted.

Hector explorer continues to print
[ INFO] [1576012709.015701858, 16.866000000]: Looking for frontiers

Some error messages from the terminal that launched orchard_navigation.launch:

[ WARN] [1576012708.991452238, 16.864000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[New Thread 0x7fffa67fc700 (LWP 3221)]
[ERROR] [1576012708.991548937, 16.864000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[Thread 0x7fffa6ffd700 (LWP 3220) exited]
[ WARN] [1576012708.993885101, 16.864000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[New Thread 0x7fffa5ffb700 (LWP 3222)]
[ERROR] [1576012708.995369543, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[Thread 0x7fffa77fe700 (LWP 3219) exited]
[ WARN] [1576012708.995873194, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[ERROR] [1576012708.996103529, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[ WARN] [1576012708.996998268, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[ERROR] [1576012708.997056668, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[Thread 0x7fffa5ffb700 (LWP 3222) exited]
[Thread 0x7fffa67fc700 (LWP 3221) exited]
[ WARN] [1576012709.003028451, 16.866000000]: ParallelPlan::solve(): Unable to find solution by any of the threads in 0.012239 seconds
[Thread 0x7fffa7fff700 (LWP 3218) exited]
[New Thread 0x7fffa5ffb700 (LWP 3223)]
[ WARN] [1576012709.004734338, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[New Thread 0x7fffa67fc700 (LWP 3224)]
[ERROR] [1576012709.008078972, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[New Thread 0x7fffa6ffd700 (LWP 3225)]
[Thread 0x7fffa5ffb700 (LWP 3223) exited]
[ WARN] [1576012709.008785139, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[ERROR] [1576012709.009018838, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[New Thread 0x7fffa77fe700 (LWP 3226)]
[ WARN] [1576012709.009383756, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[Thread 0x7fffa6ffd700 (LWP 3225) exited]
[ERROR] [1576012709.009443560, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[Thread 0x7fffa67fc700 (LWP 3224) exited]
[ WARN] [1576012709.010554625, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[ERROR] [1576012709.010816722, 16.866000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[ WARN] [1576012709.011027581, 16.866000000]: ParallelPlan::solve(): Unable to find solution by any of the threads in 0.007497 seconds
[New Thread 0x7fffa77fe700 (LWP 3227)]
[ WARN] [1576012709.011921324, 16.867000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[ERROR] [1576012709.011979464, 16.867000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[Thread 0x7fffa77fe700 (LWP 3227) exited]
[New Thread 0x7fffa6ffd700 (LWP 3228)]
[Thread 0x7fffa77fe700 (LWP 3226) exited]
[ WARN] [1576012709.013006668, 16.867000000]: DroneBody[RRTConnectkConfigDefault]: Skipping invalid start state (invalid bounds)
[ERROR] [1576012709.014153607, 16.867000000]: DroneBody[RRTConnectkConfigDefault]: Motion planning start tree could not be initialized!
[ WARN] [1576012709.014355866, 16.867000000]: ParallelPlan::solve(): Unable to find solution by any of the threads in 0.002745 seconds
[ INFO] [1576012709.014493871, 16.867000000]: Unable to solve the planning problem
[Thread 0x7fffa6ffd700 (LWP 3228) exited]
[ WARN] [1576012711.631622100, 17.556000000]: attitude_controller: No command received for 0.505s, triggering estop

Thank you in advance for any help.

Sean

Adding a joint

I added these lines in "quadrotor_with_asus_with_hokuyo_utm30lx.urdf.xacro" in order to move the camera.

<link name="movable_link">
<visual>
<origin rpy="${M_PI/2} 0 0" xyz="0 0 -0.03" />
<geometry>
<cylinder radius="0.02" length="0.01" />
</geometry>
</visual>
<collision>
<origin rpy="${M_PI/2} 0 0" xyz="0 0 -0.03" />
<geometry>
<cylinder radius="0.02" length="0.01" />
</geometry>
</collision>
</link>

<joint name="movable_camera_joint" type="revolute">
<origin xyz="0 0 -0.1" rpy="0.0 0.0 0.0" />
<parent link="base_link" />
<child link="movable_link"/>
<axis xyz="1 0 0" />
<limit upper="0" lower="${-M_PI/2}" velocity="1.0" effort="1.0" />
</joint>

<xacro:joint_standard_transmission name="movable_camera_joint" />

When i launch "roslaunch hector_moveit_exploration_mod explore.launch", this is the error

hector_explorer_mod: /opt/ros/noetic/include/moveit/robot_state/robot_state.h:169: void moveit::core::RobotState::setVariablePositions(const std::vector<double>&): Assertion robot_model_->getVariableCount() <= position.size() failed.

Any help??

use turtlebot model in gazebo

Hello, thanks for your sharing. Have you used the TurtleBot model to replace your UAV model?Could you give me some advice? Thanks.

Reduce Drone Navigation Speed

Hi
I using ROS Noetic, Ubunto 20.04. I'm new to Moveit. I there any possibility to slow down the drone while navigating.
Thanks

Group 'DroneBody' does not have a parent link

hi , first i want to thank you you for sharing your project . i am using ros melodic with gazebo 9 , and after cloning you and catkin_make your project i tried to launch roslaunch hector_moveit_gazebo orchyard_navigation.launch but i gt the following error

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.