- 博客(85)
- 收藏
- 关注
原创 C++ CONAN 包管理工具的使用方法
conanfile.txt 类似于 Python 的。:告诉 Conan 如何把依赖信息导出给 CMake;并且 Preset 版本和 CMake 版本一定要对应。我有一个项目 conan_demo,目录结构如下。升级 CMake 的方法见另一篇文章。CMake 会尝试读取。并解析相对路径(比如。:声明依赖的包和版本;
2025-10-28 10:44:35
176
原创 conda 创建虚拟环境的一些坑
2️⃣ 如果找不到对应包,再去全局配置的 channels(即。通常不是环境文件或 Conda 本身配置的问题,而是。3️⃣ 如果两个地方都没有,再用默认的官方源(执行创建虚拟环境的脚本。1、增大文件描述符数量。导致下载或解压中断。2、conda 换源。
2025-10-22 11:54:34
536
原创 ubuntu 系统扩容,多硬盘挂载
我的电脑有两个磁盘,系统盘 /dev/nvmen1p2 以及机械硬盘 /dev/sda1,我装了 ubuntu 系统后,根目录 / 全部挂载到系统盘 /dev/nvmen1p2,导致现在空间不足了。于是我打算将 /home 挂载到机械硬盘 /dev/sda1 中,接下来请看我操作。
2025-10-22 09:54:59
491
原创 行为树中关于端口的一些记录
其中,XML 中 text="{the_answer}" 表示节点端口与黑板相关,如果节点中的 providedPorts 中的定义为 InputPort,则说明将黑板中的 {the_answer} 写入 text 端口,反之同理。框架要求你必须在节点类里定义一个静态函数 ,例如定义了一个名叫 message 的输入端口。在 BehaviorTree.CPP 中,每个节点(Node)都有可能需要和外界交换数据。
2025-10-17 16:12:46
431
原创 ROS 2 中用于建图的一些 topic
nav_msgs/OccupancyGrid 类型,Nav2 的map_server会把整张地图发布一次,之后就不再连续推送;新订阅者会收到这条“最后一次”的缓存消息,地图若有增量变化,会走另一个话题),而不是反复发整张/map。stamp:时间戳(这里是 14.200000000 s),通常来自地图发布时的时间或回放时间。:该消息所在坐标系(地图坐标系)。:地图生成/加载时刻(与上面时间一致)。:每个栅格 0.05 m,即 5 cm/格。width: 314:栅格宽高(单位:格)。对应实物尺寸约在。
2025-08-18 13:44:50
330
原创 ROS2 TurtleBot3 在rviz中加载地图进行导航
3、在 rviz 中使用 2D Pose Estimate 标记出机器人当前位置。2、启动 rviz,加载扫描地图 和 navigation2。4、在 rviz 中使用 Nav2 Goal 标记出目标位置。1、启动 gazebo 加载仿真场景。
2025-07-08 15:59:05
271
原创 ROS2 turtlebot3 使用 gazebo 建图并在 rviz 中显示
4、在 rviz 中保存配置,并且在命令行中保存地图。1、启动 gazebo 加载机器人模型和地图。3、使用键盘控制 gazebo 中的机器人。
2025-07-08 14:21:32
218
原创 Ubuntu 22.04 安装英伟达驱动
2、如果碰到 the target kernel has CONFIG_MODULE_SIG set......,则 ctrl C 中断安装,进入 BIOS 将 “安全启动/Security”改为 Disabled,然后重新启动并执行安装。4、Would you like to run the nvidia-xconfig utility to automatically update your X configuration.....选择 Yes。2、禁用 x-server。3、赋予安装包权限,并执行。
2025-07-08 09:55:05
517
原创 gazebo gzclient 启动失败
我询问了 GPT4,它给出的答案是没装英伟达驱动,于是我去装了,还是报错,最后发现是没加载环境变量。然后再启动,问题解决。
2025-07-08 09:31:33
374
原创 Qt6 ROS2 可执行文件找不到动态库
现在已经可以成功 colcon build,但是运行 ros2 run 还是会报错:可执行文件无法链接到动态库。但是 build 目录中的可执行文件是可以成功链接到动态库的。但如果使用 Ubuntu 22.04 自带的 Qt5 就不会这样,因为系统自带了 Qt5 的库,所以推荐使用 Qt5。最近在 Ubuntu 22.04 中尝试了一下使用 Qt6 启动上位机,同时启动 ROS2 节点,有很多坑。每次必须手动导入动态库,再 ros2 run。CMakeLists.txt 如下。
2025-07-01 17:28:36
246
原创 MoveIt 2 是什么?
MoveIt 2 通过 action、topic(如 FollowJointTrajectory action 或 joint trajectory topic)把轨迹交给下游的控制器(如 ros2_control),后者最终驱动真实机械臂运动。通过 API、Action 或者 Rviz2 里的操作,发出“到达目标”的指令。通常是 URDF 或 xacro 文件,描述关节、连杆、末端、运动范围等。在 Rviz2 里显示规划轨迹、碰撞信息、场景、末端目标等。返回是否成功规划、是否发生碰撞、到达目标与否等。
2025-06-25 10:17:14
603
原创 使用 launch 启动 rviz2 并加载机器人模型
4、创建 chapt6_ws/src/fishbot_description/launch/display_robot.launch.py,注意.rviz文件可以通过第一次加载机器人后保存得到。2、创建机器人描述文件,chapt6_ws/src/fishbot_description/urdf/first_robot.urdf。5、修改 chapt6_ws/src/fishbot_description/CMakeLists。
2025-06-22 16:58:49
509
原创 ros2 动作回调函数
创建服务实例,并初始化3个回调函数,回调函数的顺序很重要,第一个回调函数用来确定是否接受该任务,第二个用来处理取消,第三个用来执行接收该任务后的逻辑(一般会异步启动任务)。
2025-06-16 17:44:07
301
原创 ros2 自定义接口
此时自定义接口添加成功,可以在 chapt3_ws/src/example_ros2_interfaces/include 中找到 C++ 和 python 的头文件/包。2、手动创建 msg/RobotPose.msg, msg/RobotStatus.msg 和 srv/RobotStatus.msg,并写入内容。1、在工作区 chapt3_ws/src 中创建功能包 example_ros2_interfaces。注意:.srv 文件中一定要使用 --- 来分割,不然 python 包会报错。
2025-06-11 16:17:35
332
原创 ros2 实现一个简单的加减法服务端和客户端
在 example_service_rclcpp/src 中创建节点,如客户端、服务端等。工作空间为 chapt3_ws,创建功能包。再起另一个终端,运行客户端。然后在工作空间中进行编译。
2025-06-11 11:23:10
154
原创 ROS-编写工作区、功能包、节点
新建功能包,功能包命名为 example_cpp,放在 chapt2_ws/src/ 中。新建工作区,chapt2_ws 文件夹就是一个工作区。修改 CMakeLists.txt,加入下面三行。在工作空间 chapt2_ws 目录进行编译。
2025-06-10 17:46:39
193
原创 windows/linux 模拟鼠标键盘输入
windows 使用 SendInput (用户空间 API)linux 使用 X11 库 (用户空间 API)以上方式都是调用了用户空间的 API 来实现。接下来介绍驱动层模拟的方式。
2025-05-20 14:14:53
726
原创 浏览器开发随笔
浏览器通过 HTML 解析器(HTML Parser)将文本流逐行解析为一个树状结构:DOM(Document Object Model)。IPC 在 Chromium 中广泛使用于进程管理、页面导航、JS 执行控制等。Rasterizer 将矢量图形(路径、文本、颜色等)转为 bitmap 像素图。主进程(Parent Process)功能类似 Browser Process。防止跨站脚本攻击(XSS)、站点隔离(Site Isolation)独立进程处理网络请求(HTTP、WebSocket 等)
2025-05-20 13:34:54
828
原创 Qt C++/Go/Python 面试题(持续更新)
虚函数是通过虚函数表实现的,含有虚函数的类在构造函数中会初始化虚函数表指针,它存储在类内存中,指向虚函数表,虚函数表存储指向每个虚函数的指针,多个类对象共用一张虚函数表。虚函数和普通函数都存储在代码段。构造函数不能为虚函数,因为虚函数表指针需要在构造函数中初始化。析构函数最好为虚函数,这样当一个指向派生类的基类指针被释放时,可以先调用派生类析构函数,再调用基类析构函数,否则只会调用指向的类的析构函数。
2025-04-24 18:21:32
1297
原创 C++ 基类的虚析构函数与派生的析构函数关系
Derived class destructor,Base class destructor,即调先用了派生类的析构函数,再调用基类的析构函数。:Derived class destructor,Base class destructor,即调先用了派生类的析构函数,再调用基类的析构函数。:Derived class destructor,即只调用了派生类的析构函数,未调用基类的析构函数。:Base class destructor,即只调用了基类的析构函数,未调用派生类的析构函数。调用基类的析构函数。
2025-04-08 21:48:54
419
原创 关于GO项目中swag init报错“Error parsing type definition”
【代码】关于GO项目中swag init报错“Error parsing type definition”
2025-02-21 10:25:51
233
原创 GO语言sort.Search二分查找用法
是 Go 语言标准库中的一个函数,用于在已经排序的数组或切片中执行二分查找,我们再简化一下,查找第一个大于或等于 35 的位置。条件的位置,此时匿名函数返回true,即。数组中查找第一个满足。
2025-02-11 10:18:56
385
原创 C++与QML的数据交互
这里没什么好说的,在C++中组合好json后,通过信号发送到qml中,qml中是可以解析json的。通过Q_PROPERTY属性,可以轻松地在QML中读取和修改数据,并将其更新到C++中,先创建一个类。在QML接收,直接通过data.can_id这样的形式去访问结构体中的元素。这两个也没什么好说的,在C++中直接发送信号就好了,在C++中声明并注册一个结构体。然后发送信号到QML中。
2024-09-11 15:28:58
817
原创 关于Ubuntu中使用命令行安装Qt的一些分享
并且会出现 usr/lib/qt5, usr/lib/x86_64-linux-gnu/qtchooser, usr/lib/x86_64-linux-gnu/qt-default三个目录。这条命令执行后,会在 usr/lib/x86_64-linux-gnu/qt5 目录中补充一些文件,比如语言家。以Ubuntu 22.04为例。2、安装qtcreator。1、安装默认的Qt库。
2024-08-20 17:58:30
810
原创 linux环境打包QML程序
此时会生成libqxcb.so的库文件,并存储在/platforms/lib中,此时将整个platforms文件拷贝到project文件中,并将Qt/6.5.3/gcc_64/plugins/platforms/lib与copylib.sh删除;4、将project/platforms/lib中的文件都拷贝到project/中,并删除project/platforms/lib文件夹,到这一步,QWidget程序就可以运行了,但如果是QML,则需要继续;然后在文件夹目录中执行。
2024-06-14 15:03:38
834
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