zoukankan      html  css  js  c++  java
  • ros(3)发布者publisher的编程实现

    1.创建功能包
    cd ~/catkin_workspace/src

    catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs turtlesim

    cd ~/catkin_workspace/src/topic_publisher/src

    2.编辑代码
    gedit velocity_publishes.cpp

    /**
     * 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist
     */
     
    #include <ros/ros.h>
    #include <geometry_msgs/Twist.h>
     
    int main(int argc, char **argv)
    {
        // ROS节点初始化
        ros::init(argc, argv, "velocity_publishes");
     
        // 创建节点句柄
        ros::NodeHandle n;
     
        // 创建一个Publisher,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度10
        ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
     
        // 设置循环的频率
        ros::Rate loop_rate(10);
     
        int count = 0;
        while (ros::ok())
        {
            // 初始化geometry_msgs::Twist类型的消息
            geometry_msgs::Twist vel_msg;
            vel_msg.linear.x = 0.5;
            vel_msg.angular.z = 0.2;
     
            // 发布消息
            turtle_vel_pub.publish(vel_msg);
            ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]", 
                    vel_msg.linear.x, vel_msg.angular.z);
     
            // 按照循环频率延时
            loop_rate.sleep();
        }
     
        return 0;
    }

    3.编译代码
    3.1修改cmakelists.txt
    添加这两句:

    add_executable(velocity_publishessrc/velocity_publishes.cpp)
    target_link_libraries(velocity_publishes${catkin_LIBRARIES})


    3.2 编译
    catkin_make

    3.3设置环境变量
    source devel/setup.bash

    为了避免每次设置在/home目录下

    ctrl+h

    编辑.bashrc

    source /home/<user_name>/<worksapce_name>/devel/setup.bash

    4运行节点
    重新打开终端

    roscore

    运行海龟仿真器

    rosrun turtlesim turtlesim_node

    运行节点

    rosrun <功能包名> <节点名>

    rosrun topic_publisher velocity_publishes

    运行的就是该编译好的工程



  • 相关阅读:
    创建线程方法
    List 接口
    implements 的用法
    import和export 的使用方法
    js 实现 a == 'juejin' && a == 666 && a == 888
    position的属性运用
    css calc()函数 长度运算
    .net5一分钟入门
    css 如何让大小不同的图片表现一致,同时自适应呢?
    sqlserver isnull(),Count(),sum(),month(getdate()) 的用法
  • 原文地址:https://www.cnblogs.com/gjianli/p/15635214.html
Copyright © 2011-2022 走看看