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

shonigmann's profile - activity

2023-08-08 11:54:31 -0500 marked best answer Should one or multiple controller_manager nodes be used for modular robots (e.g. base + arm)? [ros2_control]

If you have a robot composed of several sub-robots (e.g. a mobile base platform with a manipulator attached), each of which has its own independent controllers defined, is there a preferred approach to managing the controllers for the combination?

Are there reasons for or against either:

  • aggregating the controllers for both the base and arm into a single controller_manager node, or
  • running separate controller_manager nodes for each sub-robot (e.g. base_controller_manager and arm_controller_manager)?

I'd imagine the former might have a bit less overhead, but the latter might make lifecycle management a bit more flexible?

2023-08-08 11:51:58 -0500 marked best answer [ros2_control] Is it bad practice to cascade controllers?

Would it be bad practice to cascade controllers using ros2_control?

For instance, if you had a legged robot, you may have a low level controller to command joint positions, and a higher level limb trajectory controller, and maybe an even higher level robot body controller.

+-----------------+             +-----------------+              +------------------+
| body controller | ----------->| limb controller | -----------> | joint controller | 
+-----------------+             +-----------------+              +------------------+

Would it be reasonable to have each of these controllers as separate ros2_controller interfaces, publishing updates to each other?

Or would the additional publish-subscribe interfaces add to the control latency/jitter, and would it instead be preferable to write a single node that does all 3?

2023-08-08 11:51:56 -0500 answered a question [ros2_control] Is it bad practice to cascade controllers?

