首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布轨迹信息/联合轨迹信息

发布轨迹信息/联合轨迹信息
EN

Stack Overflow用户
提问于 2016-12-31 19:35:30
回答 1查看 3.2K关注 0票数 0

当我设置轨迹信息中关节的位置和速度时,我得到了一个错误:\

代码语言:javascript
复制
[state_publisher-2] process has died [pid 13362, exit code -11, cmd /home/rob/catkin_ws/devel/lib/r2d2/state_publisher __name:=state_publisher __log:=/home/rob/.ros/log/9980f352-cf74-11e6-8644-d4c9efe8bd37/state_publisher-2.log].
log file: /home/rob/.ros/log/9980f352-cf74-11e6-8644-d4c9efe8bd37/state_publisher-2*.log

我要发送geometry_msgs的ros节点是:

代码语言:javascript
复制
#include <string>
    #include <ros/ros.h>
    #include <sensor_msgs/JointState.h>
    #include <tf/transform_broadcaster.h>
    #include <trajectory_msgs/JointTrajectory.h>
    #include <vector>
    int main(int argc, char** argv) {
        ros::init(argc, argv, "state_publisher");
        ros::NodeHandle n;
        ros::Publisher joint_pub = n.advertise<trajectory_ms

gs::JointTrajectory>("set_joint_trajectory", 1);
   ros::Rate loop_rate(30);

   const double degree = M_PI/180;

   // robot state
   double tilt = 0, tinc = degree, swivel=0, angle=0, height=0, hinc=0.005;

   // message declarations
   trajectory_msgs::JointTrajectory joint_state;
   std::vector<trajectory_msgs::JointTrajectoryPoint> points_n(3);
   points_n[0].positions[0] = 1; points_n[0].velocities[0]=10;
   while (ros::ok()) {
       //update joint_state
       joint_state.header.stamp = ros::Time::now();
       joint_state.joint_names.resize(3);
       joint_state.points.resize(3);

       joint_state.joint_names[0] ="swivel";
       joint_state.points[0] = points_n[0];
       joint_state.joint_names[1] ="tilt";
       joint_state.points[1] = points_n[1];
       joint_state.joint_names[2] ="periscope";
       joint_state.points[2] = points_n[2];


       joint_pub.publish(joint_state);



       // This will adjust as needed per iteration
       loop_rate.sleep();
   }


   return 0;
   }

在这里,当我不设置位置和速度值时,它没有错误地运行,当我运行rostopic echo /set_joint_trajectory时,我可以清楚地看到输出,因为点的所有参数都是0。我也尝试了下面的程序,但它什么也没有发布:

代码语言:javascript
复制
 #include <string>
    #include <ros/ros.h>
    #include <sensor_msgs/JointState.h>
    #include <tf/transform_broadcaster.h>
    #include <trajectory_msgs/JointTrajectory.h>
    #include <vector>
    int main(int argc, char** argv) {
        ros::init(argc, argv, "state_publisher");
        ros::NodeHandle n;
        ros::Publisher joint_pub = n.advertise<trajectory_msgs::JointTrajectory>("set_joint_trajectory", 1);

        trajectory_msgs::JointTrajectory joint_state;

           joint_state.header.stamp = ros::Time::now();
           joint_state.header.frame_id = "camera_link";
           joint_state.joint_names.resize(3);
           joint_state.points.resize(3);

           joint_state.joint_names[0] ="swivel";
           joint_state.joint_names[1] ="tilt";
           joint_state.joint_names[2] ="periscope";

           size_t size = 2;
           for(size_t i=0;i<=size;i++) {
              trajectory_msgs::JointTrajectoryPoint points_n;
              int j = i%3;
              points_n.positions.push_back(j);
              points_n.positions.push_back(j+1);
              points_n.positions.push_back(j*2);
              joint_state.points.push_back(points_n);
              joint_state.points[i].time_from_start = ros::Duration(0.01);
           }
           joint_pub.publish(joint_state);
           ros::spinOnce();
       return 0;
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-01 03:15:21

您正在访问points_n[0].positions[0]points_n[0].velocities[0],而不为位置和速度分配内存。使用

代码语言:javascript
复制
...
// message declarations
trajectory_msgs::JointTrajectory joint_state;
std::vector<trajectory_msgs::JointTrajectoryPoint> points_n(3);
points_n[0].positions.resize(1);
points_n[0].velocities.resize(1);
...

然后设置值或使用points_n[0].positions.push_back(...)代替。points_n[1]points_n[2]也是如此。

在第二个示例中,您的程序似乎在发送任何内容之前就终止了。尝试在时间循环中重复发布

代码语言:javascript
复制
while(ros::ok()){ 
  ...
  ros::spinOnce();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41411217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档