Why is Rviz unable to identify any set of controllers that can actuate the specified joints?
To start, I'm using ROS noetic with Gazebo11 on a dual boot Ubuntu 20.04 (kernel 5.8.0-59-generic) - Windows 10 system. I'm running all of my ROS related stuff on Ubuntu of course. I want to have MoveIt connected with Gazebo and have built my own .urdf with SolidWorks to use with the MoveIt setup assistant. Then, to have Gazebo ROS control, I followed this tutorial "http://gazebosim.org/tutorials/?tut=r...". The file that connects everything together is called "demo_gazebo.launch" which is located in my config directory generated by the MoveIt setup assistant. However, when I launch this file, plan and execute a movement, I get the following errors:
[ERROR] [1625248281.179031173, 12.602000000]: Unable to identify any set of controllers that can actuate the specified joints: [ accessor_rail arm_base forearm palm shoulder upper_arm wrist ]
[ERROR] [1625248281.179086593, 12.602000000]: Known controllers and their joints:
[ERROR] [1625248281.179182223, 12.602000000]: Apparently trajectory initialization failed
==================================================================================================
Here is everything upon launching, planning and executing a movement:
bobnickelson@bobnickelson-MS-7B79:~$ roslaunch simulation_final_config demo_gazebo.launch
... logging to /home/bobnickelson/.ros/log/273a7810-db61-11eb-a90e-c95419d5660a/roslaunch-bobnickelson-MS-7B79-5830.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://bobnickelson-MS-7B79:40957/
SUMMARY
========
PARAMETERS
* /gazebo/enable_ros_network: True
* /joint_state_publisher/source_list: ['/joint_states']
* /move_group/allow_trajectory_execution: True
* /move_group/capabilities:
* /move_group/default_planning_pipeline: ompl
* /move_group/disable_capabilities:
* /move_group/jiggle_fraction: 0.05
* /move_group/max_range: 5.0
* /move_group/max_safe_path_cost: 1
* /move_group/moveit_controller_manager: moveit_simple_con...
* /move_group/moveit_manage_controllers: True
* /move_group/octomap_resolution: 0.025
* /move_group/planning_pipelines/chomp/collision_clearence: 0.2
* /move_group/planning_pipelines/chomp/collision_threshold: 0.07
* /move_group/planning_pipelines/chomp/enable_failure_recovery: True
* /move_group/planning_pipelines/chomp/joint_update_limit: 0.1
* /move_group/planning_pipelines/chomp/learning_rate: 0.01
* /move_group/planning_pipelines/chomp/max_iterations: 200
* /move_group/planning_pipelines/chomp/max_iterations_after_collision_free: 5
* /move_group/planning_pipelines/chomp/max_recovery_attempts: 5
* /move_group/planning_pipelines/chomp/obstacle_cost_weight: 1.0
* /move_group/planning_pipelines/chomp/planning_plugin: chomp_interface/C...
* /move_group/planning_pipelines/chomp/planning_time_limit: 10.0
* /move_group/planning_pipelines/chomp/pseudo_inverse_ridge_factor: 1e-4
* /move_group/planning_pipelines/chomp/request_adapters: default_planner_r...
* /move_group/planning_pipelines/chomp/ridge_factor: 0.01
* /move_group/planning_pipelines/chomp/smoothness_cost_acceleration: 1.0
* /move_group/planning_pipelines/chomp/smoothness_cost_jerk: 0.0
* /move_group/planning_pipelines/chomp/smoothness_cost_velocity: 0.0
* /move_group/planning_pipelines/chomp/smoothness_cost_weight: 0.1
* /move_group/planning_pipelines/chomp/start_state_max_bounds_error: 0.1
* /move_group/planning_pipelines/chomp/use_pseudo_inverse: False
* /move_group/planning_pipelines/chomp/use_stochastic_descent: True
* /move_group/planning_pipelines/ompl/gripper/default_planner_config: RRT
* /move_group/planning_pipelines/ompl/gripper/longest_valid_segment_fraction: 0.005
* /move_group/planning_pipelines/ompl/gripper/planner_configs: ['AnytimePathShor...
* /move_group/planning_pipelines/ompl/gripper/projection_evaluator: joints(midfinger_...
* /move_group/planning_pipelines/ompl/manipulator/default_planner_config: RRT
* /move_group/planning_pipelines/ompl/manipulator/longest_valid_segment_fraction: 0.005
* /move_group/planning_pipelines/ompl/manipulator/planner_configs: ['AnytimePathShor...
* /move_group/planning_pipelines/ompl/manipulator/projection_evaluator: joints(accessor_r...
* /move_group/planning_pipelines/ompl/planner_configs/AnytimePathShortening/hybridize: True
* /move_group/planning_pipelines/ompl/planner_configs/AnytimePathShortening/max_hybrid_paths: 24
* /move_group/planning_pipelines/ompl/planner_configs/AnytimePathShortening/num_planners: 4
* /move_group/planning_pipelines/ompl/planner_configs/AnytimePathShortening/planners:
* /move_group/planning_pipelines/ompl/planner_configs/AnytimePathShortening/shortcut: True
* /move_group/planning_pipelines/ompl/planner_configs/AnytimePathShortening/type: geometric::Anytim...
* /move_group/planning_pipelines/ompl/planner_configs/BFMT/balanced: 0
* /move_group/planning_pipelines/ompl/planner_configs/BFMT/cache_cc: 1
* /move_group/planning_pipelines/ompl/planner_configs/BFMT/extended_fmt: 1
* /move_group/planning_pipelines/ompl/planner_configs/BFMT/heuristics: 1
* /move_group/planning_pipelines/ompl/planner_configs/BFMT/nearest_k: 1
* /move_group ...
Just a quick comment:
the error is not printed by RViz.
RViz does not control anything, nor do any motion planning. It's purely a visualisation tool.
MoveIt does that, and it's MoveIt which prints that error.
It may be informative to add the following to your
.bashrc
and open a new terminal:then run your
.launch
file again.Logging lines should now be clearly attributed to the node they are emitted by.
Is this a commercial robot? If the vendor provides a ros demo, you really want to start with that. To make it work, there are low-level libraries you need to interface between ros and whatever proprietary API the robot hardware uses.
If you have no hardware and are just learning, you should start with something like the
turtlebot3
demo. Seehttp://wiki.ros.org/turtlebot3_simulations
@gvdhoorn Thanks for the tip.
@Mike Scheutzow It's just a robot I made to learn. Would it really be beneficial for me to use a tutorial bot over my own work? I wanted to do the process of setting up and building everything myself. Also, I plan on making a similar model in real life and have some of the hardware already.
@CM Yes, you should start with an existing demo of a robot of similar type. However, my recommendation of
turtlebot3
is not a good one if you want to learn about robot arms. The ros stack to control a robot-with-wheels is quite different from one to control a robot-arm. I don't have a gazebo arm demo to suggest for you; hopefully someone else can recommend one.The ros tutorials seem to like to use the PR2 Robot Arm, so maybe that's a vote of confidence? The wiki page does not show it, but I do see a noetic-devel branch for the gazebo piece. I have never personally tried to run these packages.