move group interface connecting to robotic arm with controllers
Hi,
I am using ros-melodic
, and MoveIt!
. I use move_group_interface
to plan a simple movement in the joint space which I can see in rviz
. My goal is to send these motion plans to the real robotic arm.
I added the following file controllers.yaml
in the following path
my_ws/src/ur5_moveit_path_planner/config/controllers.yaml
and its contents look like:
controller_list:
- name: ""
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
Also, I made a small modification within ur5_moveit_controller_manager.launch.xml
and now it looks like
<launch>
<!-- loads moveit_controller_manager on the parameter server which is taken as argument
if no argument is passed, moveit_simple_controller_manager will be set -->
<arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
<param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>
<!-- loads ros_controllers to the param server -->
<!--
<rosparam file="$(find ur5_moveit_path_planner)/config/ros_controllers.yaml"/>
-->
<rosparam file="$(find ur5_moveit_path_planner)/config/controllers.yaml"/>
</launch>
ros_controllers.yaml
as generated by MoveIt! Setup Assistant
was replaced with the controllers.yaml
specified above. And, to test the motion plans, I created a launch file smp_planning_execution.launch
<launch>
<!--
<rosparam command="load" file="$(find ur5_moveit_path_planner)/config/joint_names.yaml"/>
-->
<include file="$(find ur5_moveit_path_planner)/launch/planning_context.launch" >
<arg name="load_robot_description" value="true" />
</include>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
<param name="/use_gui" value="false"/>
<rosparam param="/source_list">[/joint_states]</rosparam>
</node>
<include file="$(find ur5_moveit_path_planner)/launch/move_group.launch">
<arg name="publish_monitored_planning_scene" value="true" />
<arg name="allow_trajectory_execution" value="true" />
</include>
<include file="$(find ur5_moveit_path_planner)/launch/moveit_rviz.launch">
<arg name="config" value="true"/>
</include>
<node name="ur5" pkg="ur5_moveit_path_planner" type="ur5" respawn="false" output="screen" args="$(arg args1)"/>
</launch>
Coming to my questions.
when I run my program using
roslaunch ur5_moveit_path_planner smp_planning_execution.launch args1:="2"
I receive the following errors.
- [ERROR] Action client not connected: /follow_joint_trajectory [ERROR] [1580129893.827521393]: Unable to identify any set of controllers that can actuate the specified joints: [ elbow_joint shoulder_lift_joint shoulder_pan_joint wrist_1_joint wrist_2_joint wrist_3_joint ]
What is the source of this error. In my move_group.launch
, I have already specified, fake_execution
as false.
I can still see the robotic arm following a trajectory within rviz
.
If I have the above launch files and settings, can I use the following commands to send the motion plan to the robotic arm.
roslaunch ur_modern_driver ur5_ros_control.launch robot_ip:=[MY IP]
roslaunch ur5_moveit_path_planner smp_planning_execution.launch args1:="2"
thanks,