Navigation 2系列教程(七)——插件教程之三:编写新的控制器(Controller)插件
本教程详细介绍了如何创建自定义控制器插件,特别以实现纯追踪路径跟踪算法为例。码安首先,码安强调基于一篇论文实现该算法,码安并推荐阅读论文以获取更深入理解。码安然后,码安php框架源码指出创建控制器插件的码安要求包括安装和构建 ROS 2、Nav2、码安Gazebo 和 Turtlebot3。码安接下来,码安指导读者创建纯追踪控制器插件的码安具体步骤,包括继承自基类nav2_core::Controller,码安并实现computeVelocityCommands、码安configure和setPlan方法。码安在configure方法中,码安获取特定于控制器的ROS参数desired_linear_vel,以保持组织有序并保持插件间参数的独立性。在setPlan方法中,接收并处理更新后的全局路径。computeVelocityCommands方法计算期望速度指令,以使机器人尽可能遵循全局路径。所有未使用的基类方法必须覆盖,但在此教程中它们被置为空实现。接着,演示如何导出控制器插件,包括在源代码中使用pluginlib宏进行导出,并创建插件描述文件、使用cmake函数导出插件以及添加插件描述到package.xml中。最后,通过修改nav2_params.yaml文件来传递插件名称,ChatGPT镜像源码实现控制器插件的启用,并通过运行仿真环境验证控制器的功能。
Navigation2源码剖析:(二)启动
Navigation2源码剖析:(二)启动
Nv2源码中的bringup包和svl-robot-bringup负责LgSvl仿真和Nv2项目的启动,它们是整个工程的入口。 主车设计采用两轮差分驱动,如Turtlebot3,由两个动力轮控制轮速,实现前进和转向,万向轮作为支撑。其控制模型基于开环系统,可通过添加负反馈形成闭环,以提高控制精度。 Nv2的传感器配置包括2D激光雷达(Lidar)、深度相机和imu模块。Lidar用于建图、定位和代价地图生成,depth-camera提供障碍物信息,imu则用于里程计数据的计算和漂移校正。在Gazebo仿真中,IMU直接作为输入。 在LGCloi中,已预置6种传感器,选择Nav2-PointCloud或Navigation2配置,主要区别在于Lidar数据类型。为适配Nv2需求,需使用pointcloud_to_laserscan包将PointCloud2转换为LaserScan类型,这一过程涉及数据压缩和转换,如图[5]所示。 svl-robot-bringup和nav2_bringup模块在项目启动过程中起关键作用,玄学指标源码详细内容可参考相关附录[4]。四足机器人雷达-视觉导航2:Elevation mapping局部高程图测试
为了四足机器人实现高效的局部高程图构建,结合视觉与雷达技术,确保导航的准确性和稳定性,本文将详细阐述这一过程。四足机器人相较于自动驾驶,需要主动选择落足点,因此局部高程图尤为重要。获取高程图,视觉与雷达传感器各有优劣,例如视觉传感器易受光照、遮挡等因素影响,而雷达传感器在噪声、死区和点云稀疏等问题上则有所欠缺。因此,融合视觉与雷达数据,形成互补,成为目前较为稳定的解决方案。
雷达提供长期可靠的里程计信息,而深度视觉则用于获取局部深度数据,从而建立高程图。这种方案分为实时高程图与全局高程图两种。实时高程图基于深度信息快速构建,实现简便,速度较快,甚至可能无需全局定位数据。然而,视角和深度图质量问题可能导致噪声和空洞。全局高程图则先建立整个环境的蓝波指标源码地图,然后基于里程计信息提取局部信息,这种方案需要全局定位信息,但通过利用机器人多视角下的数据采集,不断优化修正全局高程地图,最终提取的局部高程图质量更高。
实现高程图建立的项目,以ETH开源的“elevation mapping”为代表。本文提供了一个从最初下载、编译到最终基于Gazebo仿真运行简单Demo的过程,旨在帮助快速部署项目。首先,确保ROS的正确安装与更新,采用melodic版本。其次,安装Grid Map、kindr、pcl点云库等依赖库,注意在编译过程中可能遇到的内存不足等问题,确保编译环境的资源充足。在进行PCL库编译时,遇到的“error: ‘PCL_MAKE_ALIGNED_OPERATOR_NEW’ does not name a type”问题,可以通过修改为“EIGEN_MAKE_ALIGNED_OPERATOR_NEW”解决。在下载和编译kindr_ros与elevation mapping后,通过catkin_make进行编译,可能遇到的编译错误如“fatal error”问题,需要找到并修正hpp文件中的错误。
在完成安装与编译后,通过下载turtlebot3与相关ROS包,建立新的驱动源码论坛catkin工作空间,下载源码并编译。在编译过程中,可能需要解决与python版本匹配、文件路径等细节问题。运行Demo,基于turtlebot3和RealSense的示例,注意可能需要对脚本进行修改以适应特定的环境或系统配置,如Python版本匹配问题,以及修改地图文件路径。在运行中,通过Rviz观察点云和高程图数据,验证高程图构建的实时性和准确性。
然而,在实际应用中,还存在一些挑战。例如,运算速度可能无法满足实时需求,尤其是不采用GPU的情况下,刷新频率可能较低。真实世界中的传感器噪声相比仿真环境更大,地图构建效果可能不如预期。此外,需要进一步开发代码以提取局部高程图,并通过UDP或共享内存等方式将其发送给步态控制器。随着机器人运动,全局地图的构建与维护对于计算资源的要求较高,尤其是使用低成本处理器时。面对这些问题,可能需要优化算法、改进资源管理,或直接构建局部地图以适应不同环境与设备的性能限制。
综上所述,结合视觉与雷达技术构建的高程图,对于四足机器人的局部导航具有重要价值。通过合理利用开源资源与技术工具,可以实现从环境感知到高程图构建的全流程,为机器人的自主导航提供坚实的支撑。面对实际应用中的挑战,持续的技术优化与创新将推动四足机器人在复杂环境下的高效导航与操作能力。
Turtlebot3 入门教程-PC软件设置
本文提供Turtlebot3入门教程,重点讲解PC软件设置。
首先,安装Ubuntu系统并执行脚本安装ROS-kinetic,如安装过程中遇到问题,可选择源码安装。
源码安装步骤包括:安装源、增加key、更新、Desktop-Full安装推荐包,包括ROS、rqt、rviz、robot-generic库等,并解决依赖问题。
在安装过程中,可能需要解决国外服务器下载问题,可借助科学上网方法解决。
环境设置后,进行rosinstall工具的安装,方便下载ROS软件包。接着开始安装TurtleBot3及依赖包。
进行网络配置,首先通过`ifconfig`命令获取主机ip地址,如:..1.,并在终端中编辑`.bashrc`文件,添加ROS_MASTER_URI参数,记得包含接口:“:”,然后刷新环境变量。
小车连接显示器,打开树莓派Ubuntu系统,获取从机ip地址,并确保小车系统连接同一WiFi,与主机IP前三部分一致。
在小车系统中,同样在`.bashrc`文件中进行相关参数的添加和修改,并刷新环境变量,确保配置完整无误。
进行主从机测试配置,首先在主机启动roscore服务,接着在从机执行`rostopic list`命令,查看节点名称返回数据是否与预期相同,若相同则配置成功。
如果配置过程中遇到无法连接主从机的问题,需检查虚拟机网络配置或网络连接是否正确。
本文还提供如何在主机上仅进行网络配置的简化步骤,通过使用ssh命令连接从机,便于操作和管理。
完成上述步骤后,即可成功设置Turtlebot3的PC软件环境,为后续的使用与开发打下坚实基础。
TurtleBot 3 & 2i ROS开源实验平台
TurtleBot 3 & 2i ROS开源实验平台是全球最受欢迎的ROS平台,以小型、低成本、可编程的移动机器人形式出现,广泛应用于教育、研究和业余爱好。
TurtleBot3系列,如TurtleBot3 Burger和TurtleBot3 Waffle Pi,提供移动跟随功能,集成开放式机械手,能够实现°激光距离传感器LDS-,模块化执行器,以及可扩展性,支持多种自定义选项,如控制板、计算机和传感器等,具有强大的传感器阵容和尺寸小的特性。
TurtleBot3 Burger和Waffle Pi提供了强大的功能,如使用增强的°LiDAR、9轴惯性测量单元和精确编码器,以及Intel®RealSense™和识别SDK等,支持自主定位与导航、SLAM地图构建、物体识别与抓取等功能,适合ROS教学、科学研究、多机器人协作,以及机器人爱好者的产品原型设计。
此外,TurtleBot3还具备强大的传感器阵容,包括增强的°LiDAR、9轴惯性测量单元和精确编码器等,配合功能强大的Intel®RealSense™和识别SDK,以及高效率的Raspberry Pi相机,是制造移动机器人的最佳硬件解决方案。
TurtleBot3的硬件、固件和软件是开源的,方便用户下载、修改和共享源代码,所有组件均采用注模塑料制造,成本低廉,也提供3D CAD数据用于3D打印。对于想要自己制作OpenCR1.0板的用户,详细信息包括原理图、PCB gerber文件、BOM和固件源代码均已开放。
TurtleBot3的视觉PRO版-TB3汉堡视觉PRO版,结合度SLAM导航和规划、3D点云探测、二维码识别和WIFI通讯模块,实现多智能体组网。旨在成为学生“软件开发”、“动手实践”、“多机器人协作”、“创意展示”、“竞赛”等综合平台,最大程度激发学生们对机器人学习兴趣。
TurtleBot 2i移动研究机器人基于ROS的模块化机器人平台,对TurtleBot的先前迭代进行了改进,具有全新设计的模块化底盘,并实现了对机械臂的本地支持,提供Pincher MK3 4 DOF机械臂,允许机器人与现实世界中的小物体交互,适合个人自主搭建、机器人研发与教育、多功能机器人研究以及开源社区软件培训。
TurtleBot 2i配备有ROS开放源码的SDK及示例源代码,帮助使用者开发和测试自己的机器人算法程序,价格便宜,非常适合做机器人研究以及提供个人或家庭的机器人开发平台,广泛被院校、研究所以及个人采用。智能佳提供专业的技术服务支持团队,确保购买后无忧使用。
2024-12-02 06:30
2024-12-02 06:09
2024-12-02 06:02
2024-12-02 05:29
2024-12-02 05:25