赞
踩
在 ROS 同提供了一些实用的命令行工具,可以用于获取不同节点的各类信息,常用的命令如下:
和之前介绍的文件系统操作命令比较,文件操作命令(参数增删改查)是静态的,操作的是磁盘上的文件,而上述命令是动态的,在ROS程序启动后,可以动态的获取运行中的节点或参数的相关信息。
实现分析:
实现流程:
第一个命令行:
roscore
第二个命令行:
rosrun turtlesim turtlesim_node
第三个命令行:
rosrun turtlesim turtle_teleop_key
第四个命令窗:
1.1话题获取
通过 rostopic 列出话题:
rostopic list
1.2消息获取
获取消息类型-rostopic type /turtle1/cmd_vel
获取消息格式-rosmsg info geometry_msgs/Twist
响应结果:
geometry_msgs/Vector3 linear //线速度
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular //角速度
float64 x
float64 y
float64 z
rostopic echo /turtle1/cmd_vel
可实时查看角速度线速度
- rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
- x: 1.0
- y: 0.0
- z: 0.0
- angular:
- x: 0.0
- y: 0.0
- z: 1.0"
pub- 发布
-r 10 以10hz的频率发布消息
/turtle1/cmd_vel 使用的话题
后面的Tab补齐
1.配置功能包 plumbing_test
2.导入依赖的包 roscpp rospy std_msgs geometry_msgs
3.在功能包plumbing_test目录src下新建test01_pub_twist.cpp
- /*
- 编写 ROS 节点,控制小乌龟画圆
-
- 准备工作:
- 1.获取话题已知: /turtle1/cmd_vel)
- 2.获取消息类型(已知: geometry_msgs/Twist)
- 3.运行前,注意先启动 turtlesim_node 节点
-
- 实现流程:
- 1.包含头文件
- 2.初始化 ROS 节点
- 3.节点句柄
- 4.创建发布者对象
- 5.发布逻辑
- 6.spinonce 循环
- */
-
- #include "ros/ros.h"
- #include "geometry_msgs/Twist.h"
-
- int main(int argc, char *argv[])
- {
- setlocale(LC_ALL,"");
- // 2.初始化 ROS 节点
- ros::init(argc,argv,"control");
- //3.创建节点句柄
- ros::NodeHandle nh;
- // 4.创建发布者对象
- ros::Publisher pub =nh.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10); //句柄有个函数
- //5.发布逻辑
- ros::Rate rate(10); //设置发布频率
- //组织发布消息
- geometry_msgs::Twist twist;
- twist.linear.x =1.0; //前进速度-浮点类型
- twist.linear.y =1.0; //不能横着走-为0
- twist.linear.z =1.0; //上下速度,不是鸟,不能飞
-
- twist.angular.x = 0.0; //翻滚角
- twist.angular.y = 0.0; //俯仰角
- twist.angular.z = 0.5; //偏航角
-
- //循环发布
- while(ros::ok())
- {
- pub.publish(twist);
- //休眠
- rate.sleep();
- //回头
- // 6.spinonce 循环
- ros::spinOnce();
- }
-
-
-
-
-
- return 0;
- }
4.配置文件
5.编译
第一个命令行:
roscore
第二个命令行:
rosrun turtlesim turtlesim_node
第三个命令行:
cd demo03_ws
catkin_make
source ./devel/setup.bash
rosrun plumbing_test test01_pub_twist
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。