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

用下面这个逻辑

1.首先创建工作空间——>2.然后创建功能包——>3.然后编写内容——>4.最后进行构建

节点文件

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

指明功能包的元信息,以及依赖信息

在colcon build构建的时候,系统会检查是否已经安装package.xml中的依赖文件

如果没有将会报错,你可以使用rosdep install 来根据package.xml来一键安装

安装文件

setup.py   

指明资源文件源文件安装到哪里

Cmakelists.txt

灰色的是src文件夹    橘色的是bulid文件夹   红色的是install文件夹

静态库编译时链,动态库运行时链接
本质上就是调用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()  # 必须放在最后!

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值