- 博客(19)
- 收藏
- 关注
原创 std_msgs::msg::Float32MultiArray()
【代码】std_msgs::msg::Float32MultiArray()
2025-04-08 20:58:23
290
原创 C++ 中成员变量初始化与 CAN 总线套接字的传递及应用
是 C++ 中的成员变量初始化列表语法,用于在构造函数中初始化类的成员变量。这是一种在对象创建时直接给成员变量赋值的方式,而不是在构造函数体中通过赋值语句来完成。的联系是通过构造函数参数传递和类成员变量的存储来实现的。是一个整数,表示 CAN 总线套接字的文件描述符。是构造函数的声明,表示构造函数接受一个参数 can_socket。函数,灵活地使用 CAN 总线套接字,而不需要依赖于全局变量。是成员变量初始化列表的一部分,表示将构造函数参数。函数中初始化的 CAN 总线套接字。类,并存储为类的成员变量。
2025-04-07 21:15:24
226
原创 c++数据传递的多线程
将当前Arm_Encoder对象传递给线程函数,以便线程可以访问类的成员变量和方法。发送一个取消请求给线程,强制终止线程。这个函数是线程的入口点,它接收一个。等待线程结束,确保资源被正确释放。类型的参数,该参数是传递给线程的。方法来处理CAN数据的接收。:用于创建一个新线程。类的构造函数中,通过。类的析构函数中,使用。
2025-04-07 21:02:16
164
原创 ros2中定时器在多线程中的注意事项
后续的回调会被延迟,直到前一个回调完成。通俗说就是后面的看到前面的还没完成,会在后面排队,前面的一旦完成就立刻补位。一秒产生一个新的定时器回调,但由于。执行时间,因此会现有5个回调函数被调用,当第一个回调函数处理完后,第二个回调函数由于只与第一个回调函数相隔。那么如何实现回调函数执行完毕后,创建定时器发布呢,感觉这个就比较类似多线程了。不能并行,所以后面产生的定时器回调只能在未完成的回调函数后面等待;被调用,因此过1s后便会被输出。创建一个,但是回调函数需要。由于是并发,所以定时器每。
2025-04-03 21:51:06
380
原创 ros2回调函数踩坑记录
(要从抽样信号中无失真地恢复原信号,抽样频率应大于2倍信号最高频率),定时器的频率应是回调函数。相互调用,导致相互依赖,起初可能可以运行,但某一刻出现两个回调函。ros2运行一段时间后,话题还在,但不存在数据。数都不调用对方,之后就无法再发布新的数据。之后经过反复调试后发现问题。且逆解数据变成随机数字。最初考虑是否是数据溢出。
2025-04-02 22:49:58
156
原创 ROS2回调组及多线程实现
直接利用 C++ 标准库的 std::thread 创建独立线程,完全脱离 ROS2 的回调组机制。假设有一个 ROS2 节点,包含两个定时器回调函数,它们共享一个计数器 shared_data_,并分别在不同的线程中并发执行。假设两个定时器各运行 1 秒(1000 次回调),期望 shared_data_ 的最终值为 2000(每次回调增加 1)。使用 std::mutex pub_mutex_ 定义互斥锁的目的是为了确保 共享数据(如计数器)的线程安全。每次运行结果可能不同,且通常远小于预期值。
2025-03-16 21:46:08
216
原创 随便写一点笔记
在C++中,十进制数、二进制数、八进制数和十六进制数都是整数的不同表示方式,它们在内存中都以二进制形式存储,所以可以相互进行加减乘除等运算。当 hexNumber 与 0x80000000 进行按位与运算时,只有 hexNumber 的最高位(符号位)为1时,结果才为非0值(具体为 0x80000000)。0x80000000 是一个32位的十六进制数,其二进制表示为 1000 0000 0000 0000 0000 0000 0000 0000。按位与运算的规则是:两个位都为1时,结果才为1,否则为0。
2025-01-10 00:43:26
235
原创 将一个以小端字节序存储的4字节数据转换为一个32位整数,并根据其符号位判断是正数还是负数,然后输出其10进制表示。
这段代码的目的是将一个以小端字节序存储的4字节数据转换为一个32位整数,并根据其符号位判断是正数还是负数,然后输出其10进制表示。
2025-01-08 23:56:55
157
原创 如何在 ROS 2 中使用多线程执行器(Multi-Threaded Executor)和回调组(Callback Groups)
在 ROS 2 中,回调组(Callback Groups)主要用于管理节点中的各种回调,以控制它们的执行方式和并发行为。订阅者(Subscribers)当你创建一个订阅者时,可以指定一个回调组。这样可以控制订阅者回调的执行方式,例如是否与其他回调并行执行。计时器(Timers)计时器的回调也可以通过回调组来管理。这对于需要定期执行的任务非常有用,你可以通过回调组来控制这些任务的并发执行。服务服务器(Service Servers)服务服务器的回调可以使用回调组来管理。
2025-01-07 23:35:22
1732
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人