I can't figure out how the MoveIt interfaces with the hardware controller. Any help or references welcome. I tried the following:
- I created Python action servers that handle action messages sent by MoveIt for each move group in a new package named
my_robot_controller
. These are dummy SimpleActionServers I modified from the actionlib tutorial. I named themmy_move_group_controller.py
. They print to terminal using rospy.loginfo. - I edited the controllers.yaml file in my_robot_moveit/config using the same
my_move_group
names. - Following the MoveIt! tutorial on creating the controller launch file, I created a file
my_robot_description_moveit_controller_manager.launch
inside themy_robot_moveit
package (created using the setup assistant). According to the SRDF file in that same package/config, the robot's name is my_robot_description, as that's where the URDF lives. - I created a my_robot_moveit.launch file to start rviz and moveit (like demo.launch but enabling reading from joint_states). I set fake_execution to false.
rosrun my_robot_moveit my_robot_description_moveit_controller_manager.launch
. This command runs and terminates without error.rosrun my_robot_moveit my_robot_moveit.launch
. This launches rviz and I can visualize the robot and plan trajectories, but it seems like moveit can't find the controllers:
Relevant terminal output
[ INFO] [1499120779.494268914]: Starting scene monitor
[ INFO] [1499120779.498303784]: Listening to '/move_group/monitored_planning_scene'
[ INFO] [1499120779.499209320]: waitForService: Service [/get_planning_scene] has not been advertised, waiting...
[ INFO] [1499120781.117743014]: Waiting for arm6dof_controller/follow_joint_trajectory to come up
[ INFO] [1499120784.515498443]: Failed to call service get_planning_scene, have you launched move_group? at /tmp/binarydeb/ros-kinetic-moveit-ros-planning-0.9.8/planning_scene_monitor/src/planning_scene_monitor.cpp:486
[ INFO] [1499120784.889705013]: No active joints or end effectors found for group ''. Make sure you have defined an end effector in your SRDF file and that kinematics.yaml is loaded in this node's namespace.
[ INFO] [1499120784.890079419]: No active joints or end effectors found for group 'arm6dof'. Make sure you have defined an end effector in your SRDF file and that kinematics.yaml is loaded in this node's namespace.
[ INFO] [1499120784.892088492]: No active joints or end effectors found for group 'arm6dof'. Make sure you have defined an end effector in your SRDF file and that kinematics.yaml is loaded in this node's namespace.
[ INFO] [1499120784.892679679]: Constructing new MoveGroup connection for group 'arm6dof' in namespace ''
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
[ INFO] [1499120786.117870928]: Waiting for arm6dof_controller/follow_joint_trajectory to come up
[ERROR] [1499120791.118052218]: Action client not connected: arm6dof_controller/follow_joint_trajectory
[ INFO] [1499120796.145848142]: Waiting for base_gripper_controller/follow_joint_trajectory to come up
[ INFO] [1499120801.146001310]: Waiting for base_gripper_controller/follow_joint_trajectory to come up
[ERROR] [1499120806.146111888]: Action client not connected: base_gripper_controller/follow_joint_trajectory
[ INFO] [1499120811.254410130]: Waiting for ee_gripper_controller/follow_joint_trajectory to come up
[ERROR] [1499120814.906571120]: Unable to connect to move_group action server 'move_group' within allotted time (30s)
[ INFO] [1499120814.906992117]: Constructing new MoveGroup connection for group 'arm6dof' in namespace ''
[ INFO] [1499120816.254549199]: Waiting for ee_gripper_controller/follow_joint_trajectory to come up
[ERROR] [1499120821.254703646]: Action client not connected: ee_gripper_controller/follow_joint_trajectory
[ INFO] [1499120821.358256875]: Returned 0 controllers in list
[ INFO] [1499120821.371200102]: Trajectory execution is managing controllers
I'm probably missing the point, but the the tutorials don't explain how to set this up properly and I can't figure out how to solve these hints. I'm using the dynamixel_motor package to control my motors (through topics) so any tips on how to do that properly would also be welcome.
Originally posted by achille on ROS Answers with karma: 464 on 2017-07-03
Post score: 1