ROS学习【3】-----ROS通信编程:小乌龟走正方形

ROS通信编程--------小乌龟走正方形

ROS话题编程是嵌入式开发学习的一项重要内容,只有学会ros的话题与服务编程,我们才能够继续往更深入的地方学习嵌入式的系统开发,本次博客,林君将带大家学习怎么控制乌龟走正方形,并通过订阅服务实时在终端打印位置信息

一、进入我们的工程包,创建小乌龟画圆发送程序

1、新建一个终端,命名为终端1,然后进入我们的工程文件包
cd ~/ros/src/comm/src

这里ros是林君自己的ros工作空间、comm是林君自己定义的工程包!

2、新建画圆程序名为fang.cpp
touch fang.cpp
3、打开文件将如下代码写入fang.cpp中:

1)、打开文件如下命令

gedit fang.cpp

2)、写入文件中的代码如下命令:

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
#define PI 3.14159265358979323846
 
int main(int argc, char **argv){
  ros::init(argc, argv, "draw_rectangle");   //"draw_rectangle"必须是nodename
  std::string topic = "/turtle1/cmd_vel"; //topic name
  ros::NodeHandle n;
  ros::Publisher cmdVelPub = n.advertise<geometry_msgs::Twist>(topic, 1);
  //第一个参数也可以写成"/turtle1/cmd_vel"这样的topic name
  //第二个参数是发布的缓冲区大小,<geometry_msgs::Twist>是消息类型
  ros::Rate loopRate(2);
  //与Rate::sleep();配合指定自循环频率
  ROS_INFO("draw_retangle start...");//输出显示信息
  geometry_msgs::Twist speed; // 控制信号载体 Twist message
//声明一个geometry_msgs::Twist 类型的对象speed,并将速度的值赋值到这个对象里面
  int count = 0;
  while (ros::ok()){
    speed.linear.x = 1; // 设置线速度为1m/s,正为前进,负为后退
    speed.linear.y = 0;
    speed.linear.z = 0;
    speed.angular.x = 0;
    speed.angular.y = 0;
    speed.angular.z = 0; 
    count++;
    while(count == 5)
    {
        count=0;
        speed.angular.z = PI; //转90°
    }
    cmdVelPub.publish(speed); // 将刚才设置的指令发送给机器人
    ros::spinOnce();//调用此函数给其他回调函数得以执行
    loopRate.sleep();//按loopRate(2)设置的2HZ将程序挂起
  }
 
  return 0;
}

在这里插入图片描述

4、关闭文件

到这里,我们的让小乌龟画圆的程序就编写好了,如下所示:
在这里插入图片描述

二、修改CMakeLists.txt文件内容

1、进入工程包comm文件夹
cd ~/ros/src/comm
2、打开CMakeLists.txt文件
gedit CMakeLists.txt
3、在CMakeLists.txt文件末尾添加如下代码:
add_executable(fang src/fang.cpp)
target_link_libraries(fang ${catkin_LIBRARIES})

如下图所示:
在这里插入图片描述
然后关闭CMakeLists.txt文件

三、编译程序

1、进入工作空间ros
cd ~/ros
2、编译我们创建好的程序
catkin_make

如下图所示即为成功:
在这里插入图片描述
你们的可能会长一点,但只要出现100%即为成功,我的只是之前编译过,所以比较快、少!

五、运行程序

1、程序注册

1)、回到我们的工作空间

cd ~/ros

2)、程序注册

source ./devel/setup.bash

在这里插入图片描述

2、新建一个终端,运行ros,我们命名为终端2
roscore

在这里插入图片描述

3、再新建一个终端,启动我们的小海龟,海龟的窗口我们命名为窗口3
rosrun turtlesim turtlesim_node

在这里插入图片描述

4、在终端1运行我们的小海龟走方形程序,也就是我们最开始的终端!

记住,我们新建的终端一个都不要关闭
1)、终端1运行画圆程序

rosrun comm fang

在该命令执行后,上面的窗口3都会发生变化,如下图所示:
在这里插入图片描述
小乌龟开始走方形,出现该结果,表示程序运行成功,本次实验成功!
2)、在终端1Ctrl+C关闭程序运行,如下所示:
在这里插入图片描述
以上就是本次博客的全部内容啦,欢迎收看林君本次博客的讲解,遇到问题的小伙伴欢迎评论区留言哦!写作不易,记得点赞、评论、关注哦!
陈一月的又一天编程岁月*_*!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈一月的编程岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值