利用joint_states、joint_path_command 发布关节值、速度、加速度
ROS中利用API创建listener来读取joint_states、关节轨迹中的关机转动角度、速度、加速度信息
(1)这是ROS官网上的最基础的listener程序
#include "ros/ros.h"
#include "std_msgs/String.h"void chatterCallback(const std_msgs::String::ConstPtr& msg)
{ROS_INFO("I heard: [%s]", msg->data.c_str());
}int main(int argc, char **argv)
{ros::init(argc, argv, "listener_wiki_ros");ros::NodeHandle n;ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);ros::spin();return 0;
}
(2)从joint_path_command话题中读取一段轨迹的转动角度、速度、加速度信息
- joint_path_command话题需要ros与真实机械臂或仿真软件建立通信,才会被发布出来
- joint_path_command话题是读取关节轨迹中的信息最便捷的话题,其他话题也能实现,但是会有bug
- joint_states信息中只能读取position的值,直接利用
rostopic echo /joint_states
打印即可
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "trajectory_msgs/JointTrajectory.h"void Callback(const trajectory_msgs::JointTrajectoryConstPtr& msg)
{float pos[6];float vel[6];float acc[6];int len = msg->points.size(); //一段轨迹有多少个路径点for (int i = 0; i < len; i++) { //将每个路径点上的加速度信息打印到屏幕for (int j = 0; j < 6; j++) { pos[j] = msg->points[i].positions[j];vel[j] = msg->points[i].velocities[j];acc[j] = msg->points[i].accelerations[j];if (j == 5)ROS_INFO("pos,%f,%f,%f,%f,%f,%f", pos[0], pos[1], pos[2], pos[3], pos[4], pos[5]);ROS_INFO("vel,%f,%f,%f,%f,%f,%f", vel[0], vel[1], vel[2], vel[3], vel[4], vel[5]);ROS_INFO("acc,%f,%f,%f,%f,%f,%f", acc[0], acc[1], acc[2], acc[3], acc[4], acc[5]);}}
}int main(int argc, char** argv)
{ros::init(argc, argv, "listener"); //listener ros::NodeHandle n;ros::Subscriber sub = n.subscribe("/joint_path_command", 10000, Callback); //ros::spin();return 0;
}
- 最后将话题添加到编译环境中,最后catkin_make即可运行了
add_executable(listener src/listener.cpp) //listener既为话题名称,也为api文件名
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp) //beginner_tutorials为笔者的文件夹名称,读者根据自己的编译环境来更改。
利用joint_states、joint_path_command 发布关节值、速度、加速度相关推荐
- 利用stm32控制步进电机 速度加速度控制
因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 利用stm32控制步进电机 尝试用42系步进电机做倒立摆,总结步进 ...
- Double S 曲线轨迹规划——不同速度加速度条件下综合
目前机械臂常用的轨迹曲线主要是S曲线,由于前后两端速度为抛物线形式,整体相对平滑,具有较好的过渡.程序涵盖了混合轨迹,加速轨迹和减速轨迹,通过设置flag和合理的速度加速度输入值获取双S曲线. 参数的 ...
- 利用光流提升视频识别的速度和精度
daijifeng老师的两篇文章,利用光流提升视频识别的速度Deep Feature Flow for Video Recognition,利用光流提高视频的精度Flow-Guided Feature ...
- python去除数组缺失值_动态数组的应用,VBA中如何利用动态数组去除重复值的第二讲...
大家好,我们今日继续讲解VBA代码解决方案的第62讲内容:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法第二部分.在上一讲中,我们讲了知识点的利用,其一是Filter函数,其二是ReDi ...
- 重新查看Play Framework发布的值
与Play Framework 2.0一起使用发布的值而不定义表单映射,可能不像Play 1.x那样明显,这就是为什么我要编写此快速备忘单. 对于此快速示例,让我们定义以下视图: app / view ...
- c++删除数组中重复元素_在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法...
大家好,我们今日继续讲解VBA数组与字典解决方案第22讲:在VBA中如何使用动态数组,以及利用动态数组去除重复值的方法.如果文本中含有大量的重复值,此时,如果我们要剔除重复值,该怎么办?用VBA的方法 ...
- 一、ArcGIS Server篇:利用ArcGIS Server发布动态地图服务
写在前面的话:本篇博客参考 在WebGIS开发过程中,我们所需要的数据不仅仅来自于ArcGIS online,有时候我们需要发布自己的数据服务,在本篇博客中主要说明一下如何利用ArcGIS Serve ...
- 图灵奖得主Geoffrey Hinton最新研究:利用神经网络对有关节三维模型进行估计的方法NASA
NASA: Neural Articulated Shape Approximation 论文作者: Timothy Jeruzalski, Boyang Deng, Mohammad Norouzi ...
- python学习之 利用蒙特卡洛方法计算PI值
使用环境为python IDLE3.5. #利用蒙特卡洛方法计算PI值 from random import random from math import sqrt from time import ...
最新文章
- 有用就存档,没用就删除,当日清理当日的email
- Oracle:关于分布式数据库(创建数据库链路,创建触发器)
- python 求系数矩阵,关于numpy:python-如何在数据矩阵中使用nans计算相关矩阵
- cenos 下的一些常用命令及技巧收集篇
- SQL触发器实例讲解
- 【九章算法免费讲座第一期】转专业找CS工作的“打狗棒法”
- 对弈(nim-k游戏博弈)
- 【JEECG技术文档】JEECG online 表单填值规则使用说明
- 获取网页上数据(图片、文字、视频)-b
- 智能家居火了这么久 何时到我家?
- 关于php中的json_encode和json_decode的”\“(反斜杠)的问题
- machine learning 之 Neural Network 3
- UVA - 1588 Kickdown
- Javascript中四舍六入五成双
- Windows系统——ATTCK靶场(一)——MSF方式
- oracle 获取每周五,oracle如何根据传入的时间参数,得到这个参数所在周的周一至周五的日期和星期数...
- 【拆书】《深度工作》教你时间管理
- 两本小书的命运 ---	记《Effective STL》和《The Art Of Deception》两本书的出版翻译过程
- 流程图讲解_流程图+地图题小作文练习,详细讲解+精选范文!!
- java 试题_Java笔试题完整试卷