From bf824ec84913e0e170609e2adde84f238f681569 Mon Sep 17 00:00:00 2001 From: marqrazz Date: Tue, 29 Jun 2021 16:19:18 -0600 Subject: [PATCH 1/3] cleaned up move_group and moveit_cpp tutorials --- .../launch/move_group.launch.py | 2 +- .../src/move_group_interface_tutorial.cpp | 24 ++--- doc/moveit_cpp/images/moveitcpp_plan5.png | Bin 0 -> 67435 bytes .../launch/moveit_cpp_tutorial.launch.py | 3 +- .../launch/moveit_cpp_tutorial.rviz | 2 +- doc/moveit_cpp/src/moveit_cpp_tutorial.cpp | 91 ++++++++++++++---- doc/quickstart_in_rviz/launch/demo.launch.py | 2 +- 7 files changed, 90 insertions(+), 34 deletions(-) create mode 100644 doc/moveit_cpp/images/moveitcpp_plan5.png diff --git a/doc/move_group_interface/launch/move_group.launch.py b/doc/move_group_interface/launch/move_group.launch.py index 242d9f229d..3b9360a076 100644 --- a/doc/move_group_interface/launch/move_group.launch.py +++ b/doc/move_group_interface/launch/move_group.launch.py @@ -159,7 +159,7 @@ def generate_launch_description(): # Load controllers load_controllers = [] - for controller in ["panda_arm_controller", "joint_state_controller"]: + for controller in ["panda_arm_controller", "panda_hand_controller", "joint_state_broadcaster"]: load_controllers += [ ExecuteProcess( cmd=["ros2 run controller_manager spawner.py {}".format(controller)], diff --git a/doc/move_group_interface/src/move_group_interface_tutorial.cpp b/doc/move_group_interface/src/move_group_interface_tutorial.cpp index f7044c0db1..fbd741a776 100644 --- a/doc/move_group_interface/src/move_group_interface_tutorial.cpp +++ b/doc/move_group_interface/src/move_group_interface_tutorial.cpp @@ -114,7 +114,7 @@ int main(int argc, char** argv) // RViz provides many types of markers, in this demo we will use text, cylinders, and spheres Eigen::Isometry3d text_pose = Eigen::Isometry3d::Identity(); text_pose.translation().z() = 1.0; - visual_tools.publishText(text_pose, "MoveGroupInterface Demo", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "MoveGroupInterface_Demo", rvt::WHITE, rvt::XLARGE); // Batch publishing is used to reduce the number of messages being sent to RViz for large visualizations visual_tools.trigger(); @@ -165,7 +165,7 @@ int main(int argc, char** argv) // We can also visualize the plan as a line with markers in RViz. RCLCPP_INFO(LOGGER, "Visualizing plan 1 as trajectory line"); visual_tools.publishAxisLabeled(target_pose1, "pose1"); - visual_tools.publishText(text_pose, "Pose Goal", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Pose_Goal", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(my_plan.trajectory_, joint_model_group); */ visual_tools.trigger(); prompt("Press 'Enter' to continue the demo"); @@ -215,7 +215,7 @@ int main(int argc, char** argv) // Visualize the plan in RViz visual_tools.deleteAllMarkers(); - visual_tools.publishText(text_pose, "Joint Space Goal", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Joint_Space_Goal", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(my_plan.trajectory_, joint_model_group); */ visual_tools.trigger(); prompt("Press 'Enter' to continue the demo"); @@ -285,7 +285,7 @@ int main(int argc, char** argv) visual_tools.deleteAllMarkers(); visual_tools.publishAxisLabeled(start_pose2, "start"); visual_tools.publishAxisLabeled(target_pose1, "goal"); - visual_tools.publishText(text_pose, "Constrained Goal", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Constrained_Goal", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(my_plan.trajectory_, joint_model_group); */ visual_tools.trigger(); prompt("Press 'Enter' to continue the demo"); @@ -329,7 +329,7 @@ int main(int argc, char** argv) // Visualize the plan in RViz visual_tools.deleteAllMarkers(); - visual_tools.publishText(text_pose, "Cartesian Path", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Cartesian_Path", rvt::WHITE, rvt::XLARGE); visual_tools.publishPath(waypoints, rvt::LIME_GREEN, rvt::SMALL); for (std::size_t i = 0; i < waypoints.size(); ++i) visual_tools.publishAxisLabeled(waypoints[i], "pt" + std::to_string(i), rvt::SMALL); @@ -362,7 +362,7 @@ int main(int argc, char** argv) RCLCPP_INFO(LOGGER, "Visualizing plan 5 (with no obstacles) %s", success ? "" : "FAILED"); visual_tools.deleteAllMarkers(); - visual_tools.publishText(text_pose, "Clear Goal", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Clear_Goal", rvt::WHITE, rvt::XLARGE); visual_tools.publishAxisLabeled(another_pose, "goal"); /* visual_tools.publishTrajectoryLine(my_plan.trajectory_, joint_model_group); */ visual_tools.trigger(); @@ -409,7 +409,7 @@ int main(int argc, char** argv) planning_scene_interface.addCollisionObjects(collision_objects); // Show text in RViz of status and wait for MoveGroup to receive and process the collision object message - visual_tools.publishText(text_pose, "Add object", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Add_object", rvt::WHITE, rvt::XLARGE); visual_tools.trigger(); prompt("Press 'Enter' to continue once the collision object appears in RViz"); /* visual_tools.prompt("Press 'next' in the RvizVisualToolsGui window to once the collision object appears in RViz"); */ @@ -417,7 +417,7 @@ int main(int argc, char** argv) // Now when we plan a trajectory it will avoid the obstacle success = (move_group.plan(my_plan) == moveit::planning_interface::MoveItErrorCode::SUCCESS); RCLCPP_INFO(LOGGER, "Visualizing plan 6 (pose goal move around cuboid) %s", success ? "" : "FAILED"); - visual_tools.publishText(text_pose, "Obstacle Goal", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Obstacle_Goal", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(my_plan.trajectory_, joint_model_group); */ visual_tools.trigger(); prompt("Press 'Enter' to continue once the plan is complete"); @@ -464,7 +464,7 @@ int main(int argc, char** argv) touch_links.push_back("panda_leftfinger"); move_group.attachObject(object_to_attach.id, "panda_hand", touch_links); - visual_tools.publishText(text_pose, "Object attached to robot", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Object_attached_to_robot", rvt::WHITE, rvt::XLARGE); visual_tools.trigger(); /* Wait for MoveGroup to receive and process the attached collision object message */ @@ -494,7 +494,7 @@ int main(int argc, char** argv) // Show text in RViz of status visual_tools.deleteAllMarkers(); - visual_tools.publishText(text_pose, "Object detached from robot", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Object_detached_from_robot", rvt::WHITE, rvt::XLARGE); visual_tools.trigger(); /* Wait for MoveGroup to receive and process the attached collision object message */ @@ -509,7 +509,7 @@ int main(int argc, char** argv) planning_scene_interface.removeCollisionObjects(object_ids); // Show text in RViz of status - visual_tools.publishText(text_pose, "Objects removed", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "Objects_removed", rvt::WHITE, rvt::XLARGE); visual_tools.trigger(); /* Wait for MoveGroup to receive and process the attached collision object message */ @@ -517,6 +517,8 @@ int main(int argc, char** argv) /* visual_tools.prompt("Press 'next' in the RvizVisualToolsGui window to once the collision object disapears"); */ // END_TUTORIAL + visual_tools.deleteAllMarkers(); + visual_tools.trigger(); rclcpp::shutdown(); return 0; diff --git a/doc/moveit_cpp/images/moveitcpp_plan5.png b/doc/moveit_cpp/images/moveitcpp_plan5.png new file mode 100644 index 0000000000000000000000000000000000000000..b7914a5aba220f40a2e28b7439c30c54f264d763 GIT binary patch literal 67435 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
qx#6W8{&N$#PlG3f{l!b4JyWjRmbeFq0nrT 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 + auto moveit_cpp_ptr = std::make_shared(node); moveit_cpp_ptr->getPlanningSceneMonitor()->providePlanningSceneService(); auto planning_components = - std::make_shared(PLANNING_GROUP, moveit_cpp_ptr); + std::make_shared(PLANNING_GROUP, moveit_cpp_ptr); auto robot_model_ptr = moveit_cpp_ptr->getRobotModel(); auto robot_start_state = planning_components->getStartState(); auto joint_model_group_ptr = robot_model_ptr->getJointModelGroup(PLANNING_GROUP); @@ -78,7 +78,7 @@ int main(int argc, char** argv) Eigen::Isometry3d text_pose = Eigen::Isometry3d::Identity(); text_pose.translation().z() = 1.75; - visual_tools.publishText(text_pose, "MoveItCpp Demo", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "MoveItCpp_Demo", rvt::WHITE, rvt::XLARGE); visual_tools.trigger(); // Start the demo @@ -115,10 +115,9 @@ int main(int argc, char** argv) { // Visualize the start pose in Rviz visual_tools.publishAxisLabeled(robot_start_state->getGlobalLinkTransform("panda_link8"), "start_pose"); - visual_tools.publishText(text_pose, "Start Pose", rvt::WHITE, rvt::XLARGE); // Visualize the goal pose in Rviz visual_tools.publishAxisLabeled(target_pose1.pose, "target_pose"); - visual_tools.publishText(text_pose, "Goal Pose", rvt::WHITE, rvt::XLARGE); + visual_tools.publishText(text_pose, "setStartStateToCurrentState", rvt::WHITE, rvt::XLARGE); // Visualize the trajectory in Rviz /* visual_tools.publishTrajectoryLine(plan_solution1.trajectory, joint_model_group_ptr); */ visual_tools.trigger(); @@ -134,9 +133,10 @@ int main(int argc, char** argv) // :align: center // // Start the next plan - visual_tools.deleteAllMarkers(); prompt("Press 'Enter' to continue the demo"); /* visual_tools.prompt("Press 'next' in the RvizVisualToolsGui window to continue the demo"); */ + visual_tools.deleteAllMarkers(); + visual_tools.trigger(); // Plan #2 // ^^^^^^^ @@ -161,10 +161,9 @@ int main(int argc, char** argv) moveit::core::RobotState robot_state(robot_model_ptr); moveit::core::robotStateMsgToRobotState(plan_solution2.start_state, robot_state); - visual_tools.publishText(text_pose, "Start Pose", rvt::WHITE, rvt::XLARGE); - visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); - visual_tools.publishText(text_pose, "Goal Pose", rvt::WHITE, rvt::XLARGE); + visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); visual_tools.publishAxisLabeled(target_pose1.pose, "target_pose"); + visual_tools.publishText(text_pose, "moveit::core::RobotState_Start_State", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(plan_solution2.trajectory, joint_model_group_ptr); */ visual_tools.trigger(); @@ -179,9 +178,10 @@ int main(int argc, char** argv) // :align: center // // Start the next plan - visual_tools.deleteAllMarkers(); prompt("Press 'Enter' to continue the demo"); /* visual_tools.prompt("Press 'next' in the RvizVisualToolsGui window to continue the demo"); */ + visual_tools.deleteAllMarkers(); + visual_tools.trigger(); // Plan #3 // ^^^^^^^ @@ -206,10 +206,9 @@ int main(int argc, char** argv) moveit::core::RobotState robot_state(robot_model_ptr); moveit::core::robotStateMsgToRobotState(plan_solution3.start_state, robot_state); - visual_tools.publishText(text_pose, "Start Pose", rvt::WHITE, rvt::XLARGE); - visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); - visual_tools.publishText(text_pose, "Goal Pose", rvt::WHITE, rvt::XLARGE); + visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); visual_tools.publishAxisLabeled(target_pose2, "target_pose"); + visual_tools.publishText(text_pose, "moveit::core::RobotState_Goal_Pose", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(plan_solution3.trajectory, joint_model_group_ptr); */ visual_tools.trigger(); @@ -224,9 +223,10 @@ int main(int argc, char** argv) // :align: center // // Start the next plan - visual_tools.deleteAllMarkers(); prompt("Press 'Enter' to continue the demo"); /* visual_tools.prompt("Press 'next' in the RvizVisualToolsGui window to continue the demo"); */ + visual_tools.deleteAllMarkers(); + visual_tools.trigger(); // Plan #4 // ^^^^^^^ @@ -249,10 +249,9 @@ int main(int argc, char** argv) moveit::core::RobotState robot_state(robot_model_ptr); moveit::core::robotStateMsgToRobotState(plan_solution4.start_state, robot_state); - visual_tools.publishText(text_pose, "Start Pose", rvt::WHITE, rvt::XLARGE); - visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); - visual_tools.publishText(text_pose, "Goal Pose", rvt::WHITE, rvt::XLARGE); + visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); visual_tools.publishAxisLabeled(robot_start_state->getGlobalLinkTransform("panda_link8"), "target_pose"); + visual_tools.publishText(text_pose, "Goal_Pose_From_Named_State", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(plan_solution4.trajectory, joint_model_group_ptr); */ visual_tools.trigger(); @@ -266,10 +265,66 @@ int main(int argc, char** argv) // :width: 250pt // :align: center // - // END_TUTORIAL + // Start the next plan + prompt("Press 'Enter' to continue the demo"); + /* visual_tools.prompt("Press 'next' in the RvizVisualToolsGui window to continue the demo"); */ visual_tools.deleteAllMarkers(); + visual_tools.trigger(); + + // Plan #5 + // ^^^^^^^ + // + // We can also generate motion plans around objects in the collision scene. + // + // First we create the collision object + moveit_msgs::msg::CollisionObject collision_object; + collision_object.header.frame_id = "panda_link0"; + collision_object.id = "box"; + + shape_msgs::msg::SolidPrimitive box; + box.type = box.BOX; + box.dimensions = { 0.1, 0.4, 0.1 }; + + geometry_msgs::msg::Pose box_pose; + box_pose.position.x = 0.4; + box_pose.position.y = 0.0; + box_pose.position.z = 1.0; + + collision_object.primitives.push_back(box); + collision_object.primitive_poses.push_back(box_pose); + collision_object.operation = collision_object.ADD; + + // Add object to planning scene + { // Lock PlanningScene + planning_scene_monitor::LockedPlanningSceneRW scene(moveit_cpp_ptr->getPlanningSceneMonitor()); + scene->processCollisionObjectMsg(collision_object); + } // Unlock PlanningScene + planning_components->setStartStateToCurrentState(); + planning_components->setGoal("extended"); + + auto plan_solution5 = planning_components->plan(); + if (plan_solution5) + { + visual_tools.publishText(text_pose, "Planning_Around_Collision_Object", rvt::WHITE, rvt::XLARGE); + /* visual_tools.publishTrajectoryLine(plan_solution5.trajectory, joint_model_group_ptr); */ + visual_tools.trigger(); + + /* Uncomment if you want to execute the plan */ + /* planning_components->execute(); // Execute the plan */ + } + + // Plan #5 visualization: + // + // .. image:: images/moveitcpp_plan5.png + // :width: 250pt + // :align: center + // + // END_TUTORIAL prompt("Press 'Enter' to exit the demo"); /* visual_tools.prompt("Press 'next' to end the demo"); */ + visual_tools.deleteAllMarkers(); + visual_tools.trigger(); + RCLCPP_INFO(LOGGER, "Shutting down."); rclcpp::shutdown(); diff --git a/doc/quickstart_in_rviz/launch/demo.launch.py b/doc/quickstart_in_rviz/launch/demo.launch.py index 55090b6790..6f82a23af3 100644 --- a/doc/quickstart_in_rviz/launch/demo.launch.py +++ b/doc/quickstart_in_rviz/launch/demo.launch.py @@ -183,7 +183,7 @@ def generate_launch_description(): # Load controllers load_controllers = [] - for controller in ["panda_arm_controller", "joint_state_controller"]: + for controller in ["panda_arm_controller", "panda_hand_controller", "joint_state_broadcaster"]: load_controllers += [ ExecuteProcess( cmd=["ros2 run controller_manager spawner.py {}".format(controller)], From b1f512aa1daa6842ae8c28d97d2481c2e6402329 Mon Sep 17 00:00:00 2001 From: marqrazz Date: Tue, 29 Jun 2021 16:25:46 -0600 Subject: [PATCH 2/3] run pre-commit --- doc/move_group_interface/launch/move_group.launch.py | 6 +++++- doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py | 6 +++++- doc/moveit_cpp/src/moveit_cpp_tutorial.cpp | 10 ++++------ doc/quickstart_in_rviz/launch/demo.launch.py | 6 +++++- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/doc/move_group_interface/launch/move_group.launch.py b/doc/move_group_interface/launch/move_group.launch.py index 3b9360a076..8cb68440e7 100644 --- a/doc/move_group_interface/launch/move_group.launch.py +++ b/doc/move_group_interface/launch/move_group.launch.py @@ -159,7 +159,11 @@ def generate_launch_description(): # Load controllers load_controllers = [] - for controller in ["panda_arm_controller", "panda_hand_controller", "joint_state_broadcaster"]: + for controller in [ + "panda_arm_controller", + "panda_hand_controller", + "joint_state_broadcaster", + ]: load_controllers += [ ExecuteProcess( cmd=["ros2 run controller_manager spawner.py {}".format(controller)], diff --git a/doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py b/doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py index 72fc55ef8b..3512884b6d 100644 --- a/doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py +++ b/doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py @@ -143,7 +143,11 @@ def generate_launch_description(): # Load controllers load_controllers = [] - for controller in ["panda_arm_controller", "panda_hand_controller", "joint_state_broadcaster"]: + for controller in [ + "panda_arm_controller", + "panda_hand_controller", + "joint_state_broadcaster", + ]: load_controllers += [ ExecuteProcess( cmd=["ros2 run controller_manager spawner.py {}".format(controller)], diff --git a/doc/moveit_cpp/src/moveit_cpp_tutorial.cpp b/doc/moveit_cpp/src/moveit_cpp_tutorial.cpp index d0b917bdd8..3dc1c4b0f8 100644 --- a/doc/moveit_cpp/src/moveit_cpp_tutorial.cpp +++ b/doc/moveit_cpp/src/moveit_cpp_tutorial.cpp @@ -59,8 +59,7 @@ int main(int argc, char** argv) auto moveit_cpp_ptr = std::make_shared(node); moveit_cpp_ptr->getPlanningSceneMonitor()->providePlanningSceneService(); - auto planning_components = - std::make_shared(PLANNING_GROUP, moveit_cpp_ptr); + auto planning_components = std::make_shared(PLANNING_GROUP, moveit_cpp_ptr); auto robot_model_ptr = moveit_cpp_ptr->getRobotModel(); auto robot_start_state = planning_components->getStartState(); auto joint_model_group_ptr = robot_model_ptr->getJointModelGroup(PLANNING_GROUP); @@ -161,7 +160,7 @@ int main(int argc, char** argv) moveit::core::RobotState robot_state(robot_model_ptr); moveit::core::robotStateMsgToRobotState(plan_solution2.start_state, robot_state); - visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); + visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); visual_tools.publishAxisLabeled(target_pose1.pose, "target_pose"); visual_tools.publishText(text_pose, "moveit::core::RobotState_Start_State", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(plan_solution2.trajectory, joint_model_group_ptr); */ @@ -206,7 +205,7 @@ int main(int argc, char** argv) moveit::core::RobotState robot_state(robot_model_ptr); moveit::core::robotStateMsgToRobotState(plan_solution3.start_state, robot_state); - visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); + visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); visual_tools.publishAxisLabeled(target_pose2, "target_pose"); visual_tools.publishText(text_pose, "moveit::core::RobotState_Goal_Pose", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(plan_solution3.trajectory, joint_model_group_ptr); */ @@ -249,7 +248,7 @@ int main(int argc, char** argv) moveit::core::RobotState robot_state(robot_model_ptr); moveit::core::robotStateMsgToRobotState(plan_solution4.start_state, robot_state); - visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); + visual_tools.publishAxisLabeled(robot_state.getGlobalLinkTransform("panda_link8"), "start_pose"); visual_tools.publishAxisLabeled(robot_start_state->getGlobalLinkTransform("panda_link8"), "target_pose"); visual_tools.publishText(text_pose, "Goal_Pose_From_Named_State", rvt::WHITE, rvt::XLARGE); /* visual_tools.publishTrajectoryLine(plan_solution4.trajectory, joint_model_group_ptr); */ @@ -324,7 +323,6 @@ int main(int argc, char** argv) /* visual_tools.prompt("Press 'next' to end the demo"); */ visual_tools.deleteAllMarkers(); visual_tools.trigger(); - RCLCPP_INFO(LOGGER, "Shutting down."); rclcpp::shutdown(); diff --git a/doc/quickstart_in_rviz/launch/demo.launch.py b/doc/quickstart_in_rviz/launch/demo.launch.py index 6f82a23af3..890c8f64af 100644 --- a/doc/quickstart_in_rviz/launch/demo.launch.py +++ b/doc/quickstart_in_rviz/launch/demo.launch.py @@ -183,7 +183,11 @@ def generate_launch_description(): # Load controllers load_controllers = [] - for controller in ["panda_arm_controller", "panda_hand_controller", "joint_state_broadcaster"]: + for controller in [ + "panda_arm_controller", + "panda_hand_controller", + "joint_state_broadcaster", + ]: load_controllers += [ ExecuteProcess( cmd=["ros2 run controller_manager spawner.py {}".format(controller)], From 79bfcac941feed134a5442da58a1f243514a11d9 Mon Sep 17 00:00:00 2001 From: marqrazz Date: Thu, 1 Jul 2021 15:44:14 -0600 Subject: [PATCH 3/3] revert back to joint_state_controller --- doc/move_group_interface/launch/move_group.launch.py | 2 +- doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py | 2 +- doc/quickstart_in_rviz/launch/demo.launch.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/move_group_interface/launch/move_group.launch.py b/doc/move_group_interface/launch/move_group.launch.py index 8cb68440e7..d425eecbc1 100644 --- a/doc/move_group_interface/launch/move_group.launch.py +++ b/doc/move_group_interface/launch/move_group.launch.py @@ -162,7 +162,7 @@ def generate_launch_description(): for controller in [ "panda_arm_controller", "panda_hand_controller", - "joint_state_broadcaster", + "joint_state_controller", ]: load_controllers += [ ExecuteProcess( diff --git a/doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py b/doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py index 3512884b6d..062b29c0d6 100644 --- a/doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py +++ b/doc/moveit_cpp/launch/moveit_cpp_tutorial.launch.py @@ -146,7 +146,7 @@ def generate_launch_description(): for controller in [ "panda_arm_controller", "panda_hand_controller", - "joint_state_broadcaster", + "joint_state_controller", ]: load_controllers += [ ExecuteProcess( diff --git a/doc/quickstart_in_rviz/launch/demo.launch.py b/doc/quickstart_in_rviz/launch/demo.launch.py index 890c8f64af..fb079864dc 100644 --- a/doc/quickstart_in_rviz/launch/demo.launch.py +++ b/doc/quickstart_in_rviz/launch/demo.launch.py @@ -186,7 +186,7 @@ def generate_launch_description(): for controller in [ "panda_arm_controller", "panda_hand_controller", - "joint_state_broadcaster", + "joint_state_controller", ]: load_controllers += [ ExecuteProcess(