[学习笔记]话题通讯的简单应用&&launch文件的编写&&ros命令的使用

目标:实现小乌龟的自动移动和位置打印

1、launch文件

launch文件就是一个联合启动的东西,可以一次运行启动多个程序(本质就是一个标志文件)

<launch>
    <!--乌龟GUI-->
    <node pkg="turtlesim" type="turtlesim_node" name="turtle1" output="screen" />
    <node pkg="turtlesim" type="turtle_teleop_key" name="key" output="screen" />
#调用的节点包名,节点类型,output screen是显示在屏幕上
</launch>

这样就可以在rosrun时同时启动乌龟gui和键盘控制了。

2、ros命令

有许多许多命令,首先是rostopic,之前已经用过一些,rostopic echo监听节点。

今天要用一下,rostopic pub

 

 

 翻译:以每秒10次(10Hz)的速度向/turtle1/...发送信息:x: y: z: 

这样就可以直接控制小乌龟运动了

然后是rostopic list

可以列出所有已存在的节点

3、cpp实现的直接控制小乌龟运动

(太懒直接上代码)

//控制龟龟做圆周运动
#include<ros/ros.h>
#include<geometry_msgs/Twist.h>//小乌龟控件头文件
using namespace ros;
int main(int argc, char *argv[])
{
    init(argc, argv, "turtle");//常规初始化
    NodeHandle nh;
    Publisher pub = nh.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);//节点妈妈名称
    Rate rate(10);//频率
    geometry_msgs::Twist twist;//定义消息的具体数值,可以有更复杂的逻辑,这里就整一个最简单的圆周运动
    twist.linear.x = 1.0;//线速度
    twist.linear.y = 0.0;
    twist.linear.z = 0.0;
    twist.angular.x = 0.0;//角速度
    twist.angular.y = 0.0;
    twist.angular.z = 1.0;
    while(ok())//一直发送
    {
        pub.publish(twist);
        rate.sleep();
        spinOnce();
    }
    return 0;
}

其实本质就是一个话题通讯接已有的接收节点

(完)

posted @ 2022-07-13 10:56  阿基米德的澡盆  阅读(203)  评论(0编辑  收藏  举报