赞
踩
Ros2第一个节点程序调试(C++)
Ros2 pkg create –build-type ament-cmake 功能包名称
Ros2 pkg create --build-type ament_cmake --node-name 节点名称 功能包名称
Colcon bulid 编译功能包
//头文件
#include <chrono>
#include <iostream>
#include <functional>
#include <memory>
#include <string>
//ROS2的头文件
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
//两个using
using namespace std::chrono_literals;
using namespace std;
//定义新的类文件,进行功能定义
class MyPublisher : public rclcpp::Node{
private:
size_t count_; //私有变量
rclcpp::TimerBase::SharedPtr timer_;
rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_;
public:
MyPublisher():Node("my_publisher") //类的构造函数
{
count_=0;
publisher_=this->create_publisher<std_msgs::msg::String>("topic",10);
timer_=this->create_wall_timer(500ms,std::bind(&MyPublisher::timer_callback,this));
}
private:
void timer_callback()
{
auto message = std_msgs::msg::String();
message.data="Hello world!" + std::to_string(count_++);
RCLCPP_INFO(this->get_logger(), "Publishing:'%s'",message.data.c_str());
publisher_->publish(message);
}
};
int main(int argc, char ** argv)
{
rclcpp::init(argc,argv);
rclcpp::spin(std::make_shared<MyPublisher>());
rclcpp::shutdown();
return 0;
}
<depend>rclcpp</depend>
<depend>std_msgs</depend>
要添加find_package(rclcpp REQUIRED)
Find_package(std_msgs REQUIRED)
和XML文件中添加的相对应
要添加ament_target_dependencies(cpp_node rclcpp std_msgs)告诉编译器该节点的cpp文件在编译时要依赖的系统库。其中第一个cpp_node为所创建的节点名称;后面两项是依赖的库的名称。
在终端中运行colcon build命令进行编译
添加运行的路径
. install/setup.sh
或者source install/setup.sh,
运行节点 ros2 run cpp_package cpp_node //功能包的名称和节点名称
2. 终端中常用命令
Mkdir //创建目录
Ls //列出目录下的文件
Clear //清除终端运行的结果
Ctrl+C //结束程序运行
Cd .. //返回上级目录
3. 如果新建工作区的话,就需要修改配置文件,添加相应的目录
修改完配置文件之后,要保存相应的配置,并重启VSCODE软件,使配置生效。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。