需求
使用Moveit配置助手实现rivz与Gazebo的联合控制
环境
ubuntu20.04 + ROS1 noetice
准备工作
修改相关文件
- 需要实现在UR5机械臂末端添加robotiq 2f 85夹爪并在Gazebo中仿真。完成该步骤后,才能继续进行下面的步骤。
- 打开ur.xacro,其路径如下
catkin_UR5/src/universal_robot/ur_gazebo/urdf/ur.xacro
- 设置默认参数,便于Moveit导入文件时直接加载。将上述ur.xacro文件中35-38行左右位置的内容
替换为<xacro:arg name="joint_limit_params" default=""/> <xacro:arg name="physical_params" default=""/> <xacro:arg name="kinematics_params" default=""/> <xacro:arg name="visual_params" default=""/>
<xacro:arg name="joint_limit_params" default="$(find ur_description)/config/ur5/joint_limits.yaml"/> <xacro:arg name="physical_params" default="$(find ur_description)/config/ur5/physical_parameters.yaml"/> <xacro:arg name="kinematics_params" default="$(find ur_description)/config/ur5/default_kinematics.yaml"/> <xacro:arg name="visual_params" default="$(find ur_description)/config/ur5/visual_parameters.yaml"/>
安装并启动Moveit
- 安装Moveit
sudo apt-get install ros-noetic-moveit
- 启动Moveit
首先启动roscore
打开新终端,启动moveit配置助手roscore
cd ~/catkin_UR5 catkin_make source ./devel/setup.bash rosrun moveit_setup_assistant moveit_setup_assistant
Moveit可视化配置
-
Start加载模型
依次点击Create New Moveit Configuration Package -> Browse
选择文件
catkin_UR5/src/universal_robot/ur_gazebo/urdf/ur.xacro
在optional xacro arguments:下方中输入
ur.xacro文件本身存在输入参数robot_model,在文件catkin_UR5/src/universal_robot/ur_gazebo/launch/inc/load_ur5.launch.xml中可以看到其值为ur5
robot_model:=ur5
最后点击Load Files。
-
Self-Collisions碰撞检测矩阵
直接点击Generate Collision Matrix生成即可。
-
Virtual Joints定义虚拟关节
点击Add Virtual Joint,设置Child Link为base_link,Parent Frame为world,Type为fixed,Virtual Joint Name为fixed_base。
-
Planning Groups设置规划组
添加一个 Planning Group,名称为 manipulator,运动学求解器使用 ur5 机械臂的专用求解器 ur_kinematics/UR5KinematicsPlugin,运动规划库选择 RRTConnect。
分别点击Add Kin.Chain 和 Add Joints进行设置。
添加新的Group,名称为gripper,使用默认配置,仅需要点击 Add Joints 添加关节。最终配置如下下图所示界面中的Joints和Chain也可以直接点击进行相关配置,完成后可以在此界面中点击右下角的Add Group添加新的组。
-
Robot Poses定义机械臂和夹爪的常用姿势
-
End Effectors设置末端执行器
-
Passive Joints设置被动关节
-
Controllers控制器
点击Auto Add FollowJointsTrajectoryControllers For Each Planning Group自动生成controllers。为实现Moveit对Gazebo中机械臂的控制,需要确保命名空间一致,即控制器名称要统一。参考如下ur5_controllers.yaml文件的控制器名称
catkin_UR5/src/universal_robot/ur_gazebo/config/ur5_controllers.yaml
设置两个controller的Name和Type,如下
-
Simulation 和 3D Perception
跳过不配置。 -
Author Information 作者信息
填写自己的姓名和邮箱。 -
Configuration Files 生成配置文件
先新建文件夹catkin_UR5/src/universal_robot/ur5_gripper_moveit_config
选择上述文件夹路径,生成ur5_gripper_moveit_config包。
启动rviz、gazebo仿真和moveit运动规划
-
打开如下文件
catkin_UR5/src/universal_robot/ur_gazebo/launch/ur5_bringup.launch
将gui_controller注释掉
<!-- 添加控制节点 --> <!-- <node name="gui_controller" pkg="rqt_joint_trajectory_controller" type="rqt_joint_trajectory_controller" /> -->
-
启动相应launch
cd ~/catkin_UR5 catkin_make source ./devel/setup.bash roslaunch ur_gazebo ur5_bringup.launch roslaunch ur5_gripper_moveit_config move_group.launch roslaunch ur5_gripper_moveit_config moveit_rviz.launch config:=true
rviz启动后,将Fixed Frame设置为base_link,手动添加RobotModel和MotionPlanning。
MotionPlanning选择PlanningGroup为gripper,在Joints中调整关节角度至目标位置,点击Plan&Execute,即可完成运动规划及gazebo中夹爪的运动控制。
MotionPlanning选择PlanningGroup为manipulator,拖动末端规划球或在Joints中调整关节角度至目标位置,点击Plan&Execute,即可完成运动规划及gazebo中机械臂的运动控制。