- 博客(64)
- 资源 (2)
- 收藏
- 关注
原创 Ros Noetic 20.04 跑通mpc_ros包保姆级教程
本文将简述mpc_ros包在noetic20.04中的安装,mpc是 一种跟踪、MPC_ROS 是一个基于ROS(Robot Operating System)的模型预测控制(Model Predictive Control,MPC)库。该项目旨在为机器人控制提供一个灵活且高效的MPC实现,使得开发者能够在ROS环境中轻松集成和使用MPC算法。MPC是一种先进的控制策略,广泛应用于自动驾驶、机器人导航和其他自动化系统中。
2024-11-20 17:09:09
585
3
原创 Ros cartographer 搭载 landmark 保姆级操作上手教程(2)
最近接到很多小伙伴的私信,问代码工作的流程和实现原理,这里特别开一篇帖子扫清其中的一些盲点,承接上一篇文章,在上一篇文章中,我们已经完成了相机的标定,和二维码信息的读取,那么恭喜进行到这里我们的工作已经完成了一半。Ros cartographer 搭载 landmark 保姆级操作上手教程(1)_ros2 landmark-优快云博客思路:AprilTag识别------识别成功-----读出二维码 ----获取二维码信息-----计算当前小车的位置。
2024-08-29 17:37:14
334
原创 Ros Noetic 20.04 ORB-SLAM2-RGBD 栅格地图转换实战
Ros Noetic 20.04 ORB-SLAM2-RGBD 稠密度建立地图实战_ubuntu20.04运行orb-slam2稠密建图-优快云博客根据上一篇文章中,对ORB_SLAM2的改良方式,已经成功得到稠密地图,先新增一篇文章,将稠密地图进行转化,使之转换成可以用于导航的栅格地图,经过大量的尝试后得到,如果转化为八叉树地图,在运动的过程中很容易发生地图变形,导致导航效果或者建图效果不好,所以还是使用PCD文件进行地图的转换。后文中附上完整代码。
2024-08-01 10:40:16
340
原创 ubuntu20.04 Supervisor 开机自启动脚本一文配置
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。
2023-09-08 14:05:04
1520
原创 Ros noetic 机器人坐标记录运动路径和发布 实战教程(C)
以上代码是一个ROS节点程序,用于加载路径点并发布到指定的ROS话题。头文件 "waypoint_loader/waypoint_loader.h" 中定义了 WaypointLoader 类的声明。这个类负责加载路径点并发布到ROS话题。构造函数 `WaypointLoader::WaypointLoader(ros::NodeHandle nh,ros::NodeHandle pnh)` 接收两个参数,分别是ROS的全局节点句柄 `nh` 和私有节点句柄 `pnh`。
2023-09-07 16:58:18
1142
原创 Ros noetic 机器人坐标记录运动路径和发布 实战教程(B)
网上记录Path的写入文件看了一下还挺多的,有用yaml作为载体文件,也有用csv文件的路径信息,也有用txt来记录当前生成的路径信息,载体不重要,反正都是记录的方式,本文主要按yaml的方式写入,本文将撰写csv方式的文件写入格式,完成上一篇文章中的留下的存入格式。其中两种方式的主要区别在于,加载yaml所需要的时间较长,而txt,csv读本时间短暂,而且csv文件的跨越性很广,轻小简单,cvs中可以写入bag,bag包中可以有很多信息包括坐标。
2023-09-07 16:02:23
1089
原创 Ros noetic 机器人坐标记录运动路径和发布 实战教程(A)
网上记录Path的写入文件看了一下还挺多的,有用yaml作为载体文件,也有用csv文件的路径信息,也有用txt来记录当前生成的路径信息,载体不重要,反正都是记录的方式,本文主要按yaml的方式写入,后文中将补全其余两种方式。其中两种方式的主要区别在于,加载yaml所需要的时间较长而txt,csv读本时间短暂,而且csv文件的跨越性很广,轻小简单,cvs中可以写入bag,bag包中可以有很多信息包括坐标。最近在研究路径这一块,预期编写一套Ros节点。
2023-09-01 18:20:03
2309
原创 Ros noetic Move_base 监听Move状态 实战使用教程
承接上一篇文章,在上一文中我们了解到move_base有几种监听的状态,我一文章中我将开源全部监听代码,本文将从0开始建立监听包,并覆上全部的工程代码,和仿真实操结果。本文,还将解决当临时障碍物与机身相交时,机器人回人为自己被“卡住”,局部规划器规划的速度为0,机器人停止运动;即使更换新的任何目标点,机器人均停止不动;move_base假死状态,在经过恢复行为后无果,不知道新的前进途径的情况。用于恢复状态机。
2023-08-23 10:00:20
886
原创 Ros noetic Move_base 相关状态位置的获取 实战使用教程
有一段时间没有更新,这篇文章是为了后续MPC路径跟踪算法开设的帖子用于更新我自己的思路,由于MPC算法,要镶嵌到整个导航任务中去,就绕不开这个move_base包中相关的参数设置和其中相关状态位置的获取和解读等等。因为最近遇到小车在其他的环境中有些时候,不需要自己导航,需要按照自己的航向走直线,按照自己的路径进行任务,不需要自己在路线中进行决策,于是传统的A start 和 DWA 和 TEB 算法实现的过程中则不能够满足当前的需求。
2023-08-21 10:30:49
2792
原创 Ros noetic catkin_make install 保姆级使用教程流
跟随前面的文章中,在编写了安装包之后,我想将现在的安装包打包放在另外一个设备上使用,复制粘贴??但是很多路径都不正确,后来研究发现,似乎 catkin_make 似乎还有一种隐藏的功能catkin_make install 但是怎么使用呢好像没学过似乎需要配置一些cmakelist 那么,我们开始做吧!在执行完成上述的所有步骤之后我们可以看到当前install的文件夹已经出现就是安装后文件夹的全部部署了,其中include,和lib是库,之前部署的库文件就会编译到这里。
2023-05-04 10:26:46
2512
原创 Ros Noetic 20.04 ORB-SLAM2-RGBD 稠密度建立地图实战
由于ORB-SLAM2在构建的时候只在地图中保留了特征点,对于使用RGB-D相机的小伙伴而言,更希望得到一个点云地图。好在ORB-SLAM2这个框架结构清晰,只需要单独添加一个线程用于维护点云地图,将ORB-SLAM2生成的关键帧传入点云地图构建线程,利用传入关键帧来生成点云地图,这就是基本思路了。其实这个工作高翔博士在早期就已经做过了,并上传到了github中。
2023-03-13 11:19:35
1310
原创 ROS Noetic 20.04 + ORB Slam2 坐标转换
我们在之前的文章中完成安装了ORB2所有所需要的文件和库,但是ORB毕竟是一个封装好的软件, 在追随网上各位笔者的文章中发布得到TCW的输出矩阵,但是ORB的输出矩阵似乎和ROS中的矩阵似乎并不一致,于是经过苦苦寻找,得到了,以下的转换方法和心得,转换的方式各有所爱,这里提供一种可行且验证通过的方案,主要解决相机和真实不匹配的情况。把建图系统分为了三个节点,如下所示。第一个节点作为驱动节点,采集摄像头传感器的数据。第二个节点利用ORB_SLAM主要做姿态估计,提供Tcw。
2023-02-27 15:31:41
781
原创 Ubantu20.04 之 expect —— 安装、常用语法保姆级入门
最近做到一个项目qt需要用ubantu用户的方式去登陆这样一些路径就可以得到,不用特别复杂的重写,为之后的工程省下了很多的事情,从而实现liunx免密码登陆ubantu的用户账户。
2023-01-19 10:17:42
2950
原创 Ros cartographer 搭载 landmark 保姆级操作上手教程(1)
之前跑的bag中偶然发现在msg的bag包中,有Landmark数据的发布和订阅。Landmark在cartographer中作为定位为避免定位丢失,从而使之增加定位精度,和重定位,看完所有网页上能找到的文章,看后就一个字懵。防止cartographer在长廊中因为激光雷达的射程范围不够导致后期回环中定位失效,以至自己设备的定位乱跳,如果不幸跳入墙体中,则会整个设备则会陷入假死整体上landmark的引用方式,分为两种一种是反光标识工地上的反光柱,另一种则是使用固定的二维码和。
2023-01-16 21:48:26
2690
6
原创 Ros cartographer pure localization 自定位+重定位+导航
在完成了前面的方针之后,随着不断挖掘开始跑 cartographer + move_base 的构架,由于amcl定位的实时性和重定位的能力远不及 cartographer pure localization 自定位的构建方式,所以本文开始放弃 gampping + amcl + move_base 开启本文的 cartographer + move_base框架主要思路为:仿真 + 实战的探索过程本文主要分两部分: A.仿真调通 + B.自定位实战 + C.自定位导航实战。
2022-10-19 14:01:42
4183
9
原创 Ros yocs_velocity_smoother 保姆级部署教程
yocs_velocity_smoother速度平滑(滤波)是将base_move导航输出的/raw_cmd_vel速度进行平滑处理,得到/cmd_vel速度进行控 制机器人底盘运动。这里选用里程计/odom作为速度平滑的参考。ROS中的yocs_smoother_velocity是一个非常好的速度插值的包, 可以对速度、加速度进行限制,用来防止机器人的速度、转速变化过快或过慢, 是其运行平滑流畅。
2022-10-19 09:51:19
953
3
原创 Ros noetic opencv4.2.0 cv_bridge 冲突 适配Opencv3.2.0完成自己的USB_Camera 跑通 Orb_slam2
本文附上使用自己的USB_Cam 跑通Orb_Slam2 算法的过程,以及解决cv_bridge冲突的方案Orb_Slam2需要的cv版本 但是自带了这就是最难受的事情,为此苦苦寻求合理的办法能把Orb_Slam2 能在我的环境里能运行起来,细心观察到,之前的Orb_Slam2 版本可以脱离Ros运行但是一旦进入Ros build就会产生冲突为此,最明显的就是waring的警告,同时编译也可以通过。
2022-09-30 15:52:35
2058
原创 ROS Noetic 20.04 + ORB Slam2 保姆级全套安装一包到位
随着前文完成了各个框架的部署,为ieORB的安装铺垫出了坚实的基础,了解到ORB系列属于最受到欢迎的开源项目抱着好奇的心思开启了对源码的拜读和了解,本文一站式完全完美安装,避免了各种复杂难搞的报错情况。这个ORB_SLAM2的环境配置上走了太多的坑,呕心沥血三晚上。吃了两晚上的旺旺,希望各位研友也能旺旺。
2022-09-27 09:59:05
1161
原创 ROS Noetic+ Protoc 3.21.6 最新版保姆级替换安装教程
近期在构架orb slam2的框架上需要使用到google的protobuf,浏览官网后发现,protobuf已经更新到了很多的版本,而Noetic自带的Protoc 版本太低 也没有google/protobuf/port_undef.inc这个库的文件,然后cmake一catkin就报错找不到该文件,本文详细记录了该过程Bug中的修订。
2022-09-22 13:51:53
708
原创 ROS Noetic+OpenCV 3.2 保姆级安装教程
随着时间的推移导师的研究方向推向了定位这一块,Opencv不由地说就成了最好的软件了解到leo vin orb 这些算法都在opencv的基础上,查阅了各种资料,花费了小一天,最后终于编译通过,由于Noetic自带opencv 4.2 但是orb slam2 支持opencv3.2 在编译的时候无论如何修改都一样报错,苦苦寻求,最后忍痛放弃了opencv4.2 开始按照官方的 readme 开始安装opencv3.2的漫长心路,本次安装记录下详细过程,方便后来同学少走弯路。
2022-09-22 09:51:31
2658
原创 ROS 仿真环境gazebo离线模具环境配置保姆级教程
因为最近疫情隔离摸不到设备,但是又按耐不住,于是打开了尘封的gazebo教程,使用环境Ros noetic 20.04 因为该版本已经预装了gazebo但是没有模型看便所有教程之后得到下面的教程1.第一次启动,推荐使用sudo gazebo赋予gazebo所有权,这样配置path和保存都可以不死机2.等待片刻后打开界面点击Insert3.一定记清楚这里的路径4.用自己的文件管理器进入该目录删除原来的models文件夹配置bash可以永久使用5.下载百度云覆盖原来的models目录。
2022-09-07 20:57:13
522
原创 ROS 代码调试常用方式配置
ROS集成了很多调试工具如代码调试、可视化调试、单元测试、通信调试、系统检查、系统仿真等。 代码调试:GDB、valgrind、log(rqt_logger_level)等 可视化调试:网络拓扑rqt_graph、消息rqt_console、日志rqt_logger_level、三维可视化RVIZ、趋势图rqt_plot等 单元测试:C++单元测试框架gtest、Python单元测试框架nosetests 通信调试:rostopic 、rosbag等。
2022-08-25 15:21:11
1608
原创 Ros Nodelet 高速通信 单独节点编写
ROS引入了Nodelet机制,通过共享指针实现了在多算法、多节点间的零拷贝传输。ROS通过Nodelet管理器NodeletInterface管理Nodelet,并通过ROS的pluglib插件机制实现动态加载Nodelet。Nodelet管理器拥有一个可供所有Nodelet使用的线程池,线程池的数量通过参数num_worker_threads设置,默认为4。Nodelet作为线程出现。
2022-08-25 14:56:15
746
原创 ROS 消息订阅 状态同步 action 行为通讯方式
步骤1 创建自定义行为步骤2 编写服务文件步骤3 编写客户端文件步骤4 package.xml、CMakeLists.txt配置步骤5 生成行为头文件步骤6 编译执行 action依赖于actionlib、actionlib_msgs程序包。
2022-08-23 15:36:10
764
原创 ROS 消息订阅 服务器客户端客户端 通信方式
步骤1:创建自定义服务.srvint64 aint64 b---int64 sum 步骤2:编写服务文件service{// a+b 完成响应}{// 名字 + 回调名字return 0;} 步骤3:编写客户端文件 client{// 表明是客户端/*if (argc!}*/}}if (client.call(srv)) // 调用 call 就可以发起请求{}else{return 1。
2022-08-23 15:02:04
665
原创 ROS 消息订阅 节点发布 通信方式
但在某些情况下,需要一种同时使用请求和响应的同步消息交换方案,ROS提供了叫做服务的消息同步方法,是一种一对一的机制。与话题不同,服务是一次性消息通信。话题本质是对套接字的一种封装,一个节点可以向一个给定的话题发布消息,另一个节点可以订阅给定话题中特定消息类型的消息。ROS是以节点的形式开发的,节点是根据其目的,可以细分的可执行程序的最小单位。 单次模式(once mode) 以闩锁模式发布消息,执行3秒,然后结束发布,选项为-1。需要注意的是,在ROS中,话题必须是唯一的,否则消息路由就会产生错误。
2022-08-23 14:01:34
3316
原创 Ros Cmakelist 编译配置
编译配置主要有宏设置、包依赖、Cmake编译管理、catkin编译策略等。宏设置包依赖package.xml文件编译管理CMakeList.txt文件catkin编译策略:catkin编译策略主要指编译目标是Release、Debug、编译输出空间等。
2022-08-23 10:35:49
1130
原创 Ros Launch启动管理
ROS通常具有很多的节点,部分节点需要带参启动,部分节点还分布在其他设备上。这都需要一个统一的管理策略,ROS通过roslaunch管理分布式节点。放置在launch文件夹中launch文件本质是一个以launch为后缀的XML文件,位于launch目录下。对于本地进程,ROS通过popen创建管道启动进程,利用POSIX信号来杀死进程,对于远程节点, ROS基于SSH来实现远程通信,这导致roslaunch无法保证启动顺序。若需要 设置启动顺序时,可通过bash脚本进行顺序启动。
2022-08-23 10:01:48
1303
原创 ROS 动态参数 实时调参方式
开发者常常需要动态调整参数以查看机器人在不同参数下的性能表现;无论是通过YAML文件配置参数还是通过节点句柄操作参数,都会面临一个问题,如果节点不主 动查询参数值,就无法获取参数是否已经进行了更新。解决办法:通过程序包提供了动态参数这一功能。 写参数配置文件CMakeLists文件修改配置文件修改配置编译生成头文件创建回调函数利用调参编写Python脚本添加参数生成器对应的cpp文件添加依赖包。
2022-08-21 22:07:40
2718
原创 ROS 接口调参 加载参数 动态参数 从NodeHandle中加载参数
ROS参数服务器本质上是可以网络访问的参数词典,ROS参数服务器能保存的数据类型包括字符串 、整型、浮点型、布尔型、列表、词典等;参数根据类型不同可以分为全局参数、相对参数、私有参数等;其中以“/”开头的参数为全局参数,以“~”开头的参数为私有参数,其他参数为相对参数;操作参数的四种方法:ROS提供了两种管理参数的API实时的存储、获取参数:一个是通过ros::param。
2022-08-21 20:52:14
1684
原创 Ros 基本基本构架
等,这类代码通常是对第三方工具的封装,另一部分是应用层代码,主。部分则由社区进行开发和维护,一部分是工具代码如。提供了硬件相关的控制器、接口等功能;的系统代码根据维护者和分布可以分为。提供了传感器和其他硬件的驱动;要针对特定问题如人脸识别等开发。提供了导航和路径规划等功能;包括对话题和服务的各种操作。架构,客户端和设备均基于。的基本框架和工具,主要由。公司设计、提供以及维护。提供标准消息、编译系统、部分为核心部分,提供了。在广域网场景中,采用。
2022-08-21 20:37:34
149
原创 Ros 基本操作vscode 之 hello world 详细部署
在之前我们已经完全部署好自己的Vscode环境之后,现在我们可以开始实际操作部署详情见Ros 与 Web 之 VScode 开发环境搭建(2)_忒懂先生的博客-优快云博客。
2022-08-16 22:14:04
688
原创 Ros 与 Web之网页虚拟墙costmaop禁形区域建立(11 )
####可能出现的问题 项目依赖qt 对于新手可能不会搞qt环境 ,导致项目运行不起来; 这里我归纳一段按我的操作来做试试能不能解决:1.把依赖装一下:sudo apt install libqt5serialport5-devsudo apt-get install qtmultimedia5-devsudo apt-get install libqt5websockets5-devsudo apt-get install libqt5webchannel5-devsudo..
2022-08-16 21:32:43
635
1
原创 C++ 基本学习 函数调用(6)
定义函数后,我们需要调用此函数才能执行到这个函数里的代码段。这和main()函数不一样,main()为编译器设定好自动调用的主函数,无需人为调用,我们都是在main()函数里调用别的函数,一个 C 程序里有且只有一个main()函数。一、函数执行流程{}int main(){// print_test函数的调用return 0;}// 1)进入main()函数它会在main()函数的前寻找有没有一个名字叫“print_test”的函数定义;......
2022-08-14 16:23:05
636
原创 C++ 基本学习 字符串处理函数和函数(4)
fgets()在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车也做为字符串的一部分。通过scanf和gets输入一个字符串的时候,不包含结尾的“\n”,注意:由于scanf()和gets()无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才接收输入,因此容易导致字符数组越界(缓冲区溢出)的情况。fputs()是puts()的文件操作版本,但fputs()fgets()函数是安全的,不存在缓冲区溢出的问题。atof():把一个小数形式的字符串转化为一个浮点数。头文件:包含指定的头文件。..
2022-08-14 15:57:44
194
原创 C++ 基本学习 基本嵌套(2)
c语言支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。顺序结构: 程序按顺序执行,不发生跳转。选择结构: 依据是否满足条件,有选择的执行相应功能。循环结构:依据条件是否满足,循环多次执行某段代码。...
2022-08-14 10:52:40
634
原创 C++ 基本学习 C99基本语法(1)
电信专业,大概C只学习了入门也是四年前学的了,有一点点印象,学习并不系统,作为巩固专开次栏,巩固学习,还希望大家指正 ^_^保留字:auto 指定变量的存储类型,这是C语言默认的变量存储类型break 中断并跳出循环或swith语句case 与swith语句配套使用的分文语句char 字符类型const 常量定义修饰符。.................
2022-08-13 16:58:20
1321
ros-mpc-car MPC实现ROS内仿真小车控制,based on Nonlinear Model Predictive Control
2024-11-20
Ros noetic 机器人坐标记录运动路径和发布 实战教程(C)配套教程
2023-09-07
octomap-server
2023-02-22
Pcl 1.12.1 全网报错最少最稳定的Pcl库
2023-02-21
Ros noetic 20.04 + ORB_Slam2 完整项目工程
2022-09-22
cartographer-landmark 二维码修正重定位
2022-05-16
Ros 服务器客户端 已经部署好cmake等文件可以直接更改使用
2022-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人