主要博主 参考资料:

ROS系列:
b站荔枝橙
b战哈萨克斯坦x
《ROS 2机器人开发从入门到实践》6.2.2 在RViz中显示机器人_哔哩哔哩_bilibili
动手学ROS2–鱼香肉丝 ​​​​​​​
古月居ros2教程

北京华清智能科技 ros教程

moveit系列:
爱喝青柑普洱的鸭梨-moveit基础入门
moveit humble官网

Youtube&b站实战项目:

leran robotics with ros很不错 里面系列课程都可以 但是不是放出全部,部分收费
b站:后来老师up主 机械臂仿真简单demo全教程
automatic Addison YouTube很不错
https://automaticaddison.com/
使用ROS与Movelt实现大象机器人myCobot 280机械臂运动轨迹规划和控制

其他:
ROS2导入机械臂URDF竟有这些坑?SO-ARM100 Rivz可视化避坑指南_ros2导入机械臂urdf竟有这些坑?so-arm100 rivz可视化避坑指南-CSDN博客

https://medium.com/@kabilankb2003/training-so-100-robot-for-cube-lifting-in-isaac-lab-from-simulation-to-intelligent-control-with-9e81f94c6d6e

Lerobot. so-100 仿真環境數據搜集_哔哩哔哩_bilibili
lerobot_so100_sim仿真操控_哔哩哔哩_bilibili
逆映射唯一的个人空间-逆映射唯一个人主页-哔哩哔哩视频
28BoundlessHope的个人空间-28BoundlessHope个人主页-哔哩哔哩视频
11jzzz的个人空间-11jzzz个人主页-哔哩哔哩视频
ros2 手动安装-不建议,建议使用鱼香ros一键安装

1 ROS入门学习

古月居ROS2入门教程:

https://book.guyuehome.com/ROS2/2.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/2.1_%E5%B7%A5%E4%BD%9C%E7%A9%BA%E9%97%B4/

1.1 工作空间

下载古月居项目编译报错,原因是直接使用了Anaconda 环境
在这里插入图片描述临时停用Anaconda 环境

在这里插入图片描述
永久停用Anaconda 环境
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 gazebo

gazebo启动不了,安装之后
在这里插入图片描述
xzl@xzl-HP99:~/Desktop$ ros2 launch gazebo_ros gazebo.launch.py [INFO] [launch]: All log files can be found below /home/xzl/.ros/log/2025-05-26-00-10-53-007034-xzl-HP99-76311 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [gzserver-1]: process started with pid [76312] [INFO] [gzclient-2]: process started with pid [76314] [gzclient-2] gzclient: /usr/include/boost/smart_ptr/shared_ptr.hpp:728: typename boost::detail::sp_member_access::type boost::shared_ptr::operator->() const [with T = gazebo::rendering::Camera; typename boost::detail::sp_member_access::type = gazebo::rendering::Camera*]: 断言 “px != 0” 失败。 [ERROR] [gzclient-2]: process has died [pid 76314, exit code -6, cmd ‘gzclient --gui-client-plugin=libgazebo_ros_eol_gui.so’].

本质就是第一个连接解决方案,没source setup文件

source /usr/share/gazebo/setup.sh

后面学习新的东西时候,就将gazebo变了,变成gazebo fortress长期支持版本,最终使用ign gazebo能启动就代表gazebo安装好了。

同时也要安装ros相应版本和gazebo集成。
sudo apt-get install ros-${ROS_DISTRO}-ros-gz

Binary Installation on Ubuntu — Gazebo fortress documentation

gazebo 启动失败_gzclient process has died-CSDN博客

启动gazebo失败报错
使用gazebo的官方模型库文件_gazebo官网的模型数据-CSDN博客

gazebo报错 | 鱼香ROS

1.3 其他难点(后续需重新研究)

通行接口是如何从cmake文件编译到各类文件的?

话题、服务、动作回调函数是如何执行的?回调函背后的机制是啥?

参数是如何在需要重新编译的情况下动态设置的,看视频第一遍没看懂?

launch资源重映射的例子?

tf坐标系里面没有太搞明白代码如何操作的?

2 moviet学习

2.1 Tutorials

Getting Started
可以参考爱喝青柑普洱的鸭梨,主要就是如何创建工作空间和编译,注意编译内存不够非常容易崩了,所以最好参考文档,加上–parallel-workers 1,一个个编译。

