zoukankan      html  css  js  c++  java
  • Roboware Turtlesim Ubuntu 16.04 测试

    博客参考: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
    

    测试效果如下

  • 相关阅读:
    Java操作zip压缩和解压缩文件工具类
    Java操作图片的工具类
    使用Jacob操作Wrod文档的工具类代码
    Java计算文件的SHA码和MD5码
    Java 文件名操作的相关工具类
    Java中windows路径转换成linux路径等工具类
    JDBC的批量批量插入
    显示创建一个表的SQL语句
    MySQL中的保留字
    插入到Mysql数据库中的汉字乱码
  • 原文地址:https://www.cnblogs.com/flyinggod/p/11480877.html
Copyright © 2011-2022 走看看