add launch file
This commit is contained in:
parent
97bbf46c6d
commit
3a19ed45d1
9 changed files with 65 additions and 27 deletions
|
@ -32,12 +32,18 @@ add_library(component_state_lib SHARED
|
||||||
src/component.cpp
|
src/component.cpp
|
||||||
src/component_state_monitor.cpp
|
src/component_state_monitor.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
ament_target_dependencies(component_state_lib ${dependencies})
|
ament_target_dependencies(component_state_lib ${dependencies})
|
||||||
|
|
||||||
add_executable(component_state_monitor_node src/component_state_monitor_node.cpp)
|
add_executable(component_state_monitor_node src/component_state_monitor_node.cpp)
|
||||||
target_link_libraries(component_state_monitor_node component_state_lib)
|
target_link_libraries(component_state_monitor_node component_state_lib)
|
||||||
ament_target_dependencies(component_state_monitor_node ${dependencies})
|
ament_target_dependencies(component_state_monitor_node ${dependencies})
|
||||||
|
|
||||||
|
install(DIRECTORY
|
||||||
|
launch
|
||||||
|
DESTINATION share/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
|
||||||
install(TARGETS
|
install(TARGETS
|
||||||
component_state_lib
|
component_state_lib
|
||||||
ARCHIVE DESTINATION lib
|
ARCHIVE DESTINATION lib
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <geometry_msgs/msg/pose.hpp>
|
#include <geometry_msgs/msg/pose.hpp>
|
||||||
#include "scene_monitor_interfaces/msg/grasp_pose.hpp"
|
#include "scene_monitor_interfaces/msg/grasp_pose.hpp"
|
||||||
// #include "scene_monitor_interfaces/msg/bounding_box.hpp"
|
|
||||||
// #include "scene_monitor_interfaces/msg/principal_properties.hpp"
|
|
||||||
#include "nlohmann_json/json.hpp"
|
#include "nlohmann_json/json.hpp"
|
||||||
|
|
||||||
namespace component_state_monitor
|
namespace component_state_monitor
|
||||||
|
@ -44,25 +42,16 @@ public:
|
||||||
void setFrameName(const std::string &frame_name);
|
void setFrameName(const std::string &frame_name);
|
||||||
|
|
||||||
void initializeFromJson(json &input);
|
void initializeFromJson(json &input);
|
||||||
/*
|
|
||||||
TODO
|
|
||||||
- create methods for get all recently needed component
|
|
||||||
from metadata class
|
|
||||||
*/
|
|
||||||
|
|
||||||
void updateState(const ComponentState &state);
|
void updateState(const ComponentState &state);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
// float _volume;
|
|
||||||
std::string _frame_name;
|
std::string _frame_name;
|
||||||
ComponentState _current_state;
|
ComponentState _current_state;
|
||||||
geometry_msgs::msg::Pose _placement;
|
geometry_msgs::msg::Pose _placement;
|
||||||
// geometry_msgs::msg::Point _center_of_mass;
|
|
||||||
std::map<std::string, scene_monitor_interfaces::msg::GraspPose> _grasp_poses;
|
std::map<std::string, scene_monitor_interfaces::msg::GraspPose> _grasp_poses;
|
||||||
// scene_monitor_interfaces::msg::BoundingBox _bounding_box;
|
|
||||||
// scene_monitor_interfaces::msg::PrincipalProperties _principal_properties;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ public:
|
||||||
~ComponentStateMonitor();
|
~ComponentStateMonitor();
|
||||||
|
|
||||||
void initializeComponents(const std::string &package_name);
|
void initializeComponents(const std::string &package_name);
|
||||||
|
void initializeParameters();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -40,5 +41,8 @@ private:
|
||||||
rclcpp::Service<GetGraspPoseSrv>::SharedPtr _get_grasp_pose_service;
|
rclcpp::Service<GetGraspPoseSrv>::SharedPtr _get_grasp_pose_service;
|
||||||
rclcpp::Service<GetGraspPosesSrv>::SharedPtr _get_grasp_poses_service;
|
rclcpp::Service<GetGraspPosesSrv>::SharedPtr _get_grasp_poses_service;
|
||||||
|
|
||||||
|
std::string _models_package;
|
||||||
|
rclcpp::TimerBase::SharedPtr _timer;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
#include "component_state_monitor.hpp"
|
||||||
|
|
||||||
|
namespace scene_state_monitor
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
class SceneStateMonitor: public rclcpp::Node
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
SceneStateMonitor();
|
||||||
|
~SceneStateMonitor();
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
component_state_monitor::ComponentStateMonitor _component_state_monitor_node;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
from launch import LaunchDescription
|
||||||
|
from launch_ros.actions import Node
|
||||||
|
|
||||||
|
def generate_launch_description():
|
||||||
|
ld = LaunchDescription()
|
||||||
|
component_state_monitor_node = Node(
|
||||||
|
package="robossembler_scene_monitor",
|
||||||
|
executable="component_state_monitor_node",
|
||||||
|
name="component_state_monitor_node",
|
||||||
|
output="screen",
|
||||||
|
emulate_tty=True,
|
||||||
|
parameters=[
|
||||||
|
{"models-package": "sdf_models"}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
ld.add_action(component_state_monitor_node)
|
||||||
|
return ld
|
|
@ -1,6 +1,7 @@
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
#include <ament_index_cpp/get_package_share_directory.hpp>
|
#include <ament_index_cpp/get_package_share_directory.hpp>
|
||||||
|
|
||||||
|
@ -8,8 +9,11 @@
|
||||||
|
|
||||||
namespace component_state_monitor
|
namespace component_state_monitor
|
||||||
{
|
{
|
||||||
|
using namespace std::chrono_literals;
|
||||||
ComponentStateMonitor::ComponentStateMonitor(): Node("component_state_monitor_node")
|
ComponentStateMonitor::ComponentStateMonitor(): Node("component_state_monitor_node")
|
||||||
{
|
{
|
||||||
|
this->declare_parameter<std::string>("models-package", "sdf_models");
|
||||||
|
|
||||||
RCLCPP_INFO(this->get_logger(), "Initialize [get_part] service");
|
RCLCPP_INFO(this->get_logger(), "Initialize [get_part] service");
|
||||||
_get_part_service = this->create_service<GetPartSrv>("scene_monitor/get_part",
|
_get_part_service = this->create_service<GetPartSrv>("scene_monitor/get_part",
|
||||||
std::bind(&ComponentStateMonitor::getComponent, this,
|
std::bind(&ComponentStateMonitor::getComponent, this,
|
||||||
|
@ -25,8 +29,15 @@ namespace component_state_monitor
|
||||||
std::bind(&ComponentStateMonitor::getGraspPose, this,
|
std::bind(&ComponentStateMonitor::getGraspPose, this,
|
||||||
std::placeholders::_1, std::placeholders::_2));
|
std::placeholders::_1, std::placeholders::_2));
|
||||||
|
|
||||||
std::string package_name = "sdf_models";
|
|
||||||
initializeComponents(package_name);
|
initializeParameters();
|
||||||
|
initializeComponents(_models_package);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ComponentStateMonitor::initializeParameters()
|
||||||
|
{
|
||||||
|
this->get_parameter("models-package", _models_package);
|
||||||
|
RCLCPP_INFO(this->get_logger(), "Initialize with models-package (%s)", _models_package.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
ComponentStateMonitor::~ComponentStateMonitor() {}
|
ComponentStateMonitor::~ComponentStateMonitor() {}
|
||||||
|
@ -131,7 +142,7 @@ namespace component_state_monitor
|
||||||
component.setFrameName(frame_name);
|
component.setFrameName(frame_name);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
RCLCPP_INFO(this->get_logger(), "Start read frame metadata (%s)", json_path.c_str());
|
RCLCPP_INFO(this->get_logger(), "Start read frame metadata (%s/frames.json)", frame_name.c_str());
|
||||||
|
|
||||||
std::ifstream json_file(json_path);
|
std::ifstream json_file(json_path);
|
||||||
auto input = json::parse(json_file);
|
auto input = json::parse(json_file);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#include <rclcpp/rclcpp.hpp>
|
#include <rclcpp/rclcpp.hpp>
|
||||||
|
|
||||||
// #include "SceneMonitor.hpp"
|
// #include "SceneMonitor.hpp"
|
||||||
|
|
||||||
#include "component_state_monitor.hpp"
|
#include "component_state_monitor.hpp"
|
||||||
|
@ -10,6 +9,7 @@ int main(int argc, char **argv)
|
||||||
rclcpp::executors::SingleThreadedExecutor exec;
|
rclcpp::executors::SingleThreadedExecutor exec;
|
||||||
|
|
||||||
auto component_state_monitor_node = std::make_shared<component_state_monitor::ComponentStateMonitor>();
|
auto component_state_monitor_node = std::make_shared<component_state_monitor::ComponentStateMonitor>();
|
||||||
|
|
||||||
exec.add_node(component_state_monitor_node);
|
exec.add_node(component_state_monitor_node);
|
||||||
exec.spin();
|
exec.spin();
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,6 @@ geometry_msgs::msg::Pose PoseEstimation::frame_pose()
|
||||||
auto future_response = _gz_state_client->async_send_request(
|
auto future_response = _gz_state_client->async_send_request(
|
||||||
request, [this, request](rclcpp::Client<gazebo_msgs::srv::GetEntityState>::SharedFuture response)
|
request, [this, request](rclcpp::Client<gazebo_msgs::srv::GetEntityState>::SharedFuture response)
|
||||||
{
|
{
|
||||||
RCLCPP_INFO(this->get_logger(), "hi from response!");
|
|
||||||
auto result = response.get();
|
auto result = response.get();
|
||||||
if (!result->success)
|
if (!result->success)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,11 +1,3 @@
|
||||||
# float64 radius
|
|
||||||
string label
|
string label
|
||||||
# string part
|
geometry_msgs/Pose placement_pose # TODO: tf2
|
||||||
# string shape_type
|
float64 distance
|
||||||
# string positioning
|
|
||||||
geometry_msgs/Pose placement_pose
|
|
||||||
float64 distance
|
|
||||||
# geometry_msgs/Point axis
|
|
||||||
# geometry_msgs/Point center
|
|
||||||
# geometry_msgs/Pose feature_placement
|
|
||||||
# float64[] parameter_range
|
|
Loading…
Add table
Add a link
Reference in a new issue