Twist 보내기 Panel plugin 만들기
마우스 조작으로 Twist를 보내는 플러그인을 만듭니다.
실행 예
ROS1 버전
이 코드를 rviz2 용으로 다시 작성하십시오.
ROS 강좌 74 twist 보내기 rviz panel plugin 만들기
주요 변경 사항
twist_panel.hpp
onInitialize()
추가
public:
TwistPanel(QWidget *parent = nullptr);
virtual void onInitialize(); // 追加
virtual void load(const rviz_common::Config &config);
virtual void save(rviz_common::Config config) const;
NodeHanlde
가 존재하지 않으므로 Node
Publisher
는 template를 가질 수 있을 필요가 있기 때문에 2개 선언합니다
protected:
// The ROS node handle.
// ros::NodeHandle nh_;
rclcpp::Node::SharedPtr nh_;
// The ROS publisher for the command velocity.
// ros::Publisher twist_publisher_;
rclcpp::Publisher<geometry_msgs::msg::Twist>::SharedPtr twist_publisher_;
rclcpp::Publisher<geometry_msgs::msg::TwistStamped>::SharedPtr twist_stamped_publisher_;
twist_panel.cpp
Node
를 작성하기 위해 낯선 것과 같은 것을 쓰고 있습니다.
이번은 코멘트 아웃하고 있는 코드라도 좋지만, 코멘트 아웃하고 있는 코드를 사용하면 Publisher
는 동작합니다만 Subscription
(자세한 분이라면 가르쳐 주시면 고맙습니다)
void TwistPanel::onInitialize()
{
nh_ = this->getDisplayContext()->getRosNodeAbstraction().lock()->get_raw_node();
// nh_ = std::make_shared<rclcpp::Node>("twist_panel", "sample_rviz_plugin");
}
if (twist_publisher_ || twist_stamped_publisher_) //
{
float vel_max1 = max1_edit_->text().toFloat();
float vel_max2 = max2_edit_->text().toFloat();
float vel_max3 = max3_edit_->text().toFloat();
auto msg = std::make_shared<geometry_msgs::msg::TwistStamped>(); //
msg->header.frame_id = pub_frame_;
// msg->header.stamp = ros::Time::now();
msg->header.stamp = nh_->now(); //
// twist_publisher_ = nh_.advertise<geometry_msgs::TwistStamped>(topic_name, 10);
twist_stamped_publisher_ = nh_->create_publisher<geometry_msgs::msg::TwistStamped>(topic_name, rclcpp::QoS(10));
Reference
이 문제에 관하여(Twist 보내기 Panel plugin 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kotakku/items/01082cfd024a68c0d6ec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 코드를 rviz2 용으로 다시 작성하십시오.
ROS 강좌 74 twist 보내기 rviz panel plugin 만들기
주요 변경 사항
twist_panel.hpp
onInitialize()
추가
public:
TwistPanel(QWidget *parent = nullptr);
virtual void onInitialize(); // 追加
virtual void load(const rviz_common::Config &config);
virtual void save(rviz_common::Config config) const;
NodeHanlde
가 존재하지 않으므로 Node
Publisher
는 template를 가질 수 있을 필요가 있기 때문에 2개 선언합니다
protected:
// The ROS node handle.
// ros::NodeHandle nh_;
rclcpp::Node::SharedPtr nh_;
// The ROS publisher for the command velocity.
// ros::Publisher twist_publisher_;
rclcpp::Publisher<geometry_msgs::msg::Twist>::SharedPtr twist_publisher_;
rclcpp::Publisher<geometry_msgs::msg::TwistStamped>::SharedPtr twist_stamped_publisher_;
twist_panel.cpp
Node
를 작성하기 위해 낯선 것과 같은 것을 쓰고 있습니다.
이번은 코멘트 아웃하고 있는 코드라도 좋지만, 코멘트 아웃하고 있는 코드를 사용하면 Publisher
는 동작합니다만 Subscription
(자세한 분이라면 가르쳐 주시면 고맙습니다)
void TwistPanel::onInitialize()
{
nh_ = this->getDisplayContext()->getRosNodeAbstraction().lock()->get_raw_node();
// nh_ = std::make_shared<rclcpp::Node>("twist_panel", "sample_rviz_plugin");
}
if (twist_publisher_ || twist_stamped_publisher_) //
{
float vel_max1 = max1_edit_->text().toFloat();
float vel_max2 = max2_edit_->text().toFloat();
float vel_max3 = max3_edit_->text().toFloat();
auto msg = std::make_shared<geometry_msgs::msg::TwistStamped>(); //
msg->header.frame_id = pub_frame_;
// msg->header.stamp = ros::Time::now();
msg->header.stamp = nh_->now(); //
// twist_publisher_ = nh_.advertise<geometry_msgs::TwistStamped>(topic_name, 10);
twist_stamped_publisher_ = nh_->create_publisher<geometry_msgs::msg::TwistStamped>(topic_name, rclcpp::QoS(10));
Reference
이 문제에 관하여(Twist 보내기 Panel plugin 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kotakku/items/01082cfd024a68c0d6ec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public:
TwistPanel(QWidget *parent = nullptr);
virtual void onInitialize(); // 追加
virtual void load(const rviz_common::Config &config);
virtual void save(rviz_common::Config config) const;
protected:
// The ROS node handle.
// ros::NodeHandle nh_;
rclcpp::Node::SharedPtr nh_;
// The ROS publisher for the command velocity.
// ros::Publisher twist_publisher_;
rclcpp::Publisher<geometry_msgs::msg::Twist>::SharedPtr twist_publisher_;
rclcpp::Publisher<geometry_msgs::msg::TwistStamped>::SharedPtr twist_stamped_publisher_;
void TwistPanel::onInitialize()
{
nh_ = this->getDisplayContext()->getRosNodeAbstraction().lock()->get_raw_node();
// nh_ = std::make_shared<rclcpp::Node>("twist_panel", "sample_rviz_plugin");
}
if (twist_publisher_ || twist_stamped_publisher_) //
{
float vel_max1 = max1_edit_->text().toFloat();
float vel_max2 = max2_edit_->text().toFloat();
float vel_max3 = max3_edit_->text().toFloat();
auto msg = std::make_shared<geometry_msgs::msg::TwistStamped>(); //
msg->header.frame_id = pub_frame_;
// msg->header.stamp = ros::Time::now();
msg->header.stamp = nh_->now(); //
// twist_publisher_ = nh_.advertise<geometry_msgs::TwistStamped>(topic_name, 10);
twist_stamped_publisher_ = nh_->create_publisher<geometry_msgs::msg::TwistStamped>(topic_name, rclcpp::QoS(10));
Reference
이 문제에 관하여(Twist 보내기 Panel plugin 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kotakku/items/01082cfd024a68c0d6ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)