前言:这是在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 //查看话题里面的内容
标签:std,VScode,rclcpp,topic,msg,my,ros2,搭建
From: https://blog.csdn.net/2302_76761277/article/details/141499646