avatar
Articles
140
Tags
0
Categories
18
首页
归档
标签
分类
友链
李瑞琦的博客
首页
归档
标签
分类
友链

李瑞琦的博客

007 导航
Created2025-06-04|09-ROS
...
001 基本概念
Created2025-06-04|09-ROS
基本概念节点定义:每个节点负责一个单独的模块化的功能,本质上就是一个进程,也是可执行文件 节点之间的通信方式 话题、服务、动作、参数 CLI工具运行一个节点 ros2 run <功能包名字> <可执行文件名> 查看节点列表 ros2 node list 查看节点信息 ros2 node info <node_name> 运行时重映射节点名称 ros2 run <pkd> <node_name> --ros-args --remap __node=:xxxx 功能包定义:实现一个功能可能需要多个节点,ROS将实现某功能的多个节点看成一个功能包 功能包的手动编译有3种方式: ament_python(python) ament_cmake(ROS2定义的一系列CMake函数) cmake 手动编译的功能包一般需要手动source工作空间的install目录 除了手动编译,也可直接下载开源功能包: sudo apt install...
002 节点间的通信
Created2025-06-04|09-ROS
节点间的通信发布-订阅模式注意事项1.发布、订阅的接口类型要相同,比如都是字符串类型的 2.发布者和订阅者可以是1对n、n对n、n对1的 可视化rqt_gragh可以可视化目前所有节点 topic常用指令1.返回系统当前所有topic ros2 topic list 2..返回系统当前所有topic及其数据类型 ros2 topic list -t 3.打印实时话题信息 ros2 topic echo /<话题name> 4.查看话题信息:发布者和订阅者个数、数据类型 ros2 topic info /<话题name> 5.查看消息具体内容 ros2 interface show <消息类型> 6.手动发送话题信息 ros2 topic pub <数据类型> <具体数据> CPP实现订阅者节点具体步骤: 1.导入消息的类型,如std_msgs/msg/string.hpp 2.创建订阅者 3.创建订阅的回调函数
003 功能包开发
Created2025-06-04|09-ROS
写一个节点解决VSCODE找不到头文件 在C++ configuration里面手动添加rcl的路径 添加完成后在.json中可以看见 创建功能包和节点1.使用CLI创建功能包 ros2 pkg create demo1 --build-type (ament_cmake)可省略 --dependencies rclcpp 2.在功能包的src文件手动创建节点的cpp文件 3.在CMakeLists.txt最后添加如下代码 123456789101112add_executable(demo_node src/demo.cpp)ament_target_dependencies(demo_node rclcpp)#每有一个可执行文件都得写一次add_executable(demo_oop_node src/demo_oop.cpp)ament_target_dependencies(demo_oop_node rclcpp)install(TARGETS demo_node demo_oop_node #每个节点都要写上 DESTINATION...
004 常用工具
Created2025-06-04|09-ROS
常用工具Launch作用:通过Launch工具,我们可以同时启动多个节点,并且给节点传递参数 开发方式有3种开发方式,分别是用python、xml和yaml文件 使用方式参考:1.启动管理工具-Launch编写脚本 1ros2 launch <pkg> xxx.py colconcolcon就是ros2中用来编译功能包的工具(ros1中是catkin)简单来说,colcon是cmake的更高级的封装: 程序在cmake编译是这样的流程:cmake指令依据你的CMakeLists.txt 文件,生成makefiles文件,make再依据此makefiles文件编译链接生成可执行文件 colcon是将cmake与make的编译方式做了一个封装的指令工具, 规范了工作路径与生成文件路径,它会自动生成install和build和log文件夹 123456789# 在一个CMake项目里 mkdir build cd build cmake .. make make install # # 使用colconcolcon build ...
005 机器人建模
Created2025-06-04|09-ROS
机器人建模URDF为了在仿真软件里面加载机器人本体,我们通常需要对机器人进行建模。而ROS及一些仿真软件通常使用URDF(Unified Robot Description Format)格式的文件来对机器人建模 URDF是一种基于XML的机器人模型描述格式,主要用于定义机器人的连杆(links)、关节(joints)、几何形状和物理属性 基本结构URDF文件以<robot>为根标签,包含<link>(描述刚体)和<joint>(描述连接关系)两类核心标签 1234567<?xml version="1.0"?><robot name="my_robot"> <!-- 定义连杆 --> <link name="base_link">...</link> <!-- 定义关节 --> <joint name="joint_1"...
006 机器人仿真
Created2025-06-04|09-ROS
机器人仿真常见仿真软件目前市面上有许多机器人仿真软件,这些仿真软件其实是独立于ROS的,他们是通过一些物理引擎做的。通过一些插件,可以让这些仿真软件和ROS2结合。下面的笔记全是基于Gazebo的 所需参数仿真时URDF文件必须定义一些子标签: 碰撞(collison标签) 内参:包括物体质量(mass标签)、旋转惯量(inertia标签)、摩擦力(gazebo扩展的一些标签) Gazebo的使用Gazebo本身是个与ROS无关的软件,必须通过一些插件,才能让它和ROS2结合 启动直接启动Gazebo的话,不会启动对应的ROS2 node,这样的话就无法和ROS2联动了。所以启动Gazebo的时候必须指定ROS2插件 1gazebo --verbose -s libgazebo_ros_init.so -s libgazebo_ros_factory.so 此时会创建一个叫/gazebo的ROS节点,该节点创建了一些service,让我们可以与其交互(gazeo里面本身也有一些GUI操作工具,但是无法直接加载urdf文件) 1234567891011121314ros2...
14 Qt多线程
Created2025-06-04|08-Qt
...
13 绘图
Created2025-06-04|08-Qt
Qt的绘图系统Qt中的绘图和之前使用OpenCV时在图中进行绘图的方式差别还是很大的,在用OpenCV时,一般都是主动调用绘图函数就行了,但是在Qt中,如果要在控件上绘制东西,一般都得是在其绘图事件中进行绘制,并不能主动调用绘图函数。 Qt中针对不同的控件,绘图的方式区别很大 这些控件主要分为2类 继承自QWidget的控件:重写paintEvent,在此函数里面用QPainter进行绘图 Graphics View相关的控件:此类控件不会触发paintEvent,需要调用函数往场景中插入元素来显示 Qt的绘图系统主要包括2部分 QPainter绘图系统:绘制基本的点、线等形状组成自己需要的图形,得到的图形是不可交互操作的 Graphics View绘图系统:绘制复杂的组件化图形,每个图件是可选择、可交互的 1.QPainter绘图系统QPainter绘图系统主要包括以下几部分: QPainter类:用于进行绘图操作 QPaintDevice类:绘图设备的基类,每个可以用QPainter绘制的类,比如QWidget,QPixmap,...
15 Model View Delegate
Created2025-06-04|08-Qt
Model-View-Delegate结构1.基本概念Qt中的Model-View-Delegate框架类似于一种前后端分离的架构,将数据的显示与获取进行了分离。其组成如下图所示: 2.Model2.1基本概念Model是Model-View-Delegate设计的模式的核心组件之一,它负责存储、检索、更新和操作数据,并通过接口与View和Delegate进行通信。下面详细介绍其概念和作用: 数据管理: Model类负责管理应用程序中的数据,Model类通常提供了方法来添加、删除、修改和查询数据,以便在应用程序中进行数据操作。 数据提供: Model类向视图(View)提供数据,以便在界面上显示。视图通过与Model类交互来获取所需的数据,并根据数据的变化来更新界面的显示。Model类通常实现了一些接口,如data()、setData()等,以便视图可以获取和更新数据。 通知机制: Model类通常实现了信号-槽机制或其他通知机制,以便在数据发生变化时通知视图进行更新。当数据发生变化时,Model类会自动发出相关信号(比如dataChanged,...
12…14
avatar
Li Ruiqi
总有低谷
Articles
140
Tags
0
Categories
18
Follow Me
Categories
  • 01-计算机基础八股12
  • 02-开发工具11
    • CMake7
  • 03-C++15
  • 04-Linux39
    • 01-Linux基本操作6
    • 02-系统移植7
    • 03-内核开发19
    • 04-应用开发7
  • 05-MCU28
    • 01-FreeRTOS6
    • 02-STM329
    • 03-MSP4304
    • 04-LVGL4
  • 06-嵌入式硬件5
  • 07-RISC-V3
  • 08-Qt20
  • 09-ROS7
Website Info
Article Count :
140
Unique Visitors :
Page Views :
Last Update :
©2019 - 2025 By Li Ruiqi
Framework Hexo|Theme Butterfly
人因梦想而伟大