I'm about to start porting the JointTrajectoryActionController [1] to ros_control. The current incantation of the controller supports three ROS interfaces:
1. Topic: trajectory_msgs/JointTrajectory.
2. Action interface: JointTrajectory.3. Action interface: FollowJointTrajectory.For ros_control's implementation, I plan on supporting 3. and drop 2 (IIUC it's deprecated). Supporting 1. comes almost for free, so I have no strong preference there.
Let me know if somebody has a different opinion on which interfaces to support.
On Mon, Jul 1, 2013 at 10:22 AM, Adolfo Rodríguez Tsouroukdissian <adolfo.r...@pal-robotics.com> wrote:
I'm about to start porting the JointTrajectoryActionController [1] to ros_control. The current incantation of the controller supports three ROS interfaces:
1. Topic: trajectory_msgs/JointTrajectory.
2. Action interface: JointTrajectory.3. Action interface: FollowJointTrajectory.For ros_control's implementation, I plan on supporting 3. and drop 2 (IIUC it's deprecated). Supporting 1. comes almost for free, so I have no strong preference there.
Let me know if somebody has a different opinion on which interfaces to support.
I just put together a joint trajectory controller based on the reflexxes Type II motion libraries [1] over this past weekend. This controller currently supports (1) and I was going to implement (3) today. The nice thing about using reflexxes is that you can command it with _very_ sparse trajectories and they will all be synchronized and observe velocity and acceleration limits, and we don't need to worry about doing all the interpolation. I was also thinking about having a simple single-joint-set-point interface for testing purposes.
One question I have is what behavior we want to have when a new trajectory is commanded during the execution of an active trajectory. The current behavior that I've implemented (and am testing right now) simply replaces the active trajectory, but we could do something more sophisticated where it only replaces the points of the active trajectory which would occur during the new trajectory.
[1] http://www.reflexxes.com/--
Jonathan Bohren
Laboratory for Computational Sensing and Robotics
http://dscl.lcsr.jhu.edu/People/JonathanBohren
--
You received this message because you are subscribed to the Google Groups "ROS/Orocos Robot Control Special Interest Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-robot-co...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
On Mon, Jul 1, 2013 at 4:55 PM, Jonathan Bohren <jonatha...@gmail.com> wrote:
On Mon, Jul 1, 2013 at 10:22 AM, Adolfo Rodríguez Tsouroukdissian <adolfo.r...@pal-robotics.com> wrote:
I'm about to start porting the JointTrajectoryActionController [1] to ros_control. The current incantation of the controller supports three ROS interfaces:
1. Topic: trajectory_msgs/JointTrajectory.
2. Action interface: JointTrajectory.3. Action interface: FollowJointTrajectory.For ros_control's implementation, I plan on supporting 3. and drop 2 (IIUC it's deprecated). Supporting 1. comes almost for free, so I have no strong preference there.
Let me know if somebody has a different opinion on which interfaces to support.
I just put together a joint trajectory controller based on the reflexxes Type II motion libraries [1] over this past weekend. This controller currently supports (1) and I was going to implement (3) today. The nice thing about using reflexxes is that you can command it with _very_ sparse trajectories and they will all be synchronized and observe velocity and acceleration limits, and we don't need to worry about doing all the interpolation. I was also thinking about having a simple single-joint-set-point interface for testing purposes.So Reflexxes is doing limits-aware interpolation, correct?. If the time-to-waypoint is less than what the user specified, are you warping the resulting trajectory so that it takes longer?.
Is the code somewhere public for inspection?.
I have also considered using Reflexxes at least as part of the implementation. The downside of using it without an additional spline interpolator are that with the current implementation you can choose to specify:
- Positions-only, resulting in a linear piecewise trajectory (not nice for sending to actuators). I wonder if we should still support this.
- Position+velocity, resulting in cubic splines. Reflexxes Type II would be a good replacement for this usecase.
- Position+velocity+acceleration, resulting in quintic splines. Reflexxes Type II can't help us here. One could resort to the Type IV library, but it's not open source, and you need an acceleration estimate + jerk limits.
I'd really like to not sacrifice the last scenario above (pos, vel, acc waypoints). An alternative would be to combine the existing spline interpolators with a Reflexxes Type II post-processing step for enforcing limits.
One question I have is what behavior we want to have when a new trajectory is commanded during the execution of an active trajectory. The current behavior that I've implemented (and am testing right now) simply replaces the active trajectory, but we could do something more sophisticated where it only replaces the points of the active trajectory which would occur during the new trajectory.I would keep the goal-processing logic similar to what the existing controller does. Since the new trajectory might start in the future (as specified in the header stamp), one should:
- Keep the current trajectory until the new trajectory start time.- Compute a new segment bridging the old and new trajectories.- Replace old trajectory segments that overlap with new one.
This is one of the best-kept secrets of the existing implementation, which almost nobody seems to use, but I've found to be just great. It's also tricky to implement, and has had important bugs in the past, so it needs good testing.
- Position+velocity+acceleration, resulting in quintic splines. Reflexxes Type II can't help us here. One could resort to the Type IV library, but it's not open source, and you need an acceleration estimate + jerk limits.
I'd really like to not sacrifice the last scenario above (pos, vel, acc waypoints). An alternative would be to combine the existing spline interpolators with a Reflexxes Type II post-processing step for enforcing limits.We could try that, what was attractive about reflexxes was just that it was hardened and maintained.
One question I have is what behavior we want to have when a new trajectory is commanded during the execution of an active trajectory. The current behavior that I've implemented (and am testing right now) simply replaces the active trajectory, but we could do something more sophisticated where it only replaces the points of the active trajectory which would occur during the new trajectory.I would keep the goal-processing logic similar to what the existing controller does. Since the new trajectory might start in the future (as specified in the header stamp), one should:
- Keep the current trajectory until the new trajectory start time.- Compute a new segment bridging the old and new trajectories.- Replace old trajectory segments that overlap with new one.
This is one of the best-kept secrets of the existing implementation, which almost nobody seems to use, but I've found to be just great. It's also tricky to implement, and has had important bugs in the past, so it needs good testing.Yeah, I implemented similar behavior here, forked from the current trajectory controller (separated from the pr2 stuff) to work with some experimental orocos-rtt-based controllers: https://github.com/jhu-lcsr/controllerman/blob/master/controllerman_controllers/src/trajectory_dispatcher.cppThis implementation uses a binary search to insert the new trajectory, instead of a linear search, and it also scales trajectories to satisfy velocity limits.
I definitely think this could be cleaned up though.-j
--
You received this message because you are subscribed to the Google Groups "ROS/Orocos Robot Control Special Interest Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-robot-co...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
I think its great you guys are working on this, having a good JointTrajectoryActionController is a very important for integrating MoveIt! with ros_control. However, hasn't MoveIt! already been used with ros_control by the guys at HiDof - meaning they already have a joint trajectory controller?
If you go with using reflexxes then Type II is definitely the only license we can use.
On Mon, Jul 1, 2013 at 1:21 PM, Dave Coleman <davetc...@gmail.com> wrote:
I think its great you guys are working on this, having a good JointTrajectoryActionController is a very important for integrating MoveIt! with ros_control. However, hasn't MoveIt! already been used with ros_control by the guys at HiDof - meaning they already have a joint trajectory controller?@wim Do they?If you go with using reflexxes then Type II is definitely the only license we can use.The nice thing about reflexxes is that if someone _does_ have Type IV (easy if you're in academia), they can optionally link against it.
-j--
Jonathan Bohren
Laboratory for Computational Sensing and Robotics
http://dscl.lcsr.jhu.edu/People/JonathanBohren
--
You received this message because you are subscribed to the Google Groups "ROS/Orocos Robot Control Special Interest Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-robot-co...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Interesting topic!I haven't use this ros controller myself, so my comments are based on what I have read here so far.(Does anyone have a link to the original source code?)On Mon, Jul 1, 2013 at 1:21 PM, Dave Coleman <davetc...@gmail.com> wrote:
I think its great you guys are working on this, having a good JointTrajectoryActionController is a very important for integrating MoveIt! with ros_control. However, hasn't MoveIt! already been used with ros_control by the guys at HiDof - meaning they already have a joint trajectory controller?@wim Do they?If you go with using reflexxes then Type II is definitely the only license we can use.The nice thing about reflexxes is that if someone _does_ have Type IV (easy if you're in academia), they can optionally link against it.I would love to see a modular approach, i.e. to make it easy to swap different interpolation methods and maybe even different controller methods (feed-forward vs. feed-back).We have a custom controller here, which uses the same interface (FollowJointTrajectory) and does pretty much the same (interpolation, feedforward control). We are using our (Daniel's) open-source library ECL [1], which contains various spline interpolations, e.g. smooth linear (quinitic + linear), quintic + cubic and tension spline interpolation.What's your time schedule on this, Adolfo (and everyone else who likes to join)?
Cheers,Marcus-j--
Jonathan Bohren
Laboratory for Computational Sensing and Robotics
http://dscl.lcsr.jhu.edu/People/JonathanBohren
--
You received this message because you are subscribed to the Google Groups "ROS/Orocos Robot Control Special Interest Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-robot-co...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
Marcus Liebhardt
Control Engineer
Yujin Robot
주소: 대한민국 서울시 금천구 가산동 345-30 남성프라자 #601, 153-023.
Address: Door #601, Namsung-Plaza, 345-30 Gasan-dong, Guemcheon-gu, Seoul, 153-023, Republic of Korea
Website: http://www.yujinrobot.com
Email: marcus.l...@yujinrobot.com
Phone: +82-70-46577073
On Tue, Jul 2, 2013 at 1:57 AM, Marcus Liebhardt <marcus.l...@yujinrobot.com> wrote:
Interesting topic!I haven't use this ros controller myself, so my comments are based on what I have read here so far.(Does anyone have a link to the original source code?)On Mon, Jul 1, 2013 at 1:21 PM, Dave Coleman <davetc...@gmail.com> wrote:
I think its great you guys are working on this, having a good JointTrajectoryActionController is a very important for integrating MoveIt! with ros_control. However, hasn't MoveIt! already been used with ros_control by the guys at HiDof - meaning they already have a joint trajectory controller?@wim Do they?If you go with using reflexxes then Type II is definitely the only license we can use.The nice thing about reflexxes is that if someone _does_ have Type IV (easy if you're in academia), they can optionally link against it.I would love to see a modular approach, i.e. to make it easy to swap different interpolation methods and maybe even different controller methods (feed-forward vs. feed-back).We have a custom controller here, which uses the same interface (FollowJointTrajectory) and does pretty much the same (interpolation, feedforward control). We are using our (Daniel's) open-source library ECL [1], which contains various spline interpolations, e.g. smooth linear (quinitic + linear), quintic + cubic and tension spline interpolation.What's your time schedule on this, Adolfo (and everyone else who likes to join)?Schedule: Start this week, finish when it's done ;-). I anticipate it could take about a month to have something solid.
All,Starting from ros_controllers 0.5.3 (Hydro only), there now exists the joint_trajectory_controller package that implements a controller for executing joint-space trajectories on a group of joints. For those familiar with the PR2 coontrollers, this is ros_control's equivalent of the JointTrajectoryActionController. A brief summary of its main features follows:
ROS API
- Commands:
- FollowJointTrajectory action
- trajectory_msgs::JointTrajectory topic
- Support for the deprecated JointTrajectory action has been dropped- Controller state querries:
- Current state is available in a control_msgs::JointTrajectoryControllerState topic.
- State at any future time can be queried through a control_msgs::JointTrajectoryControllerState service.
On Tue, Sep 10, 2013 at 6:09 PM, Adolfo Rodríguez Tsouroukdissian <adolfo.r...@pal-robotics.com> wrote:
All,Starting from ros_controllers 0.5.3 (Hydro only), there now exists the joint_trajectory_controller package that implements a controller for executing joint-space trajectories on a group of joints. For those familiar with the PR2 coontrollers, this is ros_control's equivalent of the JointTrajectoryActionController. A brief summary of its main features follows:
ROS API
- Commands:
- FollowJointTrajectory action
- trajectory_msgs::JointTrajectory topic
- Support for the deprecated JointTrajectory action has been dropped- Controller state querries:
- Current state is available in a control_msgs::JointTrajectoryControllerState topic.
- State at any future time can be queried through a control_msgs::JointTrajectoryControllerState service.What about a lazy publisher for the controller state?
--