ROS四轴机械臂的搭建
1.ROS的安装
推荐鱼香ROS一键安装脚本:wget http://fishros.com/install -O fishros && . fishros
在执行这条命令后脚本会根据你的Ubuntu版本来自动推荐对应的ROS版本,只要根据提示引导来完成即可
2.机械臂的仿真
(1)isaac sim--物理仿真平台
将CUDA的版本更新至和电脑显卡的版本一致,然后在英伟达的平台上进行一个下载
下载好了之后将下载的isaac-sim-standalone-6.0.0-linux-x86_64.zip解压到你想要安装的目录,例如~/isaacsim
进入该目录,运行./post_install.sh脚本完成后续配置
最后,运行./isaac-sim.sh即可启动Isaac Sim
| 快捷键 | 效果 |
|---|---|
F | 聚焦选中的物体(Fit View) |
Alt + 左键 | 旋转视角(同左键拖动) |
Alt + 右键 | 平移视角(同右键拖动) |
Ctrl + Alt + 左键 | 框选缩放 |
Home | 重置视角到默认位置 |
(2)rviz--可视化调试工具
当你需要调试机械臂的运动规划算法、检查末端执行器的位姿是否正确、或者验证传感器数据是否
正常时,RViz是必不可少的工具
ROS2在终端中输入rviz2即可启动
例如我的机械臂就通过在终端中运行:ros2 launch arm_description display.launch.py来显示
(3)MeshCat--轻量级Web可视化工具
| 特性 | RViz (RViz2) | MeshCat | Isaac Sim |
|---|---|---|---|
| 核心定位 | ROS数据可视化工具 | 基于浏览器的3D可视化工具 | 高保真物理仿真平台 |
| 物理引擎 | 无,纯粹可视化,无动力学计算 | 无,仅作展示 | 有,基于NVIDIA PhysX 5 |
| 主要用途 | 调试ROS系统,查看TF树、点云、规划路径等 | 快速、远程查看机器人状态和运动轨迹- | 机器人AI训练、高精度感知仿真、数字孪生 |
| 硬件要求 | 低 | 极低(只需浏览器) | 极高,需要高端NVIDIA RTX GPU |
| 典型场景 | 与MoveIt配合进行运动规划可视化 | 算法开发中的快速可视化、远程协作演示 | 具身智能、强化学习、合成数据生成 |
当你需要一个轻量级、跨平台、无需安装复杂软件的可视化方案时,MeshCat是一个很好的选择
3.深度相机的使用(这里以gemini 335为例)
第一步:安装相关依赖
# 假设你已经 source 过 ROS2 环境
sudo apt install libgflags-dev nlohmann-json3-dev \
ros-jazzy-image-transport ros-jazzy-image-publisher \
ros-jazzy-camera-info-manager ros-jazzy-diagnostic-updater \
ros-jazzy-diagnostic-msgs
第二步:创建工作空间
# 在用户目录下创建 orbbec_ws 工作空间
cd ~
mkdir -p orbbec_ws/src
cd orbbec_ws
第三步:复制功能包到工作空间
# 假设你的功能包在 ~/Downloads/orbbec_ws/src/ 目录下
cp -r ~/Downloads/orbbec_ws/src/* ~/orbbec_ws/src/
第四步:编译功能包
cd ~/orbbec_ws
colcon build
第五步:添加环境变量(每次打开终端会自动加载)
echo "source ~/orbbec_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
第六步:安装udev规则(让相机有访问权限)
cd ~/orbbec_ws/src/orbbec_camera/scripts
sudo bash install_udev_rules.sh
第七步:运行相机
ros2 launch orbbec_camera gemini_330_series.launch.py
第八步:查看图像
# 查看发布的话题
ros2 topic list
# 打开图像查看工具
ros2 run rqt_image_view rqt_image_view
4.机械臂的逆运动学(IK)和基础运动控制
(1)仿真部分
利用Pinocchio进行运动学计算,并用MeshCat进行3D可视化。
1.准备自己的URDF模型
这是所有仿真的基础。你需要为你的四轴机械臂(含夹爪)创建一个准确描述其连杆、关节、质量、碰撞属性的URDF文件
2.进行分布仿真测试
第一步:测试正运动学。运行fk_sim.py,输入你期望的各关节角度,查看MeshCat中的模型是否运动正确,并核对末端位置是否与你的计算一致。
第二步:测试逆运动学。运行ik_sim.py,输入一个目标点(确保在机械臂工作空间内),查看求解出的关节角度是否合理,以及模型能否准确到达该点。
!!!逆运动学这边值得注意的是最好不要给姿态目标。根本原因在于四轴的机械臂它的自由度不够,有4个旋转关节,全部用于实现末端在空间中的X,Y,Z位置。没有多余的关节(冗余自由度)来自由调整末端的 roll,pitch,yaw(横滚、俯仰、偏航)姿态。
第三步:测试轨迹规划。运行traj_sim.py,让机械臂在多个目标点之间运动,观察轨迹是否平滑。
(2)实物测试
1.零点校准与角度监控
2.位置-速度控制
3.正运动学测试
4.逆运动学测试
5.轨迹规划控制
6.重力补偿
5.深度相机和YOLO
对于桌面物体,最可靠的姿态是让夹爪垂直向下(即抓取方向沿着Z轴负方向)
对于四轴机械臂,我的改造思路是:砍掉姿态估计,固定姿态
目标:先让YOLO能稳定检测物体,并输出物体在相机坐标系下的三维位置(X,Y,Z)。然后在获得物体位置的基础上,固定一个合理的抓取姿态,并验证其可行性。
遇到的问题:运行YOLO的时候图像画面不显示。
如何解决:ROS2 Jazzy自带的cv_bridge等模块,是在旧版NumPy1.x环境下编译的,而我环境中的NumPy版本是2.5.1,两者不兼容,导致了错误。我直接创建了一个全新的、专门用于视觉任务的虚拟环境。
6.手眼标定(眼在手外)
第一步:进行手眼标定
1.打印ArUco标定板
2.将标定板固定在机械臂上
3.运行标定程序,按照提示移动机械臂,采集多组数据
4.最后得到标定的结果
第二步:进行视觉引导
用手眼标定结果,将YOLO识别到物体的坐标转换到基坐标下
第三步:集成
将YOLO检测、坐标转换和机械臂控制串联成一个自动化流程
