Gazebo | Ignition | Community
Ask Your Question

How can I control Joint with multi-axis

asked 2016-08-23 00:21:44 -0500

MIBE gravatar image

Hello, I'm creating a simple robot model like pan-tilt camera.

To simulate it, I added 3 links and 2 joints ( revolute ) because I couldn't specify the axis with SetPositionPID() and SetPositionTarget() functions.

But what I really want is to add only 2 links and 1 joint using "revolute2" and control each axes with different PID controllers. Only function what I found was SetJointPosition(), SetJointVelocity() but I couldn't give separated PID controllers to each axes and I'm not sure what kind of controller is controlling the joint in those functions.

How do you control the joint with multi-axes?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2016-08-24 01:39:49 -0500

MIBE gravatar image

Maybe I just found a solution but I didn't test it with revolute2 joint yet.

The solution is to use message named joint_cmd.

As you can see below, I could specify the axis of joint with set_axis() method in msgs::JointCmd class.

           msgs::JointCmd stMsgJointCmd;
    msgs::PID stMsgPID;

    std::string strWheelName = "robot::lwheel_joint";

I think PID controller for each axes could be specified too, but couldn't confirm it.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2016-08-23 00:21:44 -0500

Seen: 311 times

Last updated: Aug 24 '16