http://docs.ros.org/kinetic/api/moveit_tutorials/html/index.html 阅读学习笔记 ;保存成.md文件查看
#### Planning with Approximated Constraint Manifolds 使用近似约束流型进行规划
- reduces planning time.
将用户设定的约束,先转化为Approximated Constraint Manifolds,并保存到一个database;后续直接基于这个database进行运动规划,以减少运动规划的时间;
compute an approximation of the constraint manifold beforehand and perform trajectory planning in that. The OMPL plugin contains the functionality to do that for a given set of constraints and save it in a database. In later instances the database can be loaded to use for constrained planning with any OMPL planner which strongly reduces planning time.
- Database Construction 数据库的构建
adding the constraints to the ConstraintsLibrary object the database can be constructed by callingsaveApproximationConstraints()
The function requires four parameters:
1.constraints message (moveit_msgs::Constraints)
2.robot description (std::string)
3.planning scene (planning_scene::PlanningScenePtr)
4.construction options (ompl_interface::ConstraintApproximationConstructionOptions)
- Database Loading and Usage
- - Loading:
The constraints database must be loaded at launch of the move group node by setting the ros parameter://必须在启动move group节点时进行加载
<param name="move_group/constraint_approximations_path" value="<path_to_database>"/>
- - Usage:
For planning just initialize the constraints message as always and set the messages name to the exact name that was used to construct the database. Also you need to specify the same values and tolerances again since by default the planner just samples over the states but does not necessary follow the constraints during interpolation for path planning. A correctly named constraint message without initialized constraints would use the database but can therefore lead to invalid trajectories anyway.
//初始化constraints message,该message的name要与用于生成database的message name保持一致;不需要对constraints message中的constraints进行初始化;规划时将自动调用先前生成的database;
#### Pick and Place
In MoveIt!, grasping is done using the MoveGroup interface.
相关数据类型:主要对这两个数据类型中各功能元素的理解;设定了pick和place相关的动作、姿态等
moveit_msgs::Grasp //grasp
moveit_msgs::PlaceLocation //place
pick and place动作接口:
move_group.setSupportSurfaceName("table1");
move_group.pick("object", grasps);
group.setSupportSurfaceName("table2");
group.place("object", place_location);
### Integration with a New Robot
#### MoveIt! Setup Assistant
Step 3: Add Virtual Joints
Virtual joints are used primarily to attach the robot to the world.
Step 7: Add Passive Joints
This tells the planners that they cannot (kinematically) plan for these joints because they can’t be directly controlled.
Step 8: 3D Perception
configuring the 3D sensors sensors_3d.yaml.
Step 9: Gazebo Simulation
help you simulate your robot with Gazebo by generating a new Gazebo compatible urdf if needed.
Step 10: ROS Control
auto generate simulated controllers to actuate the joints of your robot.
基于ros_control框架
#### URDF and SRDF
Safety Limits
If the “soft_lower_limit” and the “soft_upper_limit” in the safety_controller are set to 0.0, your joint will be unable to move.
#### Low Level Controllers
configuring MoveIt! with the controllers on your robot. We will assume that your robot offers a FollowJointTrajectory action service for the arms on your robot and (optionally) a GripperCommand service for your gripper. If your robot does not offer this we recommend the ROS control framework for easily adding this functionality around your hardware communication layer.
//基于ros_control framework, 增加FollowJointTrajectory action service for the arms;GripperCommand service for your gripper.此处仅介绍MoveIt端的相关配置;
- controllers.yaml进行MoveIt端 控制器 配置
- - 对FollowJointTrajectory Controller Interface和GripperCommand Controller Interface进行配置
controller_list:
- name: panda_arm_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- panda_joint1
- panda_joint2
- panda_joint3
- panda_joint4
- panda_joint5
- panda_joint6
- panda_joint7
- name: hand_controller
action_ns: gripper_action
type: GripperCommand
default: true
parallel: true
joints:
- panda_finger_joint1
- panda_finger_joint2
- - Optional Allowed Trajectory Execution Duration Parameters:
allowed_execution_duration_scaling: 1.2
allowed_goal_duration_margin: 0.5
The parameters are used to compute the allowed trajectory execution duration by scaling the expected execution duration and adding the margin afterwards. If this duration is exceeded the trajectory will be cancelled. The controller-specific parameters can be set as follows
-

本文详细介绍了ROS的MoveIt!运动规划框架,涵盖近似约束流型规划、抓取放置、机器人集成、逆运动学求解、规划适配器等内容,探讨了OMPL、CHOMP、STOMP等规划器的配置与使用,以及规划器间的差异与组合策略。
最低0.47元/天 解锁文章
5478

被折叠的 条评论
为什么被折叠?