(Adding an answer to summarize @gvdhoorn's response and some more recent context, to close this question out prior to th

2023-08-08 11:44:15 -0500 marked best answer Downsides to colcon's --symlink-install option in ROS2?

Are there any downsides or pitfalls to using the --symlink-install option in when building a workspace with colcon in ROS2?

To me, it seems like a cross-the-board improvement; symbolic links instead of copies take less disk space, and make for faster development when using python, urdf, xacro, yaml, etc; and compiled language files are still handled as expected (to my knowledge). But I feel like I must be missing something, else I would expect colcon to enable --symlink-install by default if there weren't any downsides.

2023-08-08 11:43:53 -0500 marked best answer ROS2 Launch - How to Concatenate LaunchConfiguration with String

Is there a preferred way to concatenate a LaunchConfiguration with a string (e.g. a file extension, prefix, or suffix) that can be used in a similar way to PathJoinSubstitution?

e.g. given:

DeclareLaunchArgument('my_robot', default_value='my_robot_name')

a path could be made to my_robot using:

PathJoinSubstitution(['path', 'to', LaunchConfiguration('my_robot')])

which would evaluate as:

/path/to/my_robot_name

But what if I want to create a path to my_robot_name.config? Is there an equivalent way to combine strings and LaunchConfigurations?

As a workaround, I've used Command or PythonExpression substitutions, e.g.:

Command(['echo -n ', LaunchConfiguration('robot_name'), '.config'])  # or
PythonExpression(["'", LaunchConfiguration('robot_name'), ".config'"])

But I think it would be great if there was a cleaner, more readable alternative that I've completely overlooked.

2023-08-08 11:43:49 -0500 answered a question ROS2 Launch - How to Concatenate LaunchConfiguration with String

@Fetullah Atas' answer got me most of the way there. Moving my comment to an answer to hopefully improve visibility. As

2023-08-08 11:36:54 -0500 marked best answer A definitive guide to launching multi-robot operations in ROS2

Disclaimer that I know this question strays from the typical ROS Answers format a fair bit. But I still think this is a better medium to have this discussion than, say, ROS Discourse.

I've looked around a fair bit, and have yet to see a single "definitive" and up-to-date discussion of the steps that you need to consider to successfully launch multiple robots in ROS2. There are a number of questions already on ROS Answers, and elsewhere, that discuss things like namespaces, frame_prefix (recently readded), GroupActions, remapping topics, gazebo plugin considerations, etc, as well as a number of examples that have been posted (e.g. by Nav2, theConstruct, and others), but I feel like they are often a bit light on the "why" aspect of what's going on. I think it would be valuable to have a single resource that includes an overview of all the aspects that need to be considered, particularly when moving from a single robot to multiple robots, and of any "best practices" that people have developed.

Some questions that I've come across that would be worth answering for new users:

  • When to use namespaces vs remapping? When might you need to use both?
  • When its worth using GroupAction
  • When should you use frame_prefix? When should you add a prefix directly in your URDF/Xacro files?
  • Where do you need to apply a frame_prefix or namespace? (Gazebo plugins, ros2_control config files, robot_state_publisher)?
  • What are the best ways to avoid redundant definitions of robot parameters (e.g. in config files that could be identical except for a prefix or ID parameter)?
  • When should you use fully qualified vs relative names? Are there any common cases other than /tf where you would not want to use relative topic names?
  • When should you use a single tf tree for all robots, and when should you use a different tf tree for each robot?
  • What considerations should you take when writing an Xacro file to ensure you can easily extend from single-robot to multi-robot use cases?
  • What's the best way to spawn multiple robots in Gazebo?

I'd be happy to take a stab at answering some of these items myself, but really I'd like to hear from people with more experience to glean from their working experience. If anyone has any additional questions, please comment them below and I can add them to the list. I'd also be happy to compile feedback into a single wiki or tutorial type document.

Thanks in advance!

2023-08-08 11:36:25 -0500 received badge  Famous Question (source)
2023-07-26 09:03:54 -0500 received badge  Nice Answer (source)
2023-07-25 18:32:19 -0500 commented question Unable to Properly Kill Nodes Launched via Custom ROS Node

as a point of clarification - are you running nodes (ros2 run ...) or are you launching launch files (ros2 launch ...)?

2023-07-25 18:07:53 -0500 commented question Unable to Properly Kill Nodes Launched via Custom ROS Node

Duplicate of https://answers.ros.org/question/417679/unable-to-properly-kill-nodes-launched-via-custom-ros-node/

2023-06-25 15:00:14 -0500 received badge  Nice Answer (source)
2023-06-20 10:50:00 -0500 received badge  Nice Answer (source)
2023-06-19 10:23:19 -0500 received badge  Good Question (source)
2023-06-19 04:29:32 -0500 marked best answer [ROS2] tf2 "authority undetectable" / "no authority available"

I'm playing around with tf2 in ROS2 Foxy using a Gazebo simulated robot, and get warning messages regarding the tf2 "authority".

For instance, running ros2 run tf2_ros tf2_monitor, I can see that the static and dynamic transforms are being published by "<no authority available>", e.g.:

Frame: back_right_wheel_link, published by <no authority available>, Average Delay: 0.000709075, Max Delay: 0.0118647
Frame: base_link, published by <no authority available>, Average Delay: 1.62619e+09, Max Delay: 1.62619e+09

TF buffers also mention the undetectable Authority. E.g. RViz also gives TF related warnings mentioning the Authority

Warning: TF_OLD_DATA ignoring data from the past for frame right_rocker_link at time 7.421000 according to authority Authority undetectable

I haven't found much in terms of documentation or search results referring to the "authority", so I was hoping someone could give some insight into what it is, how it is typically set, etc.

Thanks!

2023-06-19 04:29:32 -0500 received badge  Nice Answer (source)
2023-05-31 09:51:05 -0500 received badge  Nice Answer (source)
2023-05-17 11:28:33 -0500 commented question How can I build slider-crank structure in URDF

There is no support for closed kinematic loops in URDF but there is in Gazebo/SDF, and presumably other simulation speci

2023-05-17 11:28:03 -0500 commented question How can I build slider-crank structure in URDF

There is no support for closed kinematic loops in URDF but there is in Gazebo/SDF, and presumably other simulation speci

2023-05-10 10:42:40 -0500 commented answer ROS2 Launch - How to Concatenate LaunchConfiguration with String

what you currently have will fail because os.path.join has no knowledge of ROS 2 launch substitutions or the launch cont

2023-05-01 10:29:05 -0500 commented question foxy rviz2 robot inverse

It sounds like whatever is publishing your odometry is configured incorrectly, but its difficult to say without more inf

2023-04-27 14:46:06 -0500 commented question Package already built in underlay workspace is the current workspace

i seem to remember having this issue in Galactic but its been a while and I don't fully recall the root cause. It is a w

2023-04-15 11:27:19 -0500 commented answer Applying color in Gazebo without setting color material in urdf

Gazebo only knows about meshes based on the filepath that is provided in the URDF/SDF file it receives. If that filepath

2023-04-14 11:59:25 -0500 answered a question Applying color in Gazebo without setting color material in urdf

I'm not sure I understand your question... But if you are asking how you can apply color or texture to models in Gazebo

2023-04-14 11:59:25 -0500 received badge  Rapid Responder (source)
2023-04-14 11:44:35 -0500 received badge  Rapid Responder (source)
2023-04-14 11:44:35 -0500 answered a question Understanding ROS 2 publisher size, subscriber size, and topic size

I only skimmed your question/code since there was a lot to unpack here, so apologies if I'm missing the mark (I'm also d

2023-04-11 20:04:16 -0500 received badge  Rapid Responder (source)
2023-04-11 20:04:16 -0500 answered a question Is there a way to rebuild packages inside /opt/ros/<distro> folder?

Please correct me if I'm wrong, but my understanding is that you want to modify and rebuild a specific package that you

2023-04-11 19:47:00 -0500 commented question arduino-cli

duplicate of https://answers.ros.org/question/414235/arduino-cli/

2023-03-17 01:52:31 -0500 received badge  Famous Question (source)
2023-03-13 12:11:43 -0500 edited answer Recommendations for ROS 2 Humble and Gazebo demo for robot arm?

You might find either of these interesting: https://github.com/UniversalRobots/Universal_Robots_ROS2_Gazebo_Simulation

2023-03-08 17:40:35 -0500 received badge  Rapid Responder (source)
2023-03-08 17:40:35 -0500 answered a question Recommendations for ROS 2 Humble and Gazebo demo for robot arm?

You might find either of these interesting: https://github.com/UniversalRobots/Universal_Robots_ROS2_Gazebo_Simulation

2023-02-23 17:29:58 -0500 edited answer Revolute joint disobeying limits in Gazebo

the gazebo_ros2_control position control interface implementation sets joint positions directly. There's no underlying c

2023-02-23 17:26:32 -0500 commented question mismatch effort_controllers/commands and /joint_states when using gazebo

I suspect your ros2_control configuration may be inconsistent if things are out of order. Hard to say without seeing the

2023-02-23 17:15:33 -0500 answered a question Revolute joint disobeying limits in Gazebo

the gazebo_ros2_control position control interface implementation sets joint positions directly. There's no underlying c

2023-02-14 12:25:35 -0500 commented answer How to pause gazebo at the start in foxy?

I'm not familiar with Askbot, but my intent was always to help people coming to ROS Answers to answer questions more rea

2023-02-14 12:25:18 -0500 commented answer How to pause gazebo at the start in foxy?

I'm not familiar with Askbot, but my intent was always to help people coming to ROS Answers to answer questions find mor

2023-02-14 08:00:35 -0500 received badge  Nice Answer (source)
2023-02-09 05:48:24 -0500 received badge  Nice Answer (source)
2023-02-08 12:39:16 -0500 received badge  Rapid Responder (source)
2023-02-08 12:39:16 -0500 answered a question How to pause gazebo at the start in foxy?

There is a pause Launch Argument that you can set to true (defined here in the source) Your launch command could look s

2023-01-24 16:44:27 -0500 commented question newbie question, first robot Ufactory?

duplicate of https://answers.ros.org/question/411752/newbie-question-first-robot-ufactory/. Closing.

2023-01-24 05:58:05 -0500 received badge  Good Question (source)
2023-01-18 14:29:14 -0500 received badge  Famous Question (source)
2022-12-09 19:53:52 -0500 commented answer supported file format for rviz2 besides .dae?

the messages you quoted from the log are not referring to missing / unfound meshes and can safely be ignored in my exper

2022-12-09 12:12:05 -0500 received badge  Rapid Responder (source)
2022-12-09 12:12:05 -0500 answered a question Force rviz2 to use eGPU

Assuming your drivers are installed correctly, you can (in Ubuntu at least) right click on the terminal icon from the ap

2022-12-09 12:03:43 -0500 answered a question supported file format for rviz2 besides .dae?

A binary .stl should certainly work. I do not believe RViz supports obj (unless that's changed somewhat recently). Gaze