点PY
If you cannot risk, you cannot grow. If you cannot grow, you cannot become you best. If you cannot become you best, you cannot be happy. If you cannot be happy, what else matters?
展开
-
rosbag中的图像话题转为图片
【代码】rosbag中的图像话题转为图片。原创 2024-08-05 09:48:57 · 112 阅读 · 0 评论 -
在ros中获取话题的发布节点名称(C++)
在ROS中,直接从订阅回调函数中获取发布该话题的节点信息并不直接支持。ROS设计的发布-订阅机制并没有直接提供在回调函数中获取发布节点的接口。使用rosnode:可以通过rosnode命令行工具来查看发布者的信息。虽然这无法在回调函数中直接使用,但可以通过在回调函数之外运行命令来获取信息。使用ROS Master API:ROS提供了一些API,可以用来查询发布者的信息。记录发布节点的信息:如果你能够控制发布节点,你可以在消息中包含发布节点的信息。例如,在消息中增加一个字段,包含发布该消息的节点名。原创 2024-06-05 10:58:44 · 73 阅读 · 0 评论 -
ROS——Action学习
Action文件ROS通过action文件定义ActionAction文件通常位于/action文件夹中Action文件的名字通常为.actionAction类型包含goal、feedback、result三部分。原创 2024-05-10 14:50:11 · 171 阅读 · 0 评论 -
修复bag.active文件
在ROS(Robot Operating System)中,rosbag 是一个非常有用的工具,它用于记录和回放ROS的消息数据。当你使用 rosbag record 命令时,它会记录数据到一个bag文件中。在记录过程中,这个文件会有 .active 后缀,表示这是一个当前正在写入的活跃文件。如果是第二种情况,你可能需要“修复”这个bag文件以便能够正常读取。如果检查通过,则说明修复成功,可以正常使用这个 bag 文件。这将生成一个新的修复后的 bag 文件。原创 2024-04-23 17:14:04 · 313 阅读 · 0 评论 -
如何在rosbag中获取第一帧数据
首先,你需要知道你感兴趣的话题名称。可以通过rosbag info your_bagfile.bag来查看bag文件中包含的话题。回到运行rosbag play的终端,按空格键继续播放。rostopic echo命令应该会打印出第一帧的数据,然后立即退出。在另一个终端窗口,使用rostopic echo命令加上-n 1选项来订阅你感兴趣的话题。这将只打印出第一条消息。使用–pause选项启动bag文件,这将在播放开始时暂停。原创 2024-04-11 16:21:31 · 115 阅读 · 0 评论 -
在ros中获取两个坐标系的外参关系
RViz是一个可视化工具,可以帮助你直观地看到不同坐标系之间的关系。在RViz中,添加一个TF显示,就可以看到所有活动的坐标帧及其之间的关系。在这两个例子中,替换frame1和frame2为你实际的坐标帧名称。如果你使用的是较新的ROS版本,tf2_ros是tf的后继者,提供了更多的功能和更好的性能。这会显示frame1相对于frame2的位置(平移)和姿态(四元数表示的旋转)。在ROS节点中,你可以编写C++或Python代码来查询两个坐标系之间的变换。原创 2024-03-31 22:41:21 · 86 阅读 · 0 评论 -
在ROS中监听话题的回调函数是否正常运行
首先,你需要创建一个ROS节点,并在其中设置一个Subscriber来监听你关心的话题。然后,在回调函数中更新一个时间戳,表示最后一次接收到消息的时间。你还可以设置一个定时器来定期检查自那以后是否收到了消息。在ROS中,如果你想要用C++实现一个监听话题,并在话题没有正常运行(即在预定的时间内没有接收到任何消息)时发出报警,你可以使用ros::Time和回调函数来实现。这个例子中,我们订阅了一个叫/topic_name的话题,并且如果在5秒内没有收到任何消息,节点就会打印一条警告信息。原创 2024-03-19 17:13:43 · 73 阅读 · 0 评论 -
基于TCP技术在ROS1和ROS2中实现多机通讯
两台主机共用一个网络,分别为ROS1和ROS2版本,为了实现两台主机之间的通讯,采用TCP通讯技术。原创 2024-01-11 16:48:11 · 544 阅读 · 2 评论 -
局域网下的ROS多机通信
该部分网络上的教程错综复杂,有用配置文件进行配置的,有通过设置进行配置的,还有很大一部分是windows系统下的配置方法等等。但针对ubuntu系统的,系统设置的配置教程几乎没有。假设机载电脑主机名称为robot_hostname,ip为robot_ip,PC端主机名称为desktop_hostname,ip为desktop_ip。登录成功后,终端显示对方电脑的用户名与主机名。修改完成后,输入命令重启网络,ubuntu18.04可以使用如下命令。进行hosts文件修改,通过下面的指令打开该文件。原创 2023-12-28 20:35:50 · 1275 阅读 · 0 评论 -
ROS定时器回调
Timers能让你以一定的频率来执行他们是比ros::Rate更加灵活和有用的形式,ros::Rate在编写简单发布节点和订阅节点用到。注意:定时器不是实时的线程/内核替换,也不能保证它们的准确度,因为系统负载/功能会有很大的变化。更多可以参考: roscpp Timers overview。原创 2023-10-09 13:38:10 · 178 阅读 · 0 评论 -
用python3编译cv_bridge
因此,我尝试在catkin工作空间本身内编译open_vision包(noetic-branch),并相应地修改CMakeLists.txt,认为它会工作。然而,如果我想坚持用OpenCV 4编译分支,另一个问题出现了,因为分支是基于OpenCV 3的。此外,由于对Python 2.7的支持于去年(2019年12月)结束,建议停止使用Python 2.7,因为它将不再更新,并转向Python 3。因此,本教程将介绍如何使用ROS Melodic编译Python 3 ROS包,特别是cv_bridge。原创 2023-09-20 14:27:01 · 232 阅读 · 0 评论 -
ROS参数名称设置
在 node 标签外设置的参数是全局性质的,参考的是 / ,在 node 标签中设置的参数是私有性质的,参考的是 /命名空间/节点名称。设置参数调用API是ros::param::set,该函数中,参数1传入参数名称,参数2是传入参数值,参数1中参数名称设置时,如果以 / 开头,那么就是全局参数,如果以 ~ 开头,那么就是私有参数,既不以 / 也不以 ~ 开头,那么就是相对参数。在 C++ 中,可以使用 ros::param 或者 ros::NodeHandle 来设置参数。ros::param设置参数。原创 2023-09-14 13:38:13 · 68 阅读 · 0 评论 -
ROS多话题同步回调
这种方法根据输入消息的时间戳进行近似匹配,不要求消息时间完全相同。这种方法要求输入的消息的时间戳必须完全相同才调用回调函数。原创 2023-09-08 14:00:09 · 248 阅读 · 0 评论 -
ROS节点关闭后发布话题
思路是在ros::init中使用ros::init_options::NoSigintHandler选项,然后用signal函数注册自己的回调函数,用该回调函数控制原子变量g_request_shutdown从而获得节点的运行状态,最后用ros::shutdown()手动关闭节点。按ctrl+c结束节点,将发布轨迹话题。新建另一个terminal键入。在一个terminal键入。在rviz中可视化结果。原创 2023-09-04 20:24:11 · 114 阅读 · 0 评论 -
ros编译catkin_make/catkin build 报错“string no output variable specified”
如果还是报错:bash: /usr/bin/lsb_release: /usr/bin/python3: 解释器错误: 没有那个文件或目录。显示:bash: /usr/bin/lsb_release: /usr/bin/python3: 解释器错误: 没有那个文件或目录。python的原生环境遭到破坏,识别不到lsb这个文件。然后重新选择默认版本。原创 2023-08-14 16:39:19 · 213 阅读 · 0 评论 -
启动roscore遇到SyntaxError: invalid syntax
修改python版本为python2。python版本与文件不匹配。编辑roscore文件。原创 2023-08-02 11:06:08 · 313 阅读 · 0 评论 -
在jetson上编译适配opencv4.x版本的cv_bridge package
在jetson上安装适配自己opencv版本的cv_bridge,从而解决cv_bridge中opencv版本,与opencv4.x之间的冲突。修改CMakeLists.txt,声明Opencv4.x路径,代码如下。PS:根据自己的ROS版本进行调整。原创 2023-07-28 10:30:32 · 151 阅读 · 0 评论 -
订阅realsense的IMU话题
针对相机的各种配置参数,通过 /realsense-ros/realsense2_camera/launch/rs_camera.launch 文件传给ROS系统。使用命令行rostopic echo /camera/imu查看IMU数据,同一个数据中同时包含两个传感器数据。若使用linear_interpolation选项,可以将加速计的数据以插值的方式对齐到陀螺仪数据时间轴上;若使用copy选项,则是在每一个陀螺仪数据上,附加上时间最近邻的加速计数据。默认选项为:None。原创 2023-07-26 14:01:49 · 332 阅读 · 0 评论 -
MoveIt 笛卡尔规划器指南
MoveIt用户经常询问我们如何规划机器人操纵器的笛卡尔运动。这种运动对于需要末端执行器或工具沿表面遵循精确路径的许多应用非常有用,例如在焊接和喷漆应用中看到的。另一个非常适合笛卡尔规划的应用程序是闭环实时应用程序,这些应用程序需要机器人做出非常反应的行为,例如远程操作。笛卡尔规划者历来没有考虑避免碰撞的能力,而是假设工作空间相对没有障碍物。这种假设在许多应用中都适用,但随着对机器人技术的需求不断增加,需要将笛卡尔规划器与另一类规划(全局运动规划)相结合。原创 2023-06-29 14:39:07 · 256 阅读 · 0 评论 -
ROS——从深度图转换到octomap(C++)
八叉树是用于在3D视觉中细分空间的数据结构。每个立方体都可以逐级地细分为8个子立方体,直到达到了给定的最小体积(体素)尺寸。且该最小体积(体素)决定了八叉树的分辨率。通过点云生成占用空间小、内容紧凑的地图,节省空间合并了融合后的点云出现的重叠细节,提高运算效率方便用于进行路径规划、导航、碰撞检测一般场景比较大时,采用较低的分辨率,意味着方块更少,且更大。场景较小时,采用高分辨率,提高精度。以上是一个八叉树的存储示例,左侧为体积模型,右侧为树状表示结构。原创 2023-06-06 17:41:10 · 754 阅读 · 0 评论 -
ros——欧拉角和四元数互转
【代码】ros——欧拉角和四元数互转。原创 2023-06-01 17:40:02 · 214 阅读 · 0 评论 -
moveit——将MoveGroupInterface写进自己的C++类中
【代码】moveit——将MoveGroupInterface写进自己的C++类中。原创 2023-06-01 11:01:31 · 127 阅读 · 0 评论 -
ros中不同数据格式的话题发布和订阅(C++)
【代码】ros中不同数据格式的话题发布和订阅(C++)原创 2023-05-30 10:34:32 · 223 阅读 · 0 评论 -
基于YoloV8的ros功能包
【代码】基于yoloV8的ros功能包。原创 2023-05-25 15:54:49 · 708 阅读 · 0 评论 -
用gdb调试ROS程序
gdb调试出错了,比如出现segmentation fault,通常会自动显示出错位置,输入where可以显示出更详细的内容。修改ROS launch文件,在node标签中添加一句话。修改后的launch文件如下所示。原创 2023-04-11 11:28:37 · 711 阅读 · 0 评论 -
ros_control教程
gazebo_ros_control Gazebo 插件还提供了一个基于 pluginlib 的接口来实现 Gazebo 和 ros_control 之间的自定义接口,以模拟更复杂的机制(非线性弹簧、连杆等)。这些插件必须继承 gazebo_ros_control::RobotHWSim,它实现了一个模拟的 ros_control hardware_interface::RobotHW。RobotHWSim 提供 API 级访问权限以读取和命令 Gazebo 模拟器中的关节属性。原创 2023-03-17 09:55:28 · 552 阅读 · 0 评论 -
moveit——move_group interface在callback中的阻塞问题
当执行程序时,代码在进行机械臂运动规划过程中,一直卡在那里,既不报错,也不执行。里面的参数由1改成2.跨线程通信造成死锁问题。原创 2023-02-24 14:42:30 · 113 阅读 · 0 评论 -
在docker中使用realsense-ros
基于docker进行realsense的使用操作原创 2023-02-20 17:54:11 · 864 阅读 · 0 评论 -
在docker中进行RVIZ可视化
这里将介绍如何在docker中进行RVIZ可视化操作。原创 2023-02-17 17:15:22 · 273 阅读 · 0 评论 -
ROS——串口通信
ROS节点程序运行过程中需要获取机器人的传感器信息和发送控制指令,因此不可避免要与机器人进行通信,常见的通讯方式有串口、CAN和网口等,其中串口最为普遍。原创 2023-02-16 17:32:41 · 215 阅读 · 0 评论 -
ROS2——YOLOV5功能包
这个工程是一个基于ROS2的YOLOV5功能包,通过订阅图像话题,发布检测目标坐标信息和检测结果图像话题。原创 2023-02-15 19:53:33 · 643 阅读 · 0 评论 -
基于2D Object Detection的目标几何中心三维位置估计(C++)
这篇博客将简单讲解下如何利用二维目标检测方法和RGBD数据来获取感兴趣目标的几何中心三维位置结果。原创 2023-01-16 17:03:40 · 807 阅读 · 0 评论 -
ROS之TF2与TF对比
TF2已经替换了TF,TF2是TF的超集,建议学习 TF2 而非 TFTF2 功能包的增强了内聚性,TF 与 TF2 所依赖的功能包是不同的,TF 对应的是tf包,TF2 对应的是tf2和tf2_ros包,在 TF2 中不同类型的 API 实现做了分包处理。TF2 实现效率更高,比如在:TF2 的静态坐标实现、TF2 坐标变换监听器中的 Buffer 实现等。原创 2023-01-06 10:30:21 · 977 阅读 · 0 评论 -
ROS之坐标系关系查看
在机器人系统中,涉及的坐标系有多个,为了方便查看,ros 提供了专门的工具,可以用于生成显示坐标系关系的 pdf 文件,该文件包含树形结构的坐标系图谱。原创 2023-01-06 10:27:44 · 352 阅读 · 0 评论 -
ROS之多坐标变换
现有坐标系统,父级坐标系统 world,下有两子级系统 son1,son2,son1 相对于 world,以及 son2 相对于 world 的关系是已知的,求 son1原点在 son2中的坐标,又已知在 son1中一点的坐标,要求求出该点在 son2 中的坐标实现流程:C++ 与 Python 实现流程一致新建功能包,添加依赖创建坐标相对关系发布方(需要发布两个坐标相对关系)创建坐标相对关系订阅方执行。原创 2023-01-06 09:47:18 · 116 阅读 · 0 评论 -
ROS之动态坐标发布
所谓动态坐标变换,是指两个坐标系之间的相对位置是变化的。原创 2023-01-06 09:20:21 · 456 阅读 · 0 评论 -
ROS——静态坐标变换
所谓静态坐标变换,是指两个坐标系之间的相对位置是固定的。原创 2023-01-06 09:00:02 · 316 阅读 · 0 评论 -
ROS之坐标msg消息
订阅发布模型中数据载体 msg 是一个重要实现,首先需要了解一下,在坐标转换实现中常用的 msg:geometry_msgs/TransformStamped和geometry_msgs/PointStamped。前者用于传输坐标系相关位置信息,后者用于传输某个坐标系内坐标点的信息。在坐标变换中,频繁的需要使用到坐标系的相对关系以及坐标点信息。命令行键入:rosmsg info geometry_msgs/TransformStamped。四元数用于表示坐标的相对姿态。原创 2023-01-06 08:52:12 · 236 阅读 · 0 评论 -
在ROS中实现深度图转点云
【代码】在ROS中实现深度图转点云。原创 2022-12-19 20:30:58 · 660 阅读 · 0 评论 -
在ros中创建yolov5-onnxruntime功能包
在vscode中新建功能包apple_detect。原创 2022-12-09 17:27:05 · 1361 阅读 · 0 评论