MoveIt Quickstart in RViz
主要介绍了rviz的面板怎么用,一个正常的机械臂,各个规划按钮怎么使用

Your First C++ MoveIt Project
主要讲解了一个简单的c++代码,如何从初始状态规划到目标状态,并且在rviz中显示。注意编译时候可以参用增量编译,参考爱喝青柑普洱的鸭梨 colcon build --packages-select hello_moveit 单独编译这一个包

Visualizing In RViz
这一讲,主要讲的是如何使用代码控制rivzvisualtools

Planning Around Objects
这一讲,主要讲的是环境中添加了碰撞对象,如何使用代码控制rivzvisualtools,并且规划执行

3 youtube视频&实战

以automatic Addison为主线:

系列1 ROS基础

install ros2 jazzy
其中可以将ros的setup.bash echo到.~/bashrc里面,这样每次打开shell自动导入环境变量
安装gazebo 22.04版本 ,我的是按照古月居ros2教程进行安装,最终老是崩溃的原因放到csdn里面了,没source setup文件
domainid可以让机器人在不同的域中工作,默认都是0

后面由于YouTube时长原因,时间太长了,就直接读了这个教育网站的博客
但是其中从urdf开始还是看的网站
urdf 小车的轮子是旋转的joint
rosdep installb -i --from… 的命令会检查项目中的pacay.xml文件哪些没安装,自动帮你安装了
xacrao 更简单 更加灵活
mycobot280 里面有很多的不同结构的文件
夹爪:
urdf 的prefix指的是命名前缀
mimic标签 主控制器移动一个单位,引用主控制器其他的关节结构将要移动的位置长度

小车的urdf xacrao文件imu系列 可以在gazebo标签里面增加topic这样仿真里面就可以看到imu模拟测量的点云了

几何碰撞通常将不规则的地方简化,比如车子直接简化为长方体

gazebo的使用,gazebo 世界模型和urdf一样,本质就是urdf,只不过里面一个个嵌套了,机器人控制文件
所有的机械臂控制都需要一个控制的yaml文件,自己新的机械臂导入时候setup助手会帮助生成一个
controlleryaml里面有 很多控制的参数

gazebo中的机械夹爪怎么关闭的,可以通过gz topic发送符合controller控制的信息然后,可以使用topic发送对应上的msg的,然后对应格式msg 的topic就可以关闭夹爪
后续可以使用其他封装的服务比如action ,使用ros action来执行命令
当前也可以使用脚本来执行操作,比如是Python和c++ 直接spin自旋然后 就可以使用脚本然后launch不断发布话题

gazebo中的虚拟深度相机图像可以回传到rivz中

机器人有很多参数化的技巧,可以使用c++脚本来先设定一个参数,然后再设定一个参数来改变他,从而可以使得不用改变脚本的情况下重参数化

动作action的ros写法,??? YouTube笔记讲的很好,粗略了看了下,没看完
话题重映射类似java接口一样,可以重映射应该

系列2 导航章节

传感器融合:采用卡尔曼滤波
slam建图:amcl 自适应蒙特卡洛定位,采用粒子滤波算法,slam导航也有例子,也要创建yaml文件然后进行导航处理
导航实操章节也有
nav2 simple commander api可以使用此api控制机器人的运动,路径规划,以及各种任务

系列3 movelt系列

1.sdrf文件是对urdf文件的一个补充 里面有很多不错的博客内容
不同规划器之间的区别,ompl,pilz椭圆曲线的规划适合搅拌东西 类似一个抓取的仿真的任务,分为不同的阶段
moveit2 任务构造器 不同阶段的概念比官方文解释的清楚,生成器,传播器,连接器。任务规划中容器的概念,包装器,串行,并行(替代,后备,合并阶段),包括日志中各类箭头的解释,不同的指向是不一样的,具体含义可以看博客内容

gazebo官方文档里面 fortess里面 使用gazebo项目 里面有一个卢森堡大学的课程还不错 卢森堡 大学的movelt2 里面有深度相机拍摄轨迹规划的场景

系列4 自己动手实操

movelt官方文档系列实操笔记

0 preface 序言

  1. colcon build报错:

