- 博客(335)
- 收藏
- 关注
原创 ros2--节点组件
将节点对象(插件)使用rclcpp_components库中的宏RCLCPP_COMPONENTS_REGISTER_NODE()进行注册到一个组件中,最后通过cmake构建将这个组件生成共享库;在通过component_container容器工具就可以使用这个组件,component_container容器工具可以自动加载共享库,并启动拱北封装在共享库中的组件的节点。#--------第一层--定义容器对象--------------#
2024-07-19 15:58:46
986
原创 ros2--插件
一个插件本质上就是一个类对象;ROS中plugin插件实际上是将C++类通过pluginlib进行封装,编译为动态库(.so文件),使用的时候,再通过pluginlib提供的加载接口在主程序中进行运行时的加载这个插件对象。也就是插件被包装在库中。所以说ros中创建插件本质上就是创建动态库。
2024-07-18 20:37:06
348
原创 cmake--install
安装目录是指将软件安装到计算机文件系统中的特定文件夹或目录。安装目录包括可执行文件所在的文件夹、库文件所在的文件夹以及其他必要的文件和目录,例如配置文件、帮助文档、示例文件等。安装目录通常是在软件发布时和使用文件管理工具或安装程序进行设置的。具体来说,当用户安装软件时,安装程序会将该软件的文件和组件安装到特定的安装路径中。《就是某些特定的文件需要放入的目录》
2024-07-18 16:56:43
926
原创 ament_cmake
ament_target_dependenciesfind_package()只负责寻找到包,定义包的库文件和头文件路径:包名_DIR,包名_INCLUDE_DIRS。但是这些路径并没有和可执行文件或者库文件建立链接关系;这个ament_cmake接口可以将可执行文件或者库文件和寻找到的包的库文件和头文件建立链接,不需要我们再去指定库文件或者可执行文件的文件路径;find_package(rclcpp REQUIRED)find_package(pluginlib REQUIRE
2024-07-18 16:49:55
107
原创 ros2--rosdep
当使用 `rosdep` 安装 ROS 软件包时,它会自动下载并安装所有必需的依赖项,从而确保所需的所有软件包和库都可用,可以正确运行 ROS 节点。这时候就可以使用 `-i, --ignore-packages-from-source, --ignore-src` 选项,将 `catkin` 或 `ament` 包从依赖项列表中排除,从而避免冲突问题。在使用 `rosdep` 命令安装某个软件包时,可以通过 `--rosdistro` 选项来指定使用的 ROS 版本,从而确保安装适用于该版本的依赖项。
2024-07-17 18:31:30
534
原创 ros2--log--日志
ROS2的日志级别定义在文件的167-175行。ros2中日志是属于节点对象的,也就是需要通过节点对象获取节点的日志。获取节点的日志对象之后,才能对节点进行其他设置操作。
2024-07-16 11:30:51
134
原创 ros2--colcon
需要在工作空间,也就是src上一级目录colcon build;ros2的编译工具,用于编译ros2项目;很明显colcon作为构建工具,通过调用。
2024-07-11 14:54:44
153
原创 cmake--find_package
软件包(Package),也称为程序包或模块包,是一种将程序、相关文件和配置信息打包到一起的格式化文件集合,通常包括可执行文件、库文件、文档、示例代码等。不需要,只需要指定包的名称和其他参数。
2024-07-11 12:53:47
238
原创 网络传输---数据有序的实现
我们在网络中传输的数据是需要分包,分片传输的,那么发送,接收是否都可以保证数据是有序发送,有序接收,读取到的数据也都是有序的呢?
2024-06-30 16:03:39
293
原创 因特网,以太网,WLAN
全球相互连接起来的网络就是因特网。国际互联网络_百度百科 (baidu.com)国际互联网络,即为因特网(Internet),是目前世界上最大的计算机互联网络,它是由那些使用公用语言互相通信的计算机连接而成的全球网络,一旦你连接到它的任何一个节点上,就意味着您的计算机已经联入Internet网。这个节点对于个人来说就是连接上的路由,因为路由器对外连接的就是公网。
2024-06-30 14:18:49
184
原创 机器人---I/O
机器人的控制器上有输入/输出信号接口,这些接口的位需要与外部设备连接起来,用于向外部设备传输控制器的输入信号,和接收外部设备的输出信号。
2024-06-20 15:59:05
331
原创 线程池--thread_pool解析
国外的线程池库;作者:Barak Shoshany (baraksh@gmail.com) (http://baraksh.com)
2024-05-28 21:06:54
927
原创 []下标的意义
c++编译器为了防止对返回对象的修改,const限定的成员函数内不允许返回引用类型,所以报错。函数是const类型,而m_map[id]返回的是引用。m_map[0]返回的是引用还是值,还是指针。array[0]获取的是值,还是引用?
2024-05-28 10:16:13
123
原创 constexper----常量表达式
if constexpr (std::is_void_v<T>)`中的`constexpr`是C++11引入的关键字,用于。这种编译期求值的特性能够将一些运行时的判断和计算转换为编译期的操作,从而。
2024-05-28 09:05:55
122
原创 std::future<T>--std::promise<T>--std::async
std::promise`表示一个可以保存某个类型的值或异常的容器,可以通过调用`set_value`和`set_exception`方法将值或异常传递给与其关联的`std::future`对象。`std::promise`是C++11标准库中提供的一种同步机制,用于在线程之间共享数据。它通常与`std::future`一起使用,以便在异步操作完成时共享结果。,进而获取`std::promise`的值或异常。
2024-05-28 08:59:55
225
原创 [[nodiscard]]--c++17
用于标记某个函数或者类的成员函数的返回值需要处理。被标记的函数和类的函数被调用,但是返回值没有接收的时候,编译器会warning.
2024-05-27 20:17:28
174
原创 c++和Lua交互
Lua VM负责将Lua脚本编译成中间代码,然后将该中间代码解释执行或者编译成本地代码执行。在虚拟机之外,Lua的脚本代码并不能直接被计算机指令执行。因此,必须有想办法将其翻译为虚拟机能够解释和执行的代码。。所有Lua代码都会在虚拟机上进行模拟执行,而每个Lua函数都会被编译成虚拟机执行的代码,所以在Lua中无论是何种函数,都可以被视为一个可被调用的虚拟机程序。Lua VM的设计非常灵活,可以通过CAPI(Lua与C语言之间的接口)与C++代码互操作。
2024-05-24 18:30:17
1022
原创 机器人--路径--bezier
其中,Bezier 曲线是一种广泛应用于机器人轨迹规划和控制中的平滑曲线,它可以通过调整曲线上控制点的位置和权重来实现轨迹的平滑,使得机器人在不同姿态和速度下的运动更加流畅。在机器人路径规划和控制中,平滑度被认为是一个非常重要的性能指标,因为过高的平滑度意味着一种更加自然、更加高效的移动方式,降低对机器人的损耗,提高机器人的精度和稳定性。在线性插值中,假设有两个点 P0 和 P1,其中 P0 的坐标为 (x0, y0),P1 的坐标为(x1, y1),需要将这两个点之间的中间值 P 的坐标计算出来。
2024-05-23 20:16:39
759
原创 v-rep--lua接口和c++接口的关联
"loadPlugin", _loadPlugin:该元素表示将字符串"loadPlugin"和_loadPlugin函数指针绑定在一起,即当调用客户端程序中的sim.loadPlugin()函数时,实际上是在执行_loadPlugin函数中定义的操作,这个函数主要用于载入一个插件。2,要么就是这个lua接口没有lua语言的函数定义,而是通过和C++的接口绑定的,当调用这个lua接口时,实际上是去执行了绑定的C++接口,然后返回C++接口返回的内容,比如,sim.getObjectSel()。
2024-05-23 11:08:51
320
原创 v-rep---script-function
其实xml中使用script-function标签,最重要的就是要实现一个c++函数,内部通过调用sim::callScriptFunctionEx这个接口调用lua语言脚本(这里只讲lua这种脚本)函数,并执行脚本函数,返回脚本函数执行的返回值。用于声明一个函数,这个函数的作用是通过v-rep提供的接口sim::callScriptFunctionEx()调用脚本的函数,并且返回函数执行结果。这个参数是一个栈帧的id,这个栈用来存放传递脚本函数需要的参数和脚本函数执行返回的值。
2024-05-22 13:26:02
988
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人