【UR5机械臂moveit运动规划与gazebo仿真】
1. 安装moveit
sudo apt install ros-noetic-moveit
2. 安装ur机器人的驱动
mkdir -p ~/catkin_ws/srccd ~/catkin_ws/catkin_makesource devel/setup.bash
3. 进入工作空间进行下载驱动
注意:ur5官方没有出noetic版本,而noetic不再包含ur_msgs包,需要单独下载。
cd ~/catkin_ws/git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Drivergit clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robotgit clone https://github.com/ros-industrial/ur_msgs.git src/ur_msgsrosdep updaterosdep install --from-paths src --ignore-src -ycatkin_make
下载后,打开src/fmauch_universal_robot/ur5_moveit_config/launch/moveit_rviz.launch,添加:
<node pkg="tf" type="static_transform_publisher" name="link_name" args="0 0 0 0 0 0 map odom 0" />
如果不添加tf状态广播,rviz启动后会在fixed frame栏中出现unknown frame map错误。
添加后moveit_rviz.launch的内容为:
<launch> <arg name="debug" default="false" /> <arg unless="$(arg debug)" name="launch_prefix" value="" /> <arg if="$(arg debug)" name="launch_prefix" value="gdb --ex run --args" /> <arg name="rviz_config" default="" /> <arg if="$(eval rviz_config=='')" name="command_args" value="" /> <arg unless="$(eval rviz_config=='')" name="command_args" value="-d $(arg rviz_config)" /> <node name="$(anon rviz)" launch-prefix="$(arg launch_prefix)" pkg="rviz" type="rviz" respawn="false" args="$(arg command_args)" output="screen"> </node> <node pkg="tf" type="static_transform_publisher" name="link_name" args="0 0 0 0 0 0 map odom 0" /></launch>
4. 启动gazebo仿真和moveit
打开终端测试,Alt+T可以在同一个窗口打开多个终端,打开终端记得source devel/setup.bash。
roslaunch ur_gazebo ur5_bringup.launchroslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=trueroslaunch ur5_moveit_config moveit_rviz.launch config:=true
(1) ur5_bringup.launch:加载机器人参数、发布机器人状态、加载空白gazbeo世界、将model加载在gazbeo中、加载gazbeo中的控制器,并通过节点发布出来;
gazebo服务器在国外,使用起来可能会有些卡顿。
(2) ur5_moveit_planning_execution.launch:映射了控制器的命名空间,与gazebo_controller连接、启动move_group;
其中,“sim:=true”对应ur5_moveit_config/ur5_moveit_planning_execution.launch中下面这句代码。目的是将“/scaled_pos_joint_traj_controller/follow_joint_trajectory"重映射(remap)到"/pos_joint_traj_controller/follow_joint_trajectory",保持gazebo和moveit控制器的命名空间一致,实现两者的连接控制。"sim"即simulation,“sim:=true”即为启动仿真环境,若“sim:=false”(default)则为real robot。
<remap if="$(arg sim)" from="/scaled_pos_joint_traj_controller/follow_joint_trajectory" to="/pos_joint_traj_controller/follow_joint_trajectory"/>
(3) moveit_rviz.launch:启动rviz。
5. rviz设置
打开rviz后,将坐标系(Fixed Frame)改为base,点击Add添加RobotModel和MotionPlanning,将规划组(Planning Group)改为manipulator
拖动rviz中ur5机械臂末端的规划球至目标位置,或者在Joints里拖动关节角度(如果规划球拖不动机械臂,把Approx IK Solutions打勾)
点击plan进行运动轨迹规划,点击execute看到gazebo中机械臂按照轨迹运动