API review
Proposer: your name here
Present at review:
- List reviewers
Question / concerns / comments
Melonee
The tutorials seems good. Although I might have people bring up the pr2_dashboard and look at the controllers in the diagnostics. I have john add a diagnostics aggregator to the sim for that reason.
Bhaskara
Overall pretty clear.
- Tutorial 1
- Show entire manifest
- Tutorial 3
- Namespace changed from my_controller to controller
- Wasn't able to get reload_controllers service to work: had to actually restart gazebo
- Tutorial 4
- The comment about the gains setter isn't clear: where is this being included?
- Top description: Clarify role of PID object, e.g., "A PID object simplifies coding controllers based on a standard PID loop (in the previous examples, we manually coded the P term of such a control loop)."
- Tutorial 5
- String is missing a " at the end in ROS_ERROR in cpp file
MyControllerCart class in .h file becomes MyController in .cpp file
- After fixing this, got compilation error about chain_init function not being found: didn't try to debug this further
- Other tutorials that could be useful
- A controller that calls another controller
- A controller that uses a realtime publisher
Conor
- Writing a realtime joint controller
Would suggest the sample does not use the controller namespace Typo:Controller initialization in non-relatime API question - if we can get a controller we can call public methods to start, stop and update - correct? Which of these are actually safe? In the last step, saw alot of rospack warnings, although the controller plugin looked properly registered: [rospack] warning: couldn't find dependency [roslisp] of [hierarchical] [rospack] warning: couldn't find dependency [opencv2] of [image_segmentation] [rospack] warning: couldn't find dependency [cv_bridge] of [image_segmentation] [rospack] warning: couldn't find dependency [opencv2] of [cv_mech_turk] [rospack] warning: couldn't find dependency [roscpp_sessions] of [openraveros] [rospack] warning: couldn't find dependency [rosoct] of [openraveros] [rospack] warning: couldn't find dependency [image_cb_detector] of [pr2_calibration_executive] [rospack] warning: couldn't find dependency [image_cb_detector] of [pr2_calibration_launch] [rospack] warning: couldn't find dependency [rosoct] of [laser_camera_calibration] [rospack] warning: couldn't find dependency [opencv2] of [person_data] [rospack] warning: couldn't find dependency [cv_bridge] of [person_data] [rospack] warning: couldn't find dependency [pr_msgs] of [web_object_menu] [rospack] warning: couldn't find dependency [rosclj] of [hierarchical_planning] [rospack] warning: couldn't find dependency [rosclj] of [clj_pr2] [rospack] warning: couldn't find dependency [roslisp] of [rosout_db] [rospack] warning: couldn't find dependency [roslisp] of [people_aware_nav] [rospack] warning: couldn't find dependency [turtlesim] of [turtle_teleop] [rospack] warning: couldn't find dependency [turtlesim] of [turtle_tf] [rospack] warning: couldn't find dependency [rosoct] of [iir_filters] my_controller_pkg /u/mcgann/ros/ros-pkg/wg-ros-pkg/my_controller_pkg/controller_plugins.xml robot_mechanism_controllers /u/mcgann/ros/ros-pkg/wg-ros-pkg/controllers/robot_mechanism_controllers/controller_plugins.xml pr2_mechanism_controllers /u/mcgann/ros/ros-pkg/wg-ros-pkg/controllers/pr2_mechanism_controllers/controller_plugins.xml ethercat_trigger_controllers /u/mcgann/ros/ros-pkg/wg-ros-pkg/controllers/ethercat_trigger_controllers/controller_plugins.xml experimental_controllers /u/mcgann/ros/ros-pkg/wg-ros-pkg/sandbox/experimental_controllers/controller_plugins.xml trajectory_controllers /u/mcgann/ros/ros-pkg/wg-ros-pkg/sandbox/trajectory_controllers/controller_plugins.xml dmp_motion_controller /u/mcgann/ros/ros-pkg/wg-ros-pkg/sandbox/dmp_motion_controller/controller_plugins.xml joint_qualification_controllers /u/mcgann/ros/ros-pkg/wg-ros-pkg/sandbox/qualification_controllers/joint_qualification_controllers/controller_plugins.xml
- Running a realtime joint controller
Flawless. Cool to see the arm move
- Communicating with a realtime joint controller
On compilation:
- [ 0%] Built target rospack_genmsg_libexe
woah! on line 2 of float64 amplitude
- --- float64 amplitude, there was only one token.
each line needs to have two tokens: the first is the type and the second is the variable name.
Problem turned out to be that copy/paste of srv code included leading spaces which broke the srv generation. The gen_srv should be more robust to this problem. Absent that, the tutorial should get rid of the spaces as a new user might struggle with this.
When trying to run:
mcgann@adw:/wg/adw/mcgann/ros/ros-pkg/wg-ros-pkg/my_controller_pkg$ rosservice call /my_tutorial_controller/set_amplitude 0.1 Unknown service [/my_tutorial_controller/set_amplitude] ERROR: Service [/my_tutorial_controller/set_amplitude] is not available. mcgann@adw:/wg/adw/mcgann/ros/ros-pkg/wg-ros-pkg/my_controller_pkg$
The controller is definitely running as the arm was moving. I observe the following console output from thr running controller: core service [/rosout] found deleting parameter [/my_tutorial_controller/] setting parameter [/my_tutorial_controller/joint_name] setting parameter [/my_tutorial_controller/type] process[my_controller_spawner-1]: started with pid [26358] Failed to handle inbound connection due to socket error: timed out Failed to handle inbound connection due to socket error: timed out Failed to handle inbound connection due to socket error: timed out Failed to handle inbound connection due to socket error: timed out Failed to handle inbound connection due to socket error: timed out
I had not restarted Gazebo prior to doing this as I though the controller had been stopped, and unloaded. But apparently I had to redo from scratch. Granted, the instructions state to do that but I think that either you require the system to not be running or you make it so that the controller has actually been correctly unlaoded such that the new library will be loaded the next time around (prefereable).
Meeting agenda
To be filled out by proposer based on comments gathered during API review period
Conclusion
Stack status change mark change manifest)
Action items that need to be taken.
Major issues that need to be resolved