0
$\begingroup$

Rosanswers logo

Hello.

I'm working on a custom made robotic arm actuated by different motion controllers/motors via ros_canopen. Currently, the motors are controlled in profile position mode defined in the relevant yaml config file as follows:

robot_5s_arm_joint_controller:
  type: "position_controllers/JointTrajectoryController"
  joints:
    - joint_1
    - joint_2
    - joint_3
    - joint_4
    - joint_5

  required_drive_mode: 1

Due to some mechanical issues, i need to change the required_drive_mode to Interpolated position mode, but only three controllers (joint1-3) support this mode, the rest (joint4-5) can only be driven in profile position mode.

So the question is, what is the workaround here? :)

I suppose, that two arm_joint_controller groups shall be defined, one (joint1-3) with required_drive_mode: 7 and the other with required_drive_mode: 1. Then simply, in the moveit controller yaml file, i can define these controllers? Is this enough?

Do i need to change the planning group defined in moveit?

Thank you in advance.


Originally posted by akosodry on ROS Answers with karma: 121 on 2019-08-20

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

So the question is, what is the workaround here? :)

You can specify mixed modes

I suppose, that two arm_joint_controller groups shall be defined, one (joint1-3) with required_drive_mode: 7 and the other with required_drive_mode: 1

Much simpler: you can define a default mode (required_drive_mode, singular) and add a look-up (required_drive_modes, plural) for the others:

robot_5s_arm_joint_controller:
  type: "position_controllers/JointTrajectoryController"
  joints:
    - joint_1
    - joint_2
    - joint_3
    - joint_4
    - joint_5
  
  required_drive_mode: 7
  required_drive_modes:
    joint_4: 1
    joint_5: 1

or you set all explicitly:

robot_5s_arm_joint_controller:
  type: "position_controllers/JointTrajectoryController"
  joints:
    - joint_1
    - joint_2
    - joint_3
    - joint_4
    - joint_5
  
  required_drive_modes:
    joint_1: 7
    joint_2: 7
    joint_3: 7
    joint_4: 1
    joint_5: 1

Then simply, in the moveit controller yaml file, i can define these controllers? Is this enough?

Not needed.

Do i need to change the planning group defined in moveit?

Nope :)


Originally posted by Mathias Lüdtke with karma: 1596 on 2019-08-20

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by akosodry on 2019-08-20:
wow! THANKS!!!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.