ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Maybe I missed something somewhere but I could not find a straightforward solution to fit my needs.
The problem boiled down to the following:
In this case the relation between the ABB and ROS controllers-planning_groups is 1 to 2. There is one connection to the ABB driver (motion/state server). In Moveit I have two groups, in two namespaces, namely manipulator and positioner. Since I could use only one instance of the motion_download_interface
I could control only one out of the two groups.
This is is definitely a workaround and NOT a solution, but I made it work like this..:
robot_state
and motion_download_interface
nodes are included in the "both" group under the same namespace.joint_trajectory_action
.joint_state_splitter
: responsible to split the 7 joints list that returns from the ABB controller (to the /both
namespace) into 6 and 1 and publish these lists to the respected /joint_states
topicsfeedback_state_splitter
: does the same as the above splitter for the feedback state positions.trajectory_merger
: when an individual plan is made (either for the manipulator or the positioner) this node listens to it, and is also subscribed to the state of the second group from where it takes the static position. It always creates a trajectory which includes 7 joints with 7 positions for each point and submits the edited trajectory to the /both/joint_trajectory_action
.controller_list
paremeter. Each time a plan is requested, the node sets the appropriate joint names to "both" controller and when the publish is complete it resets the parameter to the original value.Since I consider all the above a quite dirty manipulation. I would like at least to suggest what in my mind sounds like a clean-solution:
Nonetheless, this is for now. In case there is suggested way to make this concept work that I missed I am interested to hear it!
2 | No.2 Revision |
Maybe I missed something somewhere but I could not find a straightforward solution to fit my needs.
The problem boiled down to the following:
In this case the relation between the ABB and ROS controllers-planning_groups is 1 to 2. There is one connection to the ABB driver (motion/state server). In Moveit I have two groups, in two namespaces, namely manipulator and positioner. Since I could use only one instance of the motion_download_interface
I could control only one out of the two groups.
This is is definitely a workaround and NOT a solution, but I made it work like this..:
robot_state
and motion_download_interface
nodes are included in the "both" group under the same namespace.joint_trajectory_action
.joint_state_splitter
: responsible to split the 7 joints list that returns from the ABB controller (to the /both
namespace) into 6 and 1 and publish these lists to the respected /joint_states
topicsfeedback_state_splitter
: does the same as the above splitter for the feedback state positions.trajectory_merger
: when an individual plan is made (either for the manipulator or the positioner) this node listens to it, and is also subscribed to the state of the second group from where it takes the static position. It always creates a trajectory which includes 7 joints with 7 positions for each point and submits the edited trajectory to the /both/joint_trajectory_action
.controller_list
paremeter. Each time a plan is requested, the node sets the appropriate joint names to "both" controller and when the publish is complete it resets the parameter to the original value.Since I consider all the above a quite dirty manipulation. I would like at least to suggest what in my mind sounds like a clean-solution:
Nonetheless, this is for now. In case there is suggested way to make this concept work that I missed work, I am interested to hear it!