使用Vscode,编写一个叫做ros_say_Hello的可执行文件,其功能是按照10Hz的频率在终端显示“Hello,I am xxxx”(xxx部分为你的姓名拼音),请附上.cpp源代码,并截图展示CMakeLists.txt中修改的部分,以及修改参数的意义。
时间: 2024-10-21 18:08:31 浏览: 38
要在VSCode中创建一个名为`ros_say_Hello`的C++项目,首先我们需要准备以下几个步骤:
1. 创建一个新的C++项目:
打开Visual Studio Code,选择`File > New Folder`创建一个新目录,例如命名为`ros_say_Hello`。
2. 创建`.cpp`源代码文件:
在新目录下,右键点击并选择`New File`,然后输入`main.cpp`,添加以下C++代码:
```cpp
#include <iostream>
#include <thread>
#include "rclcpp/rclcpp.hpp"
#include "rclcpp/time/time.hpp"
class RosSayHello : public rclcpp::Node
{
public:
RosSayHello(const rclcpp::NodeOptions & options)
: Node("ros_say_hello", options),
timer_(this->create_wall_timer(ros::Duration(1 / 10.0), std::bind(&RosSayHello::say_hello, this)))
{
}
private:
void say_hello()
{
auto now = this->get_clock().now();
RCLCPP_INFO(get_logger(), "Hello, I am %s (%d Hz)", get_node_name().c_str(), static_cast<int>(10));
}
rclcpp::WallTimerBaseSharedPtr timer_;
};
int main(int argc, char * argv[])
{
rclcpp::init(argc, argv);
auto node = std::make_shared<RosSayHello>();
rclcpp::spin(node);
rclcpp::shutdown();
return 0;
}
```
3. 创建CMakeLists.txt:
右键点击`ros_say_Hello`目录,选择`New File`,输入`CMakeLists.txt`,然后添加以下内容:
```cmake
cmake_minimum_required(VERSION 3.10)
project(ros_say_Hello)
find_package(rclcpp REQUIRED)
find_package(ament_cmake REQUIRED)
add_executable(ros_say_hello src/main.cpp)
target_link_libraries(ros_say_hello rclcpp)
ament_target_dependencies(ros_say_hello rclcpp)
ament_export_dependencies(ros_say_hello rclcpp)
# 将生成的库路径添加到系统路径
file(TO_CMAKE_PATH "$<BUILD_DIR>/ros_say_hello" _out_path)
list(APPEND CMAKE_LIBRARY_PATH "${_out_path}")
# 设置输出目录,以便于运行
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
# 设置命令行工具执行程序的名称
ament_add_executable(ros_say_hello_main ros_say_hello main.cpp)
```
4. 修改CMakeLists.txt参数意义:
- `find_package(rclcpp REQUIRED)`: 寻找rclcpp包并将其作为依赖项。
- `ament_target_dependencies(ros_say_hello rclcpp)`: 添加ament构建所需的依赖关系。
- `file(TO_CMAKE_PATH "$<BUILD_DIR>/ros_say_hello" _out_path)`: 将构建目录转换为CMake可以识别的路径,用于找到生成的库。
- `set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)`: 指定可执行文件的输出位置,方便运行。
- `ament_add_executable(ros_say_hello_main ...)`: 为实际执行的可执行文件命名,区分编译后的`ros_say_hello`库和可执行程序。
完成以上步骤后,你可以通过VSCode的`Terminal`或命令行运行`colcon build`来构建项目,然后使用`./bin/ros_say_hello_main`启动程序。
注意:由于无法在这里提供截图,你可以参考官方文档和VSCode的相关教程来理解CMakeLists.txt的具体设置。如果你遇到问题,可以询问关于CMake、VSCode配置或者RCLcpp编程的问题。
阅读全文