colcon build --mixin release usage: colcon [-h] [–log-base LOG_BASE] [–log-level LOG_LEVEL] {build,extension-points,extensions,graph,info,list,metadata,mixin,test,test-result,version-check} … colcon: error: Mixin ‘release’ is not available for ‘build’

按照豆包最终解决了:但是他这里说的有错,最终也只是拉取在线的default配置,没有自己定义,最终编译成功

如果 default mixin 中确实没有 release 配置,或者你想自定义配置,可以创建自己的 mixin 文件:
在这里插入图片描述
2 moveit 第一个c++入门项目,编译报错,原因在于粘贴的文件不一样

colcon build --packages-select hello_moveit

将该成如下:

#include <moveit/move_group_interface/move_group_interface.h>

在这里插入图片描述
3 第一个c++项目,按要求改之源码之后,会编译报错,原因暂未解决,但是b站播主视频并未讲解到这里。
在这里插入图片描述
解决方案:又是文档改了导致不兼容了

auto move_group_interface = MoveGroupInterface(node, “panda_arm”);

【Moveit2】第一个C++ Moveit程序_moveit c+±CSDN博客

automatic Addison 系列实操

实操到:Movelt系列 automatic addison

  • 您的第一个c++项目 总是规划失败 原因是日志好像只支持关节空间 不支持末端姿态

效果:

gazebo ros2 rivz+movelt 联合仿真

过程:
使用这个命令时候,报错是因为mycobot_description编译好之后,shell未重载
ros2 launch urdf_tutorial display.launch.py model:=/home/ubuntu/ros2_ws/src/mycobot_ros2/mycobot_description/urdf/robots/mycobot_280.urdf.xacro

source install/setup.bash

直接使用youtube博客的官方案例那样topic控制命令不生效

使用这样可以

ros2 topic pub /diff_drive_base_controller/cmd_vel_unstamped geometry_msgs/msg/Twist “{linear: {x: 0.2, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.5}}” --rate 5
在这里插入图片描述

怎么跑博客的house.world,直接使用gz命令是不行的,

要改2个方面,

1个环境变量 ,这个改成类似这个:

export IGN_GAZEBO_RESOURCE_PATH=“$HOME/world_tutorial”

1个 用这个启动house world

ign gazebo

启动成功,最终报这个错
在这里插入图片描述
在这里插入图片描述
moviet+rviz联合仿真

规划器选不到,日志有好几个报错

OMPL 规划适配器参数类型不匹配(导致规划管道加载失败)
机器人模型关节定义不匹配(影响模型解析)
次要报错:脚本中gz命令未找到

在这里插入图片描述
按照gpt 的数组改成字符串改了,

还有部分报错会一直刷屏,需要继续改

在这里插入图片描述后来仔细的研究了下几个问题,

第一个 expected [string] got [string_array] 错误的核心原因。yaml格式不对
Using CHOMP Planner — MoveIt Documentation: Humble documentation

在这里插入图片描述
moveit 后面总是带这个_metic找不到的错误
https://github.com/ros-controls/gazebo_ros2_control/issues/173

我这里在后缀都添加了一个mimic
在这里插入图片描述

后来就好了,github上面有很多相似的问题

https://github.com/ros-controls/gz_ros2_control/issues/96

https://github.com/art-e-fact/crane_x7_description/pull/1

https://github.com/ROBOTIS-GIT/turtlebot3_manipulation/issues/66

https://github.com/ros-controls/gz_ros2_control/blob/e2a475104b67134cebb697ed533fc3523dfe3924/ign_ros2_control/src/ign_system.cpp#L290

https://github.com/moveit/moveit2/blob/92ca89dca4fee679bc63a53bde9a992415a4d29e/moveit_core/robot_model/src/robot_model.cpp#L1301

https://github.com/ros-controls/gazebo_ros2_control/issues/173

https://github.com/ros-controls/gazebo_ros2_control/issues/173

https://robotics.stackexchange.com/questions/25107/ros2-moveit-cant-find-mimic-joint

您的第一个c++ movelt项目

在这里插入图片描述
将头文件改成hpp->h

改了头文件之后,仍然报错,找不到对应的函数

在这里插入图片描述
里面的函数给改变了
在这里插入图片描述
您的第一个c++ 项目

这个cpp项目,

在这里插入图片描述
shell 1是这样的

