ros moveit配置
首先在创建文件的src目录下运行【事先要先source一下】
roslaunch moveit_setup_assistant setup_assistant.launch
之后配置setup assiatant
加入模型
碰撞检测,手动点一下就行
planning groups这个比较重要,后面很多操作都是对这个Group来进行的,【命名、求解器……】
这里我添加了link、joint、chain这些也可以后面再文件中配置
定义一个robot poses,这里我命名了一个叫Home的pose,在rviz中调试的时候,点一下就能回到Home
这个模型不用夹爪,end effectors可以不用设置
passive joints也可以不用设置
contrrollers需要设置,直接自动添加,然后修改controller type为postion_controllers
simulation就是生成Urdf文件用的,如果导入的模型配置得有gazebo的插件等,就不需要管
需要注意这里的Namespace,,我之前犯得错误就是这里
最后填写作者信息,然后生成就行了
文件创建格式最好命名为“机械臂人”+“_moveit_config”
然后编译一下,再source一下,运行一下demo.launch文件看能否正常控制
这里没问题,然后进行下一步
rosmoveit+gazebo+rviz仿真
修改这两个文件,一个是ros moveit方的插头,一个是ros gazebo的接口
分别配置两个文件为
gazebo_controllers.yaml
# Publish joint_states
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
arm_controller:
type: position_controllers/JointTrajectoryController
joints:
- shoulder_pan_joint
- shoulder_lift_joint
- elbow_joint
- wrist_1_joint
- wrist_2_joint
- wrist_3_joint
gains:
shoulder_pan_joint: {p: 100.0, i: 0.0, d: 0.1, i_clamp: 0.0}
shoulder_lift_joint: {p: 100.0, i: 0.0, d: 0.1, i_clamp: 0.0}
elbow_joint: {p: 100.0, i: 0.0, d: 0.1, i_clamp: 0.0}
wrist_1_joint: {p: 100.0, i: 0.0, d: 0.1, i_clamp: 0.0}
wrist_2_joint: {p: 100.0, i: 0.0, d: 0.1, i_clamp: 0.0}
wrist_3_joint: {p: 100.0, i: 0.0, d: 0.1, i_clamp: 0.0}
constraints:
goal_time: 2.0
state_publish_rate: 25
ros_controllers.yaml
# MoveIt-specific simulation settings
moveit_sim_hw_interface:
joint_model_group: arm
joint_model_group_pose: home
# Settings for ros_control control loop
generic_hw_control_loop:
loop_hz: 300
cycle_time_error_threshold: 0.01
# Settings for ros_control hardware interface
hardware_interface:
joints:
- shoulder_pan_joint
- shoulder_lift_joint
- elbow_joint
- wrist_1_joint
- wrist_2_joint
- wrist_3_joint
sim_control_mode: 1 # 0: position, 1: velocity
# Publish all joint states
# Creates the /joint_states topic necessary in ROS
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
arm_controller:
type: position_controllers/JointTrajectoryController
joints:
- shoulder_pan_joint
- shoulder_lift_joint
- elbow_joint
- wrist_1_joint
- wrist_2_joint
- wrist_3_joint
controller_list:
- name: arm_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: true
joints:
- shoulder_pan_joint
- shoulder_lift_joint
- elbow_joint
- wrist_1_joint
- wrist_2_joint
- wrist_3_joint
initial: # Define initial robot poses per group
- group: arm
pose: home
其中的gazebo_controllers.yaml其实就是arm_gazebo_joint_states.yaml和trajectory_control.yaml的合成,记录主要是gazebo接口的相关的控制器,
而ros_controllers可以参考moveit的教程的第六步里面提供的那个yaml文件或者moveit生成的fake_controllers.yaml格式
最后输入
roslaunch ur5_moveit_config demo_gazebo.launch
运行就可以看到已经可以联调了