
ros
文章平均质量分 58
以实战为线索,提供有价值源码
_无往而不胜_
明天的你会感谢今天努力的自己!
展开
-
ROS2 的所有控制台命令
ROS2 的所有控制台命令原创 2025-01-16 20:49:24 · 926 阅读 · 0 评论 -
反光柱定位算法中的移动机器人姿态计算原理-经典三边定位最小二乘法计算定位-直接法计算定位
(二)计算姿态方式是我们已经通过最小二乘得到了小车在地图中的位置或者是雷达在地图中的位置,又因为我们知道雷达与小车的安装坐标,所以可以求解出一其中一个坐标的知量,通过小车在地图中坐标与雷达在地图中坐标可以得到一条向量,通过计算向量在地图中的角度就能得到姿态了。与最小二乘三边测量法相比,新算法在动态调整、优化过程和鲁棒性方面优势明显,尤其适合动态环境下的机器人定位,而最小二乘三边测量法在动态复杂环境中精度相对较低。(一)与(二)的区别主要是在计算姿态上的算法不同。经典三边定位最小二乘法 (法一)原创 2024-09-26 16:50:25 · 646 阅读 · 0 评论 -
反光柱定位算法-雷达强度数据包
读数据: roslaunch fanguangbantrilateration rosbag_trilateration_play.launch。注意:没有代码只有雷达强度数据 rosbag ,以及强度数据对应表(json格式)。文件中包含3个数据。部署在环境中的反光柱数据 calculate.txt。文件: scanIntensities.txt。反光柱定位算法,增加匹配显示颜色的更改功能。反光柱定位算法-雷达强度数据包。系统:ubuntu20.04。ros1版本: noetic。原创 2024-09-26 15:38:37 · 672 阅读 · 0 评论 -
UTILITY may not be linked into another target. One may link only to INTERFACE, OBJECT, STATIC or SHA
geneus;genlisp;gennodejs;解释:这个错误是由于在CMake中试图将一个UTILITY类型的目标()链接到其他目标,而这在CMake中是不允许的。UTILITY类型的目标通常用于生成特定代码或配置文件,不应被链接到其他库或可执行文件。原创 2024-09-06 19:46:43 · 587 阅读 · 0 评论 -
把ros消息转换成中文输出
【代码】把ros消息转换成中文输出。原创 2024-07-16 12:55:35 · 301 阅读 · 0 评论 -
laser坐标系下的点,转到map坐标系下
使用局部变量来存储是推荐的做法,可以确保线程安全并简化代码管理。除非有特殊需求(如需要跨多个函数共享同一个转换矩阵),否则不需要将声明为静态变量。原创 2024-06-25 18:12:42 · 453 阅读 · 0 评论 -
因路径规划异常导致导航停止 Failed to pass global plan to the controller
因路径规划异常导致导航停止 Failed to pass global plan to the controller原创 2024-06-20 19:45:04 · 286 阅读 · 0 评论 -
通过向量叉乘计算姿态充电桩朝向
两线段的交点合方向的朝向即为x正方向,geometry_msgs::PointStamped mid 与 intersection_ros_point 连成直线作为姿态的x轴,坐标系遵循右手法则,计算Z轴方向向量用(geometry_msgs::PointStamped mid 与 intersection_ros_point 向量与 intersection_ros_point与intersection_ros_line2向量叉乘得到)。原创 2024-06-17 13:20:59 · 616 阅读 · 0 评论 -
使用 pcl::VoxelGrid报错In template: type ‘detail::CopyPointHelper<PointXYZ, PointXYZ>‘ does not provide
In template: type 'detail::CopyPointHelper' does not provide a call operator error occurred here in instantiation of function template specialization 'pcl::copyPoint' requested here in instantiation of func原创 2024-06-13 11:31:05 · 965 阅读 · 0 评论 -
发布sensor_msgs::PointCloud2点云数据
这个代码片段展示了如何将一个std::vector转换为一个sensor_msgs::PointCloud2消息,并通过ROS发布它。你可以根据需要修改点的生成逻辑和消息的发布频率。原创 2024-06-05 14:42:20 · 1314 阅读 · 0 评论 -
C++ 实现深度优先搜索(DFS)的简单示例代码
【代码】 C++ 实现深度优先搜索(DFS)的简单示例代码。原创 2024-05-20 17:52:16 · 643 阅读 · 0 评论 -
广度优先算法demo
【代码】广度优先算法demo。原创 2024-05-20 17:24:49 · 164 阅读 · 0 评论 -
判断点云是否是圆或是是否是直线
判断点是否是圆或是是否是直线原创 2024-05-13 14:22:04 · 310 阅读 · 1 评论 -
使用chrono替换ros::Time::now()赋值给sensor_msgs::LaserScan消息中的header.stamp
这里定义了一个辅助函数to_ros_time,它接受一个std::chrono::system_clock::time_point对象,并将其转换为ros::Time。这样,虽然在赋值给header.stamp时仍使用了ros::Time,但您在其余代码中可以尽可能地使用std::chrono进行时间处理,仅在与ROS接口交互时进行必要的转换。使用std::chrono获取当前系统时间,并将其转换为sensor_msgs::Header::stamp结构所期望的秒(sec)和纳秒(nsec)形式。原创 2024-04-24 09:37:41 · 1035 阅读 · 0 评论 -
使用代理后github克隆报错:failed: The TLS connection was non-properly terminated.
git克隆报错:failed: The TLS connection was non-properly terminated. gazebo_ros_control原创 2024-04-11 10:27:52 · 901 阅读 · 0 评论 -
rostopic echo /tf 筛选特定数据
rostopic echo /tf 监听 base_link到map的坐标系。命令中指定您要筛选的条件。例如,如果只想要包含特定关键词的消息,可以使用。如果需要更复杂的筛选条件,您可能需要使用。如果想要筛选特定的消息,需要使用其他工具,例如。显示格式: 序号, 序号,指定输出的消息数量,并且可以使用参数。命令本身并不支持直接筛选指定的消息。表示以消息格式打印,然后通过管道。将输出以消息格式打印。表示只显示最新的一条消息,等工具来进一步处理消息。命令时,您可以使用参数。的变换信息,您可以使用。原创 2024-03-27 15:31:41 · 797 阅读 · 0 评论 -
slam中地图地图原点坐标系或world或grid坐标系在map坐标系下的转换关系
计算小车base_link在world或grid坐标系或地图原点坐标系下的坐标。原创 2024-03-22 10:31:56 · 332 阅读 · 0 评论 -
cartographer建图时报Could not compute submap fading: Could not find a connection between ‘map‘ and ‘base
可以看到map与base_link直接缺少tf链接。这里需要在配置文件中把这个 “provide_odom_frame = true,--是否提供里程坐标系 “ 参数设置为true;:这个错误表明在TF (Transform)树中,'map' 和 'base_link' 之间缺少连接。这可能是由于 TF 树的配置问题导致的,或者可能是由于传感器配置问题导致的。具体配置文件:a_ros1_backpack_2d_imu_odom.lua。原创 2024-03-06 16:29:54 · 1568 阅读 · 0 评论 -
ros中设置超时时间ros::Time::now()
建议把ros中的时间替换:【在本机虚拟机中测试有时候会因为这个时间出系统问题,导致程序卡主】原创 2024-02-29 19:31:11 · 863 阅读 · 0 评论 -
C++ 中,可以使用 std::this_thread::sleep_for 函数来设置线程的等待时间,替换ros::Duration(0.1).sleep()
C++ 中,可以使用 std::this_thread::sleep_for 函数来设置线程的等待时间,替换ros::Duration(0.1).sleep();原创 2024-02-29 17:28:47 · 1016 阅读 · 0 评论 -
fatal error: costmap_2d/keepOutZone.h
fatal error: costmap_2d/keepOutZone.h。原创 2024-02-22 15:34:42 · 759 阅读 · 8 评论 -
cartographer编译失败
cartographer在编译的过程中,报错:multiple rules generate CMakeFiles/ ,提示编译pb.cc 文件冲突;把ninja换成1.8版本。报错消失。原创 2024-01-26 11:53:14 · 1743 阅读 · 0 评论 -
cartographer离线建图报错: reference_counts_.count(key) (1 vs. 0) Key ‘max_match_variety_distance‘ was used
cartographer离线建图报错: reference_counts_.count(key) (1 vs. 0) Key 'max_match_variety_distance' was used原创 2024-01-25 18:32:04 · 1090 阅读 · 0 评论 -
dpkg:警告:无法找到软件包 XXXX 问题解决
E: 无法下载 http://mirrors.aliyun.com/ubuntu/pool/main/x/xserver-xorg-video-vmware-hwe-18.04/xserver-xorg-video-vmware-hwe-18.04_13.3.0-2build1~18.04.1_amd64.deb Undetermined Error [IP: 111.48.186.110 80]来重新安装全部软件,会全部刷新info目录。原创 2024-01-09 12:49:01 · 2716 阅读 · 0 评论 -
FreeImage 编译安装
FreeImage源码安装原创 2023-11-27 12:19:31 · 1950 阅读 · 0 评论 -
ubuntu 使用webrtc_ros 编译linux webrtc库
【代码】ubuntu 编译linux webrtc库。原创 2023-11-25 13:00:54 · 1478 阅读 · 0 评论 -
sudo apt update报错:Failed to fetch https://deb.opera.com/opera-stable/dists/stable/InRelease
请注意,使用 apt-key 的方法在新版 Ubuntu 中已被弃用,因此推荐使用 gpg 命令来导入公钥。如果你还是遇到问题,可能需要考虑检查 Opera 软件包的来源,确保它是正确的。你还可以考虑更改软件源,使用官方的 Opera 软件源。这个问题表明你的系统在尝试更新 Opera 软件包时遇到了 GPG 错误,因为无法验证签名,可能是由于缺少公钥。要解决这个问题,你可以尝试导入 Opera 软件包的公钥。然后再次运行 sudo apt update 进行更新。原创 2023-11-25 12:26:03 · 642 阅读 · 0 评论 -
moveit_msgs/RobotTrajectory 转换moveit_msgs/DisplayTra,moveit::core/RobotState转换moveit_msgs/RobotState
【代码】moveit_msgs/RobotTrajectory 转换成moveit_msgs/RobotState,moveit::core::RobotState转换moveit_msgs::RobotSt。原创 2023-07-20 18:44:49 · 526 阅读 · 0 评论 -
world_canvas的ros项目安装部署
git上 world_canvas 只有一个版本,看他使用的是python2.7,预测这个项目是noetic之后的版本;world_canvas 项目使用的是qt4,而我是qt5,需要改动下 cmakelist.txt。改 world_canvas 中的所有py文件中的python改python3。我没跑起来,不知道这个项目是什么样的,没看到任何功能和界面。应该是版本不兼容,到此为止,不想在下功夫了,时间太宝贵!我手上笔记本是noetic的版本,花4小时尝试跑一下;系统ubuntu20.04。原创 2023-06-12 21:27:18 · 1687 阅读 · 0 评论 -
ros-rviz
web-rvzi原创 2023-06-08 09:38:10 · 920 阅读 · 0 评论 -
使用原生的 JavaScript,不依赖于任何特定的库与 ROSBridge进行通信
rosbridge 的目标是提供一个方便的接口,使得在浏览器或其他 WebSocket 支持的环境中的应用可以与 ROS 进行通信,而不是直接实现 ROS 节点。因此,如果你想在 JavaScript 中实现 ROS 服务端,你可能需要研究如何使用 rosnodejs 或其他类似的库,或者可能需要自己实现与 ROS 核心通信的功能。在 rosbridge 的设计中,它是作为一个 ROS 的客户端,可以通过它订阅和发布话题、调用和提供服务、发送和接收 action 目标和反馈。原创 2023-05-25 09:02:01 · 899 阅读 · 0 评论 -
ubuntu中安装autogpt,python虚拟环境安装使用
autogpt支持python版本是3.10,ubuntu20.04中默认版本3.8是不支持的。pip install -r requirements.txt 加阿里云镜像安装库。在home目录下创建目录。进入 AutoGPT。查看python版本。原创 2023-05-23 10:36:53 · 878 阅读 · 1 评论 -
ros系统中写入和读取plan路径到文件
读取txt中的path plan数据。保存路径到文件txt中。geometry_msgs/PoseStamped原创 2023-05-18 10:17:17 · 683 阅读 · 2 评论 -
rosservice中的回调函数中调用其它线程中的数据作为返回值
的回调函数是在单独的线程中执行的,而在回调函数中直接调用其他线程中的数据作为返回值可能会导致问题,因为在多线程环境下,数据访问可能存在竞争条件和不确定性。在数据所在的线程中,提供一个接口或方法,用于安全地读取该数据并将其复制到全局变量中。通过使用条件变量和互斥锁,可以实现线程间的同步和协调,确保数据的正确性和线程的安全执行。为了安全地在回调函数中访问其他线程中的数据并将其作为返回值,可以使用同步机制来确保数据的正确性。在回调函数中,当需要返回数据时,获取互斥锁,并使用全局变量中的数据作为返回值。原创 2023-05-17 13:24:18 · 1046 阅读 · 0 评论 -
ros中创建静态ros::ServiceServer可确保服务只在第一个类实例创建时初始化
注意:pause_cmd_vel_service_ = nh.advertiseService("pause_cmd_vel", &AbstractControllerExecution::pauseCmdVelCB);void AbstractControllerExecution::run()中409行增加以下代码实现暂停活启动小车,原理是控制/cmd_vel,也可以在里程计中控制/cmd_vel达到同样的效果;类中只初始化一次,可以使用静态变量确保服务只在第一个类实例创建时初始化。原创 2023-05-12 13:11:06 · 791 阅读 · 0 评论 -
ros中使用自定义状态机
获取当前参数(多参数,多类型传递 std::vector params)定义状态机的类:NavigationStateMachine。原创 2023-05-10 13:59:32 · 617 阅读 · 0 评论 -
路径path保存到文件中,std::vector<geometry_msgs::PoseStamped> plan集合中的坐标数据保存到 txt文件中
1.std::vector plan集合中的坐标数据,4元素转成欧拉角保存到 txt文件中。2.std::vector plan集合中的坐标数据,4元素转成欧拉角保存到 txt文件中。原创 2023-05-04 12:52:36 · 339 阅读 · 0 评论 -
控制台ping端口号
控制台ping端口号,telnet ip prot:检查ip 联通与端口号是否打开原创 2023-04-27 14:07:50 · 8147 阅读 · 0 评论 -
ros中获取小车当前位置
ros中获取小车当前位置原创 2023-04-04 13:40:03 · 2712 阅读 · 0 评论 -
std::vector的其它操作
std::vector的其它操作,调整vector队列,使之满足小根堆的性质,排序,查找原创 2023-04-03 15:49:52 · 1069 阅读 · 0 评论