can you give a brief introduce about the operation?
skierlin opened this issue · 11 comments
I think it is interesting and I have finished the catkin_make. but I can't start this program by rosrun the several nodes, can you give a introduce about the operation of the program. Thank you for your program.
Hi @skierlin
I have been meaning to add a readme to the code but there are some bugs which need to be fixed before that. Anyway for your reference here is a small description:
- GoalPointTransformer.cpp allow the users to select on goal point on the map through rviz
- path_planning.cpp publishes trajectory_msgs::MultiDOFJointTrajectory "waypoint"
- "waypoint" is taken as an input by trajectory_generation in order to produce a new trajectory_msg which is smoothed with jerk constraints
- The scaling node is used to calculate the scale required for converting the monocular slam estimates to metric units.
- The transform node is used to transform point cloud from camera axis convention to ROS convention.
- The old_path_planner code is there only for reference since I have modified it in the path_planning node for replanning which is currently not working properly.
Regarding the implementation:
- I am using FCL for collision checking but instead of using RRT I am using RRT* with path length minimization as optimization objective.
- Ideally, collision checking should also be done for trajectory polynomials but you can increase the margins by increasing the size of the quadrotor model in the code. Still, this will never guarantee you collision free path which is a major problem if you require aggressive maneuvering hence the workaround is to take keep on taking intermediate waypoints until the trajectory is collision free (Ref). Secondly, I don't use Bspline since waypoints are treated as control points hence the trajectory will not pass through it.
- For simulation, I pass this trajectory message to RotorS simulator which uses a popular nonlinear geometric controller based on the work of T.Lee while in the real case I use a simple position controller keeping my parameters under the limit so that the generated trajectory is not aggressive and can be tracked easily with a simple linear controller.
- I saw the mav_trajectory_generation package after writing the minimum jerk code, but yes it can be used you just have to pass the waypoints to it. They have also made certain modifications where they are further optimizing the trajectory using unconstrained nonlinear optimization so as to generate better solutions (Ref)
- I feed octree and quadrotor model using only FCL definitions which are necessary for collision checking while OMPL only gives random poses to FCL quadcopter object and takes in the binary collision flag.
感觉很有趣,但需要一个运行它的说明,不知道是否方便写给使用说明
@ayushgaud Hi,I have a question. Recently I was using gazebo and px4 for simulation of drones. What I want to achieve is that the drone uses a depth camera to generate a point cloud map and then save the map in octomap format. Then use the octomap map to generate a navigation path in order through the window. I want to ask, can I use this path_planning program? is this suitable for me?
Thank you for your work.
Hi @ifaceyou123
I believe what you are looking for is quite similar to the work I have done for Ardupilot here. It uses mavlink for the interface so technically you should be able to directly use it without any modifications. If you face any issues, please let me know.
@ayushgaud. Thank you for your lightning-fast reply, this is exactly what I want to ask. I am now using ardupilot SITL with Gazebo to run the simulation. The quadrotor and camera use iris and r200 . Then I try to use pointcloud and pose to build octomap directly (in simulation). I am very happy to see your project, I feel that your program are really awesome! this project is really useful to me. I think I can learn more from this. I am very grateful to get your reply.
I am glad that you find that project useful. I have also updated the readme to include the links to the blogs which describe the framework in a bit detail. Hopefully, you may find that useful too.
Take a look at the avoidance package https://github.com/PX4/avoidance
Hi,I have a question to consult. I want to achieve some experiment in Pelican (a quadrotor of Ascending Tech). The quadrotor uses a camera to generate a point cloud map and then be saved as octomap format. Based on the octomap, the quadrotor generate a navigation path using sample-based method and trajectory optimization. Is there any existing package that I can directly use? Thank you!
Hi Gaud,
I encountered the following problem while running the node of traj_gen .
and still, in the goalpoint_transformer.cpp file I changed the listener.lookupTransform("odom",....) to listener.lookupTransform("map",....) , because the frame_id of my nav_msgs/Odometry is "map". but there is always an error in the bash. as we can see in this picture.
Do you know the reason? Is my modification wrong? thanks a lot!!
thank you for your share,can you give a readme