Ubuntu 16.04 Roboware Turtlesim 测试

匿名 (未验证) 提交于 2019-12-02 23:57:01

博客参考:https://www.jianshu.com/p/5509c8ba522b?utm_campaign

利用Turtlesim,编写简单的消息发布器和订阅器

1. Twist消息,它的Topic是/cmd_vel,base controler订阅Twist消息来控制电机, 在终端中执行以下指令查看Twist消息的具体内容

rosmsg show geometry_msgs/Twist

2. 编写一个控制turtlesim的发布器

2.1 Roboware 创建turtlesim package, then add Src Folder including source file talker.cpp

#include <ros/ros.h> #include <std_msgs/String.h> #include <geometry_msgs/Twist.h>  int main(int argc, char** argv) {     ros::init(argc, argv,"talker");     ros::NodeHandle n;      ros::Publisher pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);     ros::Rate loop_rate(10);      while(ros::ok())     {         geometry_msgs::Twist msg;          msg.linear.x = 1;         msg.angular.z = 1;          pub.publish(msg);         ros::spinOnce();         loop_rate.sleep();     }          return 0; }

源代码内重要的部分

1. 定义一个publisher类的对象,其中advertise内的参数为(话题,发布的缓冲区大小)

ros::Publisher chatter_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);

2 geometry_msgs::Twist msg

//定义一个twist类消息对象 msg.linear.x = 1; // 设置线速度为1m/s,正为前进,负为后退 msg.angular.z = 1; // 设置角速度为1rad/s,正为左转,负为右转

3 pub.publish(msg)

通过刚才创建的publisher对象发布刚才创建的twist类对象, 这样执行完上面的代码,我们就可以将复制好linear和angular参数的twist对象广播出去,广播的topic是/turtle1/cmd_vel,也就是turtlesim会自动订阅的topic.

运行

1. 运行roscore

2. 运行turtlesim仿真器

rosrun turtlesim turtlesim_node

3. 运行编译的消息发布结点

source devel/setup.bash rosrun turrlesim talker

测试效果如下

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!