Description
This is about ROS2 Action's potential new feature. According to ros2/ros2#583 (comment) this repo is the right place, although it's more about user (developer) interface so I'm not entirely sure if this repo is appropriate. Please let me know if there's a better place, or feel free to transfer if possible.
Problem scope
Sending an Action goal involves a bit demanding process. This makes experimenting or debugging a process that entails Action difficult, probably far more challenging than ROS Topic and Service related processes.
Related concern is found in ros/actionlib#44 (comment), which I agree from my experience in (fast-paced) a startup where Action was eliminated by Service even for the cases Action was more semantically suitable. Though the referenced post and my anecdote are from ROS1, having seen Action's user interface up until Humble, my view remains the same in ROS2 so far.
Personal review of existing options:
- It's great that we have a CLI
ros2 action send_goal
, it's useful for simpler Goal structure. But as seen in answers.ros.org#416441, it is difficult to use for a goal with complexed structure. - Both
rclcpp
andrclpy
:- require a single line to instantiate an Action api object, which is awesome.
- do require (? sorry I haven't verified it these are mandatory or not) 3 callbacks (goal_response, feedback, result) to be written. While this granurality gives applications a great flexibility, IMHO it understandably raises hurdle not just for quick experimenting, proto-typing, but also non-expriment coding (just my impression).
Problem breakdown
- Inputting the concrete values to a (complexed) goal definition is not easy. It's inherently a demanding task, so it's not a fault of ROS2 designers IMO.
- Callbacks: In some/many prototyping usecases, no special handling for any of Action's callbacks might be needed.
Feature description
Suggested approaches
(Just initial, rough suggestions. Open for discussion)
- Make typing goal easier. No special grammar like CLI does (that use both square and curly brackets).
- Have default callbacks behavior (as bash CLI already does), if it's not done yet (sorry I haven't verified this yet).
Implementation considerations
axclient
for ROS1 was a kind of popular tool (e.g. [noetic] Where is axclient.py ? ros/actionlib#167, answers.ros.org#399476) that provided GUI and made prototyping in sending Action goals much easier, but I can't find an equivalent in ROS2.- Improve CLI to get rid of the need to use multiple brackets?