From ff5dc144d12b3a0a3623e810fbcf92d3f692ec27 Mon Sep 17 00:00:00 2001 From: DarkusAlphaHydranoid <jarbay910@gmail.com> Date: Fri, 26 Jul 2024 11:48:54 +0300 Subject: [PATCH] Fixed pre-commit relavat stuffs (#27) Co-authored-by: CihatAltiparmak <cihataltiparmak1@gmail.com> --- demo/src/pipeline_testbench_main.cpp | 8 +- .../ktopt_planning_context.hpp | 64 ++++++------- src/ktopt_planner_manager.cpp | 22 ++--- src/ktopt_planning_context.cpp | 90 ++++++------------- 4 files changed, 63 insertions(+), 121 deletions(-) diff --git a/demo/src/pipeline_testbench_main.cpp b/demo/src/pipeline_testbench_main.cpp index 382ac11..3ac67f8 100644 --- a/demo/src/pipeline_testbench_main.cpp +++ b/demo/src/pipeline_testbench_main.cpp @@ -322,12 +322,8 @@ int main(int argc, char** argv) RCLCPP_INFO(LOGGER, "Starting Pipeline Testbench example ..."); for (const auto& motion_plan_req : demo.getMotionPlanRequests()) { - demo.planAndVisualize( - { - { "ompl", "RRTConnectkConfigDefault" }, - { "stomp", "stomp" }, - { "drake", ""} }, - motion_plan_req); + demo.planAndVisualize({ { "ompl", "RRTConnectkConfigDefault" }, { "stomp", "stomp" }, { "drake", "" } }, + motion_plan_req); } demo.getVisualTools().prompt("Press 'next' in the RvizVisualToolsGui window to finish the demo"); diff --git a/include/ktopt_interface/ktopt_planning_context.hpp b/include/ktopt_interface/ktopt_planning_context.hpp index f056faa..62745b4 100644 --- a/include/ktopt_interface/ktopt_planning_context.hpp +++ b/include/ktopt_interface/ktopt_planning_context.hpp @@ -16,59 +16,45 @@ namespace ktopt_interface { // declare all namespaces to be used -using drake::multibody::MultibodyPlant; -using drake::multibody::AddMultibodyPlantSceneGraph; using drake::geometry::SceneGraph; -using drake::systems::DiagramBuilder; +using drake::multibody::AddMultibodyPlantSceneGraph; +using drake::multibody::MultibodyPlant; +using drake::multibody::PackageMap; using drake::multibody::Parser; using drake::planning::trajectory_optimization::KinematicTrajectoryOptimization; using drake::solvers::Solve; -using drake::systems::Diagram; using drake::systems::Context; -using drake::multibody::PackageMap; -using Eigen::VectorXd; +using drake::systems::Diagram; +using drake::systems::DiagramBuilder; using Eigen::MatrixXd; +using Eigen::VectorXd; using Joints = std::vector<const moveit::core::JointModel*>; class KTOptPlanningContext : public planning_interface::PlanningContext { public: - KTOptPlanningContext( - const std::string& name, - const std::string& group_name, - const ktopt_interface::Params& params); - - void solve( - planning_interface::MotionPlanResponse& res) override; - void solve( - planning_interface::MotionPlanDetailedResponse& res) override; + KTOptPlanningContext(const std::string& name, const std::string& group_name, const ktopt_interface::Params& params); - bool terminate() override; - void clear() override; + void solve(planning_interface::MotionPlanResponse& res) override; + void solve(planning_interface::MotionPlanDetailedResponse& res) override; - void setRobotDescription(std::string robot_description); - VectorXd toDrakePositions( - const moveit::core::RobotState& state, - const Joints& joints); - void setJointPositions( - const VectorXd& values, - const Joints& joints, - moveit::core::RobotState& state); - void setJointVelocities( - const VectorXd& values, - const Joints& joints, - moveit::core::RobotState& state); + bool terminate() override; + void clear() override; + void setRobotDescription(std::string robot_description); + VectorXd toDrakePositions(const moveit::core::RobotState& state, const Joints& joints); + void setJointPositions(const VectorXd& values, const Joints& joints, moveit::core::RobotState& state); + void setJointVelocities(const VectorXd& values, const Joints& joints, moveit::core::RobotState& state); private: - const ktopt_interface::Params params_; - std::string robot_description_; - - // drake related variables - SceneGraph<double>* scene_graph_{}; - MultibodyPlant<double>* plant_{}; - std::unique_ptr<Context<double>> diagram_context_; - Context<double>* plant_context_; - VectorXd nominal_q_; + const ktopt_interface::Params params_; + std::string robot_description_; + + // drake related variables + SceneGraph<double>* scene_graph_{}; + MultibodyPlant<double>* plant_{}; + std::unique_ptr<Context<double>> diagram_context_; + Context<double>* plant_context_; + VectorXd nominal_q_; }; -} // namespace ktopt_interface +} // namespace ktopt_interface diff --git a/src/ktopt_planner_manager.cpp b/src/ktopt_planner_manager.cpp index 554710f..7b735cb 100644 --- a/src/ktopt_planner_manager.cpp +++ b/src/ktopt_planner_manager.cpp @@ -31,24 +31,24 @@ class KTOptPlannerManager : public planning_interface::PlannerManager node_ = node; param_listener_ = std::make_shared<ktopt_interface::ParamListener>(node, parameter_namespace); - - // set QoS to transient local to get messages that have already been published - // (if robot state publisher starts before planner) + // set QoS to transient local to get messages that have already been published + // (if robot state publisher starts before planner) robot_description_subscriber_ = node_->create_subscription<std_msgs::msg::String>( - "robot_description", rclcpp::QoS(1).transient_local(), [this](const std_msgs::msg::String::SharedPtr msg){ - if (robot_description_.empty()) - { - robot_description_ = msg->data; - RCLCPP_INFO(getLogger(), "Robot description set"); - } - }); + "robot_description", rclcpp::QoS(1).transient_local(), [this](const std_msgs::msg::String::SharedPtr msg) { + if (robot_description_.empty()) + { + robot_description_ = msg->data; + RCLCPP_INFO(getLogger(), "Robot description set"); + } + }); RCLCPP_INFO(getLogger(), "KTOpt planner manager initialized!"); return true; } bool canServiceRequest(const planning_interface::MotionPlanRequest& req) const override { - if(robot_description_.empty()){ + if (robot_description_.empty()) + { RCLCPP_ERROR(getLogger(), "Robot description is empty, do you have a robot state publisher running?"); return false; } diff --git a/src/ktopt_planning_context.cpp b/src/ktopt_planning_context.cpp index 4f4783a..b5e08b6 100644 --- a/src/ktopt_planning_context.cpp +++ b/src/ktopt_planning_context.cpp @@ -15,10 +15,8 @@ rclcpp::Logger getLogger() } } // namespace -KTOptPlanningContext::KTOptPlanningContext( - const std::string& name, - const std::string& group_name, - const ktopt_interface::Params& params) +KTOptPlanningContext::KTOptPlanningContext(const std::string& name, const std::string& group_name, + const ktopt_interface::Params& params) : planning_interface::PlanningContext(name, group_name), params_(params) { // Do some drake initialization may be @@ -33,9 +31,7 @@ void KTOptPlanningContext::solve(planning_interface::MotionPlanDetailedResponse& void KTOptPlanningContext::solve(planning_interface::MotionPlanResponse& res) { - RCLCPP_INFO(getLogger(), - "Setting up and solving optimization problem ..." - ); + RCLCPP_INFO(getLogger(), "Setting up and solving optimization problem ..."); // preliminary house keeping const auto time_start = std::chrono::steady_clock::now(); res.planner_id = std::string("ktopt"); @@ -43,20 +39,15 @@ void KTOptPlanningContext::solve(planning_interface::MotionPlanResponse& res) // Retrieve motion plan request const auto& req = getMotionPlanRequest(); - const moveit::core::RobotState start_state( - *getPlanningScene()->getCurrentStateUpdated( - req.start_state)); - const auto group = getPlanningScene()->getRobotModel()->getJointModelGroup( - getGroupName()); - RCLCPP_INFO_STREAM(getLogger(), - "Planning for group" - << getGroupName()); + const moveit::core::RobotState start_state(*getPlanningScene()->getCurrentStateUpdated(req.start_state)); + const auto group = getPlanningScene()->getRobotModel()->getJointModelGroup(getGroupName()); + RCLCPP_INFO_STREAM(getLogger(), "Planning for group" << getGroupName()); const auto& joints = group->getActiveJointModels(); // q represents the complete state (joint positions and velocities) const auto q_p = toDrakePositions(start_state, joints); VectorXd q_v = VectorXd::Zero(joints.size()); - VectorXd q = VectorXd::Zero(2*joints.size()); + VectorXd q = VectorXd::Zero(2 * joints.size()); q << q_p; q << q_v; @@ -74,9 +65,7 @@ void KTOptPlanningContext::solve(planning_interface::MotionPlanResponse& res) } // compile into a Kinematic Trajectory Optimization problem - auto trajopt = KinematicTrajectoryOptimization( - plant_->num_positions(), - params_.control_points); + auto trajopt = KinematicTrajectoryOptimization(plant_->num_positions(), params_.control_points); auto& prog = trajopt.get_mutable_prog(); // Costs @@ -92,27 +81,11 @@ void KTOptPlanningContext::solve(planning_interface::MotionPlanResponse& res) // Constraints // Add constraints on start joint configuration and velocity - trajopt.AddPathPositionConstraint( - toDrakePositions(start_state, joints), - toDrakePositions(start_state, joints), - 0.0 - ); - trajopt.AddPathVelocityConstraint( - VectorXd::Zero(joints.size()), - VectorXd::Zero(joints.size()), - 0.0 - ); + trajopt.AddPathPositionConstraint(toDrakePositions(start_state, joints), toDrakePositions(start_state, joints), 0.0); + trajopt.AddPathVelocityConstraint(VectorXd::Zero(joints.size()), VectorXd::Zero(joints.size()), 0.0); // Add constraint on end joint configuration and velocity - trajopt.AddPathPositionConstraint( - toDrakePositions(goal_state, joints), - toDrakePositions(goal_state, joints), - 1.0 - ); - trajopt.AddPathVelocityConstraint( - VectorXd::Zero(joints.size()), - VectorXd::Zero(joints.size()), - 1.0 - ); + trajopt.AddPathPositionConstraint(toDrakePositions(goal_state, joints), toDrakePositions(goal_state, joints), 1.0); + trajopt.AddPathVelocityConstraint(VectorXd::Zero(joints.size()), VectorXd::Zero(joints.size()), 1.0); // TODO Add constraints on joint position/velocity/acceleration // trajopt.AddPositionBounds( // plant_->GetPositionLowerLimits(), @@ -141,12 +114,10 @@ void KTOptPlanningContext::solve(planning_interface::MotionPlanResponse& res) auto traj = trajopt.ReconstructTrajectory(result); const size_t num_pts = params_.trajectory_res; // TODO: should be sample time based instead const auto time_step = traj.end_time() / static_cast<double>(num_pts - 1); - res.trajectory = std::make_shared<robot_trajectory::RobotTrajectory>( - start_state.getRobotModel(), - group - ); + res.trajectory = std::make_shared<robot_trajectory::RobotTrajectory>(start_state.getRobotModel(), group); res.trajectory->clear(); - const auto& active_joints = res.trajectory->getGroup() ? res.trajectory->getGroup()->getActiveJointModels() : res.trajectory->getRobotModel()->getActiveJointModels(); + const auto& active_joints = res.trajectory->getGroup() ? res.trajectory->getGroup()->getActiveJointModels() : + res.trajectory->getRobotModel()->getActiveJointModels(); // sanity check assert(traj.rows() == active_joints.size()); @@ -165,8 +136,7 @@ void KTOptPlanningContext::solve(planning_interface::MotionPlanResponse& res) bool KTOptPlanningContext::terminate() { - RCLCPP_ERROR(getLogger(), - "KTOptPlanningContext::terminate() is not implemented!"); + RCLCPP_ERROR(getLogger(), "KTOptPlanningContext::terminate() is not implemented!"); return true; } @@ -183,9 +153,8 @@ void KTOptPlanningContext::setRobotDescription(std::string robot_description) // auto robot_instance = Parser(plant_, scene_graph_).AddModelsFromString(robot_description_, ".urdf"); // HACK: For now loading directly from drake's package map - const char* ModelUrl = - "package://drake_models/franka_description/" - "urdf/panda_arm.urdf"; + const char* ModelUrl = "package://drake_models/franka_description/" + "urdf/panda_arm.urdf"; const std::string urdf = PackageMap{}.ResolveUrl(ModelUrl); auto robot_instance = Parser(plant_, scene_graph_).AddModels(urdf); plant_->WeldFrames(plant_->world_frame(), plant_->GetFrameByName("panda_link0")); @@ -197,15 +166,11 @@ void KTOptPlanningContext::setRobotDescription(std::string robot_description) // diagram auto diagram_ = builder.Build(); diagram_context_ = diagram_->CreateDefaultContext(); - plant_context_ = &diagram_->GetMutableSubsystemContext( - *plant_, - diagram_context_.get()); + plant_context_ = &diagram_->GetMutableSubsystemContext(*plant_, diagram_context_.get()); nominal_q_ = plant_->GetPositions(*plant_context_); } -VectorXd KTOptPlanningContext::toDrakePositions( - const moveit::core::RobotState& state, - const Joints& joints) +VectorXd KTOptPlanningContext::toDrakePositions(const moveit::core::RobotState& state, const Joints& joints) { VectorXd q = VectorXd::Zero(joints.size()); for (size_t joint_index = 0; joint_index < joints.size(); ++joint_index) @@ -215,10 +180,8 @@ VectorXd KTOptPlanningContext::toDrakePositions( return q; } -void KTOptPlanningContext::setJointPositions( - const VectorXd& values, - const Joints& joints, - moveit::core::RobotState& state) +void KTOptPlanningContext::setJointPositions(const VectorXd& values, const Joints& joints, + moveit::core::RobotState& state) { for (size_t joint_index = 0; joint_index < joints.size(); ++joint_index) { @@ -227,10 +190,8 @@ void KTOptPlanningContext::setJointPositions( return; } -void KTOptPlanningContext::setJointVelocities( - const VectorXd& values, - const Joints& joints, - moveit::core::RobotState& state) +void KTOptPlanningContext::setJointVelocities(const VectorXd& values, const Joints& joints, + moveit::core::RobotState& state) { for (size_t joint_index = 0; joint_index < joints.size(); ++joint_index) { @@ -241,8 +202,7 @@ void KTOptPlanningContext::setJointVelocities( void KTOptPlanningContext::clear() { - RCLCPP_ERROR(getLogger(), - "KTOptPlanningContext::clear() is not implemented!"); + RCLCPP_ERROR(getLogger(), "KTOptPlanningContext::clear() is not implemented!"); // do something } } // namespace ktopt_interface