在这里插入图片描述
shell2是这样的
在这里插入图片描述
但是不生效 rivz 的规划还是都偏向于 0.0.0

在这里插入图片描述

曲面轨迹自己demo 系列实操

实操到:豆包自动生成油箱检测项目 在ubantu ws_learning_test下面(但stl文件法线一直无法加载)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95139.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95139.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95139.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java类加载与JVM详解:从基础到双亲委托机制

在Java开发中&#xff0c;理解JVM&#xff08;Java虚拟机&#xff09;和类加载机制是掌握高级特性的关键。本文将从JDK、JRE、JVM的关系入手&#xff0c;深入讲解JVM的内存结构&#xff0c;并详细剖析类加载的全过程&#xff0c;包括加载时机、流程以及核心机制——双亲委托模型…

准备机试--图【y总版】[重要]【最短路】

常用代码模板3——搜索与图论 - AcWing 一般&#xff0c;稀疏图&#xff08;m约等于n&#xff09;:堆优化版本的dj&#xff1b;稠密图&#xff08;mn^2&#xff09;&#xff1a;朴素dj 最短路的难点在于建图【抽象出点和边】 朴素dj

Python API接口实战指南:从入门到精通

&#x1f31f; Hello&#xff0c;我是蒋星熠Jaxonic&#xff01; &#x1f308; 在浩瀚无垠的技术宇宙中&#xff0c;我是一名执着的星际旅人&#xff0c;用代码绘制探索的轨迹。 &#x1f680; 每一个算法都是我点燃的推进器&#xff0c;每一行代码都是我航行的星图。 &#x…

Spring和mybatis整合后事务拦截器TransactionInterceptor开启提交事务流程

目录一、说明二、TransactionInterceptor开启事务&#xff08;1&#xff09;、拦截方法&#xff08;2&#xff09;、开启事务绑定数据库连接&#xff08;3&#xff09;、mybatis中sql执行数据库连接获取&#xff08;4&#xff09;、事务提交和当前线程ThreadLocal清理&#xff…

05.《ARP协议基础知识探秘》

ARP协议基本介绍与实践 文章目录**ARP协议基本介绍与实践**ARP概述ARP报文类型ARP工作过程解析ARP工作原理示意图无故ARP/免费ARP实验案例**实验目标**实验环境实验步骤ARP概述 作用&#xff1a;ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff…

互联网大厂面试:大模型应用开发岗位核心技术点解析

互联网大厂面试&#xff1a;大模型应用开发岗位核心技术点解析 第一轮&#xff1a;大模型基础与上下文工程 问题 1&#xff1a;你能简单介绍 Transformer 架构的工作原理吗&#xff1f; 小C&#xff1a;嗯&#xff0c;我理解是 Transformer 主要依赖自注意力机制&#xff08;Se…

【深度学习新浪潮】有没有什么方法可以将照片变成线描稿,比如日式漫画的那种?

一、技术原理与研究进展 1. 线描生成的核心技术路径 传统方法:基于边缘检测(如Canny算子)和形态学操作,但难以处理复杂纹理和艺术风格。 深度学习方法: 端到端生成:使用U-Net架构(如ArtLine项目)直接学习照片到线描的映射,结合自注意力机制和感知损失提升细节保留能力…

NV032NV037美光固态闪存NV043NV045

NV032NV037美光固态闪存NV043NV045在数字化浪潮席卷全球的当下&#xff0c;存储技术的每一次突破都深刻影响着从个人消费到企业级应用的各个领域。美光科技作为行业领军者&#xff0c;其NV系列固态闪存产品始终以技术创新为核心驱动力。本文将聚焦NV032、NV037、NV043、NV045四…

天硕G40工业固态硬盘破解轨道存储难题

在高铁与轨道交通高速发展的今天&#xff0c;轨道检测探伤是保障列车安全运行的核心环节。据统计&#xff0c;我国铁路总里程已突破16万公里&#xff0c;日均检测数据量超10TB。加固平板一体机作为轨道探伤领域的“移动工作站”&#xff0c;需要在跨越大江南北的极端环境中实时…

基于Velero + 阿里云 OSS的Kubernetes 集群的备份与恢复

在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;备份和恢复是保障数据安全与业务连续性的关键环节&#xff0c;主要方式包括 ETCD 备份恢复 和 Velero 备份恢复&#xff0c;两者在备份粒度、恢复影响范围、存储位置等方面存在以下差异&#xff1a; 1、ETCD 备份恢复&…

