ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

swiz23's profile - activity

2023-07-02 04:43:51 -0500 marked best answer Using MTC to Plan a Circular Path

Hi,

I'm currently trying to use the ros2 branch of MTC (MoveIt Task Constructor) to plan a circular motion to open a door. I know that it's possible to use the MoveTo or MoveRelative stages to make an arm rotate around the TCP frame by just specifying the desired goal orientation in a PoseStamped message (MoveTo) or angular rotation in a TwistStamped message (MoveRelative) - as shown in the Cartesian demo code.

So what I'm thinking of doing is adding a fixed frame in the robot URDF (let's call it the door_hinge_frame) that is a child of one of the robot's links (not necessarily the TCP frame though). The door_hinge_frame would be located at the physical joint of the door when the TCP is in the desired 'opening' pose. Then, by just specifying the MoveTo or MoveRelative message frame_id to the door_hinge_frame, and specifying the goal pose to 90 degrees, a circular motion should be planned that opens the door.

So a few questions:

  • Is this the correct way to perform this motion or is there an easier way? If so, what would that way be?
  • While trying to test this approach out, the resulting motion via MTC is not the one that I expected. Instead of performing a circular motion around the door_hinge_frame, the arm still tries to rotate around the TCP frame. I've also tried to set the stage IK frame (via stage->setIKFrame()) to the door_hinge_frame, but that results in non-circular trajectories around the hinge joint.
  • In the above example, the TCP frame should move as shown in the left-hand part of the image below. But let's say I want the desired motion to be more like the right-hand part. How would I achieve that? image description

    If I was using the C++ MoveGroupInterace API, I could achieve this by sending a static transform to the TF tree of where the door hinge frame is located relative to a world frame (in which case, I'd just delete the door_hinge_frame in the robot URDF). Then I could create 90 or so waypoints that define the pose of the TCP relative to the door hinge frame such that the orientation of the TCP is as shown in the right-hand part of the image. Next, I could call the computeCartesianPath function with the waypoints and generate the trajectory. However, the CartesianPath class in MTC does not include a 'plan' function that allows passing in waypoints. What I could do instead is just create a Serial container of MoveTo stages in which I define the 90 or so waypoints. However, then the arm would accelerate/decelerate to each of the 90 waypoints instead of creating one trajectory where the arm would would only accelerate/decelerate once...

Any help with answering these questions would be much appreciated! Note that I'm working in a Docker container running Ubuntu 20.04 and ROS Galactic (I've also seen this issue in a Docker container running Ubuntu 22.04 and ... (more)

2023-07-02 04:35:52 -0500 received badge  Nice Question (source)
2023-03-06 13:50:02 -0500 commented answer Getting a Node::SharedPtr from "this"

I realize this thread is old, but what is the reason you can still do this->create_publisher<std_msgs::msg::String

2022-11-23 14:08:25 -0500 commented answer How to get an array of parameters with rclcpp

I did not know that! Thanks!

2022-11-23 13:35:07 -0500 commented answer How to get an array of parameters with rclcpp

Ah, so when you do 'auto foo', is 'foo' of the std::vector<int64_t> type? Or is 'foo' of the rclcpp::Parameter typ

2022-11-23 11:23:16 -0500 commented answer How to get an array of parameters with rclcpp

This shows how to declare the parameter. But how would you get a param holding a vector using the 'get_parameter' syntax

2022-11-21 11:06:55 -0500 received badge  Famous Question (source)
2022-11-21 11:06:55 -0500 received badge  Notable Question (source)
2022-11-02 17:05:05 -0500 commented answer ROS2 Image publisher slows down on subscription

I've run into this issue as well, and have not figured out a way to solve it yet. Though in my case, even having two sub

2022-08-13 22:24:50 -0500 received badge  Famous Question (source)
2022-08-12 14:24:54 -0500 edited question Using MTC to Plan a Circular Path

Using MTC to Plan a Circular Path Hi, I'm currently trying to use the ros2 branch of MTC (MoveIt Task Constructor) to p

2022-08-12 14:24:54 -0500 received badge  Editor (source)
2022-08-12 14:22:45 -0500 edited question Using MTC to Plan a Circular Path

Using MTC to Plan a Circular Path Hi, I'm currently trying to use the ros2 branch of MTC (MoveIt Task Constructor) to p

2022-08-02 22:17:57 -0500 commented answer ros2 foxy including header file from other package

In the pkg cmake, wouldn't you also need to include... include_directories( ${temp_lib_INCLUDE_DIRS} ) ...before th

2022-08-02 22:17:24 -0500 commented answer ros2 foxy including header file from other package

In the pkg cmake, wouldn't you also need to include... ``` include_directories( ${temp_lib_INCLUDE_DIRS} ) ``` ...

2022-08-02 22:17:14 -0500 commented answer ros2 foxy including header file from other package

In the pkg cmake, wouldn't you also need to include... ``` include_directories( ${temp_lib_INCLUDE_DIRS} ) ``` ...be

2022-08-02 22:16:52 -0500 commented answer ros2 foxy including header file from other package

In the pkg cmake, wouldn't you also need to include... include_directories( ${temp_lib_INCLUDE_DIRS} ) ...before t

2022-08-02 22:16:36 -0500 commented answer ros2 foxy including header file from other package

In the pkg cmake, wouldn't you also need to include... include_directories( ${temp_lib_INCLUDE_DIRS} ) ...before the

2022-08-02 21:47:42 -0500 commented question Cannot include tf2_geometry_msgs.h

In ROS2 humble and potentially other distros, the header include has been changed to tf2_geometry_msgs/tf2_geometry_msgs

2022-05-24 17:58:14 -0500 received badge  Famous Question (source)
2022-05-24 17:57:33 -0500 received badge  Famous Question (source)
2022-05-06 07:51:47 -0500 received badge  Notable Question (source)
2022-05-04 11:01:47 -0500 received badge  Popular Question (source)
2022-05-04 01:34:10 -0500 received badge  Famous Question (source)
2022-05-03 15:27:24 -0500 asked a question Using MTC to Plan a Circular Path

Using MTC to Plan a Circular Path Hi, I'm currently trying to use the ros2 branch of MTC (MoveIt Task Constructor) to p

2022-04-11 04:21:57 -0500 received badge  Notable Question (source)
2022-02-18 04:13:57 -0500 received badge  Notable Question (source)
2021-12-26 11:55:27 -0500 received badge  Popular Question (source)
2021-12-25 08:38:51 -0500 received badge  Famous Question (source)
2021-12-19 20:11:08 -0500 marked best answer Purpose of Forward Command Controller

I recently stumbled across the forward_command_controller/ForwardCommandController ros controller while doing some research online. From the documentation, it seems that it can take multiple joints as input and simply forwards them over to the hardware interface node. But how is that different than what the position_controllers/JointGroupPositionController does for positions? Or the velocity_controllers/JointGroupVelocityController does for velocities, etc?

It seems like there is some redundancy here, and according to the controller documentation, the above controllers even use the forward command controller behind the scenes. This question applies to both ros1 and ros2.

2021-12-16 16:57:11 -0500 asked a question Purpose of Forward Command Controller

Purpose of Forward Command Controller I recently stumbled across the forward_command_controller/ForwardCommandController

2021-11-12 11:48:26 -0500 marked best answer [ROS2] Purpose of TextSubstitution

In the ROS2 tutorials located at https://docs.ros.org/en/foxy/Tutorial..., the 'default_value' within the 'DeclareLaunchArgument' directive is assigned to TextSubstitution(text='0') or similar.

My question is why that is necessary. Can't you just do default_value='0'? It seems to work without the TextSubstitution directive.

Thanks

2021-11-10 13:57:46 -0500 received badge  Popular Question (source)
2021-11-10 13:40:00 -0500 commented answer [ROS2] Purpose of TextSubstitution

So if you're not planning on concatenating the LaunchArgument with something else - but just passing it to parameters wi

2021-11-09 22:42:05 -0500 asked a question [ROS2] Purpose of TextSubstitution

[ROS2] Purpose of TextSubstitution In the ROS2 tutorials located at https://docs.ros.org/en/foxy/Tutorials/Launch-Files/

2021-10-04 23:33:59 -0500 commented answer [ros2] Including a launch file in a launch file with parameter overrides

Instead of calling them 'parameters', it would be better to call them launch file arguments. What I imagine the question

2021-10-04 23:33:26 -0500 commented answer [ros2] Including a launch file in a launch file with parameter overrides

Instead of calling them 'parameters', it would be better to call them launch file arguments. What I imagine the question

2021-10-04 18:11:06 -0500 commented answer symbol lookup error in lib<PKG>__rosidl_typesupport_introspection_cpp.so:

Ran into this exact issue today and following the solution from @trueckel solved it for me!! Thanks!

2021-09-06 02:13:21 -0500 received badge  Famous Question (source)
2021-08-29 20:04:33 -0500 received badge  Notable Question (source)
2021-08-27 12:46:53 -0500 received badge  Popular Question (source)
2021-08-27 12:09:51 -0500 commented answer Subscription (ROS 2) vs Subscriber (ROS 1)

I'm still not sure I understand the difference between the two. Shouldn't the same hold true by a ros 2 publisher? Inst

2021-08-26 18:20:18 -0500 asked a question Subscription (ROS 2) vs Subscriber (ROS 1)

ROS 2 Subscriber Naming This is really more of a conceptual question, but as I was going through the ROS 2 tutorials, I

2021-08-16 05:08:59 -0500 received badge  Popular Question (source)
2021-07-27 04:24:16 -0500 received badge  Notable Question (source)
2021-07-26 16:49:41 -0500 asked a question Configuring an Image Pipeline

Configuring an Image Pipeline Hi, I currently have a rosbag that contains... Raw Color Image topic Raw Color Image Ca

2021-03-10 14:27:56 -0500 commented answer How do I disable execution_duration_monitoring ?

This helped me too! I only scaled up the allowed_execution_duration_scaling parameter to 4. I left the 'execution_durati

2021-03-03 08:10:14 -0500 received badge  Student (source)