turtlebot3-burger_150.png
turtlebot3-waffle-pi_150.png
turtlebot3-arm_150.png
walking-y2_150.png
turbot3-multi_150.png
turbot3-dl-ros1_150.png
turbot3-ai.png
turbot3-dl-ros2_150.png
turbot3-slam_150.png
turbot3-arm_150.png
turtlebot4-lite_150.png
turtlebot4-pro_150.png
turbot4-dl_150.png
turbot4-ai_150.png
aidriving-racebot_150.png
aidriving-autodrive_150.png
turtlebot-arm_150.png
openmanipulator-x_150.png
Home » ROS2与C++入门教程 » ROS2与C++入门教程-使用参数

ROS2与C++入门教程-使用参数

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号

欢迎加入我们的ROS1/ROS2交流群,微信扫描右侧二维码立即进群交流

群二维码

ROS2与C++入门教程-使用参数

说明:

  • 介绍如何在ros2中使用参数

步骤:

  • 创建包
cd ~/dev_ws/src
ros2 pkg create --build-type ament_cmake cpp_parameters --dependencies rclcpp
  • 新增cpp_parameters_node.cpp文件在dev_ws/src/cpp_parameters/src目录
  • 内容如下:
#include <rclcpp/rclcpp.hpp>
#include <chrono>
#include <string>
#include <functional>

using namespace std::chrono_literals;

class ParametersClass: public rclcpp::Node
{
  public:
    ParametersClass()
      : Node("parameter_node")
    {
      this->declare_parameter<std::string>("my_parameter", "world");
      timer_ = this->create_wall_timer(
      1000ms, std::bind(&ParametersClass::respond, this));
    }
    void respond()
    {
      this->get_parameter("my_parameter", parameter_string_);
      RCLCPP_INFO(this->get_logger(), "Hello %s", parameter_string_.c_str());
    }
  private:
    std::string parameter_string_;
    rclcpp::TimerBase::SharedPtr timer_;
};

int main(int argc, char** argv)
{
  rclcpp::init(argc, argv);
  rclcpp::spin(std::make_shared<ParametersClass>());
  rclcpp::shutdown();
  return 0;
}
  • 修改CMakeLists.txt
  • 内容如下:
add_executable(parameter_node src/cpp_parameters_node.cpp)
ament_target_dependencies(parameter_node rclcpp)

install(TARGETS
  parameter_node
  DESTINATION lib/${PROJECT_NAME}
)
  • 安装依赖
cd ~/dev_ws/
rosdep install -i --from-path src --rosdistro foxy -y
  • 编译
colcon build --packages-select cpp_parameters
  • 运行
. install/setup.bash
ros2 run cpp_parameters parameter_node
  • 查看值:
ros2 param get /parameter_node my_parameter

在终端下更改参数值:

  • 运行节点:
ros2 run cpp_parameters parameter_node
  • 新开终端,显示参数列表
ros2 param list
  • 更改值
ros2 param set /parameter_node my_parameter earth
  • 新开终端,查看
ros2 param get /parameter_node my_parameter

在launch文件中更改参数值:

  • 新建cpp_parameters_launch.py,在~/dev_ws/src/cpp_parameters/launch目录下
  • 内容如下:
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    return LaunchDescription([
        Node(
            package="cpp_parameters",
            executable="parameter_node",
            name="custom_parameter_node",
            output="screen",
            emulate_tty=True,
            parameters=[
                {"my_parameter": "earth"}
            ]
        )
    ])
  • 更改CMakelist.txt
install(
  DIRECTORY launch
  DESTINATION share/${PROJECT_NAME}
)
  • 重新编译
colcon build --packages-select cpp_parameters
  • 运行
. install/setup.bash
ros2 launch cpp_parameters cpp_parameters_launch.py
  • 效果如下:
[parameter_node-1] [INFO] [custom_parameter_node]: Hello earth

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号

欢迎加入我们的ROS1/ROS2交流群,微信扫描右侧二维码立即进群交流

群二维码

标签: ROS2与C++入门教程