解构与重构:“真人不露相,露相非真人” 的存在论新解 —— 论 “真在” 的行为表达本质

解构与重构&#xff1a;“真人不露相&#xff0c;露相非真人” 的存在论新解 —— 论 “真在” 的行为表达本质绪论&#xff1a;传统解释的突围 —— 从 “藏才” 到 “存真”“真人不露相&#xff0c;露相非真人” 这句谚语&#xff0c;自明代《西游记》以降&#xff0c;便长期…

数据结构:哈希表、排序和查找

一、哈希算法1.将数据通过哈希算法映射成一个健值&#xff0c;存取都在同一个位置&#xff0c;实现数据的高效存储和查找&#xff0c;时间复杂度由O(n)->O(1)2.哈希碰撞&#xff1a;多个数据通过哈希算法得到的键值相同二、哈希表1.构建哈希表存放0-100之间的数据2.哈希算法…

【Java基础】Java I/O模型解析:BIO、NIO、AIO的区别与联系(Netty入门必备基础)

Java I/O模型深度解析&#xff1a;BIO、NIO、AIO的区别与联系 引言 在Java的网络编程与文件操作中&#xff0c;I/O&#xff08;输入/输出&#xff09;模型是绕不开的核心话题。从早期的BIO&#xff08;Blocking I/O&#xff09;到Java 1.4引入的NIO&#xff08;Non-blocking I/…

windows PowerToys之无界鼠标:一套键鼠控制多台设备

&#x1f4bb;简介 在多设备协作的工作场景中&#xff0c;如何实现一套键鼠控制多台设备了&#xff1f;微软推出的 PowerToys 工具集中的 Mouse Without Borders&#xff08;无界鼠标&#xff09;&#xff0c;通过软件层实现跨设备的键鼠共享与数据同步功能&#xff0c;为多台…

一道比较难的sql题,筛选出重复字段的行数

select * from 导入数据表; id city_column 1 北京,上海,广州 2 上海,上海,深圳 3 北京,杭州,北京 4 上海,广州,深圳select substring_index(khmc,,,1), * from 导入数据表 truncate table 导入数据表 select count(distinct khmc) from 导入数据表; …

【K8s】整体认识K8s之与集群外部访问--service

这一篇文章主要是对service发现新的理解 为什么要使用service服务发现&#xff1f; 首先pod的IP&#xff0c;是动态的&#xff0c;当我们重启一个pod的时候&#xff0c;它会给它分配一个新的IP&#xff0c;但是如果微服务a想要去调用微服务b&#xff0c;他是需要知道微服务b所有…

k8s(自写)

kubernetes k8s是什么&#xff1f;Kubernetes是什么&#xff1f;架构是怎么样的&#xff1f;6分钟快速入门_哔哩哔哩_bilibili kubernetes是google开源神器&#xff0c;介于应用服务和服务器之间&#xff0c;能够通过策略协调和管理多个应用服务&#xff0c;只需要一个yaml文…

实现微信小程序的UniApp相机组件:拍照、录像与双指缩放

在微信小程序开发中&#xff0c;相机功能已成为许多应用的核心组成部分。本文将介绍如何使用UniApp框架实现一个功能丰富的相机组件&#xff0c;支持拍照、录像、前后摄像头切换以及双指缩放等功能。功能概述这个相机组件具备以下核心功能&#xff1a;拍照功能&#xff1a;支持…

python pyqt5开发DoIP上位机【诊断回复的函数都是怎么调用的?】

目录 文章合集 一、底层网络接收:`_receive_loop`(触发起点) 调用时机: 核心代码: 作用: 二、数据解析:`handle_received_data`(判断是否为诊断回复) 调用时机: 核心代码(诊断回复相关部分): 作用: 三、UI显示:`add_trace_entry`(展示到界面) 调用时机: 信号…

谈物质的运动与运动的物质

运动的物质是不是物质的运动&#xff0c;如果假设是&#xff08;第一假设&#xff09;&#xff0c;那末运动的物质是物质的运动&#xff0c;而运动是物质的根本属性&#xff0c;又运动的物质是物质&#xff0c;则物质的运动是物质&#xff0c;既然运动是物质的根本属性&#xf…