1. 仿真启动
# Rviz启动
ros2 launch ur_moveit_config ur_moveit.launch.py ur_type:=ur5 sim:=true use_sim_time:=true moveit_controller_manager:=joint_trajectory_controller
# Gazebo启动
ros2 launch ur_simulation_gazebo ur_sim_control.launch.py ur_type:=ur5 launch_rviz:=false
2. 控制器确认
ros2 control list_controllers
3. 修改MoveIt控制器配置
# /opt/ros/humble/share/ur_moveit_config/config/controllers.yaml
controller_names:
- joint_trajectory_controller # 仅保留一个控制器
joint_trajectory_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
4. Rviz控制Gazebo
MoveIt通过/move_action接口将轨迹发送给Gazebo,Gazebo中的UR会跟随RViz的轨迹运动,通过以下命令验证关节状态实时更新:
ros2 topic echo /joint_states
ur的规划和控制(正常情况)
ur的规划和控制(关节无法抵达情况)
5. 故障排查
ur_moveit_config默认会配置两个控制器scaled_joint_trajectory_controller和joint_trajectory_controller,需要确保MoveIt配置的控制器跟Gazebo激活的保持一致。
cd ~/ros2_ws/src/Universal_Robots_ROS2_Driver/ur_moveit_config
grep -r "scaled_joint_trajectory_controller" .