2.ros2创建话题+发布消息(VScode环境搭建+编写)

前言:这是在1.ROS2安装-创建节点的基础上进行改进的,由于ubuntu自带的nano和vim在编写的时候不是很方便,在这教大家怎么用VScode进行编写代码

1.Vscode安装

1.1 下面是Vscode的deb网盘连接,你也可以去官网下载

        官网连接:Download Visual Studio Code - Mac, Linux, Windows

        网盘链接: https://pan.baidu.com/s/1PrZ3lP_KBLUznBjDDGpU8A?pwd=sgmm 提取码: sgmm

1.2 安装

  Ubuntu 22.04安装Visual Studio Code(VS Code)_ubuntu22.04安装vscode-CSDN博客

2.下载必要的扩展包(插件)

        2.0 点击这里下载插件

        2.1 Chinese

        2.2 ROS

        2.3 Cmake

        2.4 C/C++

3.打开工作区

        3.1ctrl+k+o(打开文件夹),选择ros2_ws/src路径,点击打开,点击信任

        

3.2 右下角的提示关闭即可

4.ROS2话题创建

        4.1 添加文件,命名为  my_topic.cpp

4.2 my_topic.cpp文件编写

这里牵扯到C++的类,不了解的去网上学学

#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"


class TopicPublisher01 : public rclcpp::Node
{

private:
        rclcpp::TimerBase::SharedPtr my_timer;//声明定时器指针
        rclcpp::Publisher<std_msgs::msg::String>::SharedPtr my_publisher;//声明话发布者指针

        void timer_back()
        {
            std_msgs::msg::String my_msg;// 创建消息
            my_msg.data = "Hi";

            RCLCPP_INFO(this->get_logger(),"pub:'%s'",my_msg.data.c_str());// 日志打印
            my_publisher->publish(my_msg);// 发布消息

        }

public:
    // 构造函数,有一个参数为节点名称
    TopicPublisher01(std::string name) : Node(name)
    {
        RCLCPP_INFO(this->get_logger(), "大家好,我是%s.", name.c_str());//打印一句自我介绍
        my_publisher = this->create_publisher<std_msgs::msg::String>("my_topic01",10);// 创建发布者名为:my_topic01
        my_timer = this->create_wall_timer(std::chrono::milliseconds(500),std::bind(&TopicPublisher01::timer_back,this)); // 创建定时器,500ms为周期,定时发布
    }


};



 
int main(int argc, char **argv)
{
    
    rclcpp::init(argc, argv);/* 初始化rclcpp  */
    auto node = std::make_shared<TopicPublisher01>("my_topic");/*生成名为my_topic的节点*/
 
    rclcpp::spin(node);/* 运行节点,并检测退出信号 Ctrl+C*/
    rclcpp::shutdown();/* 停止运行 */
    return 0;
}

4.3 CMakeLists.txt编写

4.3.1 最后添加以下代码

#在最后面加上以下内容
find_package(std_msgs REQUIRED)#my_topic.cpp用到了#include "std_msgs/msg/string.hpp"

add_executable(my_topic src/my_topic.cpp)#生成可执行文件my_topic.exe
ament_target_dependencies(my_topic rclcpp std_msgs)#向my_topic载入rclcpp包
 
 
#将可执行文件加入ros2可查询队列中
install(TARGETS
  my_topic
  DESTINATION lib/${PROJECT_NAME}
)

4.4 编译运行

4.4.1 回到上一级目录

source install/setup.bash    //添加路径
colcon build        //编译

4.4.2 运行

4.4.2.1 这里试试ros2的其他功能(有图例)

ros2 run my_pkg my_topic    //运行ros节点




//ros2的查看功能

ros2 node list    //查看节点

ros2 topic list    //查看话题

//ros2 topic echo /话题名称
ros2 topic echo /my_topic01    //查看话题里面的内容

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值