节点文件/描述文件/安装文件

节点文件

xxx.py

节点是ros中的最基本计算单元,作为一个独立的进程执行特定的任务。

rclpy是ros为python开发者提供的库(ros client library) 相应的还有rclcpp  rcljava

《编写后保存并编译》
在home/worksapce/install/lear_node/lib/learning_node里面存放的就是编译后的可执行文件/节点
使用ros2 run ....的时候执行的就是该文件/节点
这意味着在你重新修改源代码文件后,需要重新在工作空间目录下编译,再ros2 run... 
否则你就是运行的上一版本未修改的结点

《项目-识别苹果》
注意路径问题:使用pwd命令来查看当前所处路径,即print working directory的缩写
《项目-打开摄像头识别》

需要先连接摄像头 然后USB兼容性改成3.1

ros2 run 运行结点即可

《常用命令》
 

ros2 node list  //查看当前运行的结点
ros2 node info /xxx结点名称  //查看当前运行结点的相关信息

描述文件

package.xml

安装

setup.py

有几个需要关注的 1.指定资源文件安装目录 2.指定程序的入口节点

Cmakelists.txt

本质上就是调用Cmake提供的函数或者命令来指挥Cmake行事

# 《基础设置组》
cmake_minimum_required(VERSION 3.8)     # 指定 CMake 最低版本
project(my_ros2_package)                # 指定 项目名称
set(CMAKE_CXX_STANDARD 17)              # 设置 C++ 标准
set(CMAKE_CXX_STANDARD_REQUIRED ON)


# 《查找依赖组》
find_package(ament_cmake REQUIRED)               # 统一依赖:构建系统
find_package(rclcpp REQUIRED)                    # 节点包依赖:ROS2库
find_package(rosidl_default_generators REQUIRED) # 接口包依赖:接口生成工具 
find_package(pluginlib REQUIRED)                 # 插件包依赖:插件生成工具
find_package(nav2_core REQUIRED)                 # 插件包依赖:插件抽象基类


# 《接口生成组》
set(MSG_FILES "msg/MyMessage.msg")
set(SRV_FILES "srv/MyService.srv")
rosidl_generate_interfaces(${PROJECT_NAME} ${MSG_FILES} ${SRV_FILES} DEPENDENCIES builtin_interfaces)


#  《编译库源组》
add_library(my_plugin SHARED src/my_plugin.cpp src/plugin_utils.cpp) # 编译插件为动态库

target_include_directories(my_plugin PUBLIC include)                 # 为插件文件找头文件

add_executable(my_node src/my_node.cpp)                              # 可执行结点

target_include_directories(my_node PUBLIC include)   


# 《链接库文件组》
target_link_libraries(my_plugin nav2_core::nav2_core pluginlib::pluginlib rclcpp::rclcpp      )
target_link_libraries(my_node rclcpp::rclcpp my_plugin)      # 链接插件库
target_link_libraries(my_node rclcpp::rclcpp)                # 链接Ros2动态库


# 《插件注册组》
pluginlib_export_plugin_description_file(${PROJECT_NAME} plugins.xml)


# 《安装指定组》
install(TARGETS my_plugin ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin) 

install(DIRECTORY include/ DESTINATION include)

install(TARGETS my_node DESTINATION lib/${PROJECT_NAME})



# 《依赖导出组》
ament_export_dependencies(rclcpp pluginlib nav2_core)    # 导出插件包的依赖

ament_export_include_directories(include)                # 导出头文件路径

ament_export_dependencies(rosidl_default_runtime)        # 导出接口依赖

ament_package()  # 必须放在最后!

基础设置:查找依赖—>接口生成—>编译—>链接—>注册—>安装—>导出依赖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值