1.前言

在上一篇【ROS2中用MoveIt2控制自己的舵机机械手(4)】,我们已经实现了上下位机的通讯。由于目前使用的是舵机,MCU(stm32)是无法从舵机那里读取到当前的角度的,因此下位机发给上位机的协议暂时没必要实现,暂时只用printf来调试就够了。
这一篇,我们来实现整个系统的调试与运行。

2.串口连接至虚拟机

我这边用的是虚拟机VMware里面运行了个Ubuntu22.04,因此串口需要连接到虚拟机里面。我用的是usb转串口(CH340芯片),在虚拟机开启的情况下,将串口插入电脑时,虚拟机会提示是否接入到虚拟机,选择接入虚拟机即可。

但是接入后,假如打开我们自己写的Qt程序来试图打开串口,会发现枚举不到我们的串口,此时需要按照这个来进行操作:【Ubuntu22.04 CH340系列串口驱动(没有ttyUSB)问题解决方案】

sudo apt remove brltty

此时重新拔插就可以枚举到这个ttyUSB了。

但是此时假如选择打开这个串口的话,会报[permission denied]的错误,无法打开。这个问题可以参考这里解决:【ubuntu 打开串口时permission denied】

3.MoveIt、Rviz、机器人状态节点

参考 【在ROS2中,通过MoveIt2控制Gazebo中的自定义机械手】、【ROS2中用MoveIt2控制自己的舵机机械手(1)】,利用我们从SolidWorks导出的模型构建基本的MoveIt环境。

4.机器人节点

这次我们的机器人节点是用Qt调用ROS库编写的,详情请参考【ROS2中用MoveIt2控制自己的舵机机械手(1)】,【ROS2中用MoveIt2控制自己的舵机机械手(4)】.
我们创建了一个类MyActionRobot ,里面会发布Action用于对接Moveit,同时会把接收到的MoveIt发送过来的路径点位信息发射出去

再将该信号连接到串口槽函数中,将点位通过串口发送给下位机,让下位机PCA9685驱动电机。

5.效果

整个系统的运行视频可以看这里:【ROS2中用MoveIt2控制自己的舵机机械手】

6.工程代码

整个项目的代码我放在了百度网盘,有兴趣的同学可以下载下来对比博客来慢慢看。
(在上位机代码里,可以看到有一些joint的旋转方向需要翻转,后来我继续研究了一下,发现可以在urdf中进行修正。改正后就不需要在代码里翻转了。各位弄自己的模型时,一定要注意这个问题,否则后面标定的话,会乱套。
同时,solidworks里面马达坐标系的轴方向最好是全部一致,比如都是长边为y、短边为x,z轴朝外。

)

网址:https://pan.baidu.com/s/1oTOQ6x-VMjijK7c428DuKQ,提取码:rjdz。
里面一共三个文件:
MachineArm.zip、myArmTest.zip、myClaw.zip

MachineArm.zip是个stm32cubeIDE的工程,解压后可以用stm32cubeIDE打开。假如用的是别的下位机MCU(51,arduino或者其他的),可以只参考里面的 MachineArm\Core\Inc,Src路径下的pca9685文件。

myArmTest.zip是个Qt工程,我用的Qt版本是Qt5.15.2。里面实现了与下位机的串口通讯+与MoveIt的Action通讯。
代码myactionrobot.cpp中的85行应该为
int64_t duration = time_to_sleep.nanoseconds();
因为这个time_to_sleep是个duration,他的nanoseconds() 、seconds()是同样的意义的,而不是像前面的 time_from_start那样是分开统计汇总的。。。。

myClaw.zip里面是ROS2工程,里面有两个项目:claw_description以及arm_claw。claw_description用来提供urdf文件,arm_claw是用moveit_setup_assistant配合claw_description的urdf生成的项目。
假如想要启动整个项目(下位机假如需要你们用的不是stm32,需要自己根据实际情况调试一下),可以按照以下步骤执行。

6.1上位机启动

a、连接好串口。
b、启动Qt程序:myArmTest,生成机器人节点。

c、cd到myClaw。
d、执行编译

colcon build

e、soure一下,目的是将本目录下的install目录下的东西(的路径)告知ROS系统,然后才可以利用ros2的各种指令对我们的项目进行操作:

source install/setup.bash

f、执行以下命令,启动RobotStates节点

ros2 launch arm_claw my_claw.launch.py

g、重新打开一个命令行,也cd到myClaw目录,也source一下,然后执行以下命令,启动MoveIt

ros2 launch arm_claw my_moveit_rviz.launch.py

如无意外的话,上位机就启动完了。
执行规划的话,还可以在Qt那边看到输出:

6.2 下位机相关

下位机与上位机的通讯是通过串口实现的。下位机目前相当于是单方面接收数据,并没有给上位机发送与轨迹规划有关的数据。所以理论上,这是个开环的控制系统,不要下位机也不影响我们调试上位机的。
但是假如需要下位机执行上位机给出的指令,从而驱动机械手的话,只需要对上位机发送下去的5个角度值做文章就行。

7.总结

假如需要跑完整个项目,是需要一定的基础的。推荐看一下鱼香ROS的ROS2教程【动手学ROS2】,我也是从他的教程入门的。
该机械手在执行MoveIt规划的路径时,会一卡一卡的,主要是因为两方面的原因:1.机械结构松散、2.执行路径时没有进行插补。主要原因是插补、反馈问题,后面再慢慢完善了。
总之,暂时告一段落了。

ROS2中用MoveIt2控制自己的舵机机械手(5)相关推荐

  1. ROS2中用MoveIt2控制自己的舵机机械手(3)

    文章目录 1.前言 2.机械手Solidworks建模及其URDF文件导出 2.1.机械手建模 2.2.urdf文件导出 2.3.urdf文件微调 2.4.moveit导入urdf测试 3.PCA96 ...

  2. 在ROS2中,通过MoveIt2控制Gazebo中的自定义机械手

    文章目录 1.软件的安装 1.1.Ubuntu 22.04 1.2.ROS2 1.3.Gazebo 1.4.MoveIt2 1.5.moveit-setup-assistant 2.机械手urdf文件 ...

  3. 立创梁山派GD32F450ZGT6--通过PCA9685控制16路舵机

    PCA9685芯片,每一路LED输出端均可自由调节PWM波的频率 (40~1000Hz) 和占空比 (0%~100%) .这款芯片主要通过输出不同占空比的PWM脉冲信号来控制舵机转动的角度.是16通道 ...

  4. 《树莓派项目实战》第十二节 使用PCA9685驱动板控制多个舵机

    目录 11.1 引脚介绍 11.2 打开I2C接口 11.3 连接到树莓派 11.4 编写代码获取温度 因为树莓派无法同时生成多个稳定的PWM信号,所以也就无法控制多个舵机,我们需要借助PCA9685 ...

  5. ESP8266 12F 点灯科技APP 控制两个舵机

    第一次写博客,有什么不足,希望大家指正. 文章目录 1.基本功能描述 2.程序 3.接线图 4.配置方法 5.注意事项 custom wifimanager 这个库在云盘在中呢 链接:https:// ...

  6. LabVIEW控制Arduino实现舵机联控(基础篇—9)

    目录 1.控制单个舵机 1.1.实验目的 1.2.实验环境 1.3.程序设计 1.4.实验演示 2.控制多个舵机 2.1.实验目的 2.2.实验环境 2.3.程序设计 2.4.实验演示 本篇博文将通过 ...

  7. stm32按键控制mg90s数字舵机、pwm调节舵机转动角度

    昨天做了一个简答的小实验,我感觉挺有意思的跟大家分享一下. 我用了按键控制mg90s数字舵机,前不久一直研究模拟舵机,数字舵机与模拟舵机的控制方式是一样的pwm时序. 数字舵机接线方面: 与模拟舵机一 ...

  8. 气动与PLC控制实验装置带机械手QY-QDSY01

    一.装置简介 QY-QDSY01气动与PLC控制实验装置带机械手是根据<液压与气压传动>.<气动控制技术>等通用教材的内容要求开发生产,装置可以进行气动基本制回路实验,模拟气动 ...

  9. 使用PCA9685控制多个舵机

    todolist 要单独去找舵机的两个极值的大小,然后去该前文的映射的初始值 把角度值打印出来 0.准备 0.1.硬件设备 0.2.软件安装 1.安装好Arduino IDE 可以前往Arduino官 ...

最新文章

  1. 网卡的7种bond模式
  2. 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
  3. 控制两个等交替慢慢变亮,慢慢变暗【占空比】
  4. python 生成器推导式
  5. 【2018ACM山东省赛 - C】Cities(最小生成树变形优化,贪心思维)
  6. 简单的web框架(python)
  7. iframe懒加载_懒加载是如何实现的?
  8. lvs mysql 端口_LVS配置及多端口服务配置
  9. pythonista ios_Pythonista 3 ios版下载_Pythonista 3苹果版
  10. java面向对象super,final,static,匿名对象,内部类学习
  11. 启航篇——四旋翼飞行器之入坑两年心路历程和毕设总结
  12. 多重心法选址matlab,重心法选址问题.ppt
  13. 题解-怪盗基德的滑翔翼 c++
  14. 用计算机计算勾股定理,勾股计算器(勾股定理计算器)
  15. MQTT服务器Mosquitto的使用及配置过程中的一些问题和解决方法
  16. html网页配色,#0000ff表示什么颜色,设计师谈网页配色:按颜色分类(黄色)
  17. Excel中VBA编程学习笔记(十二)--自动筛选
  18. mldonkey系列之三──Ini文件[zt]
  19. 2-2 组合优化问题-常用模型与通用求解器
  20. 手机计算机怎么打出无限符号,Win7怎么用搜狗打无限符号|输入法打无限符号方法...

热门文章

  1. 如何在WordPress中创建自定义主页
  2. C语言关键字:goto
  3. 桥梁防碰撞隐患整改方案——喜讯科技
  4. 思科ei ccie里DES和AES加密原理必看
  5. 简单理解modbus功能码和分区
  6. 阿里巴巴领域建模实践
  7. 在MSN中批量添加好友的方法
  8. 浏览器F12控制台无法抓包,如何解决
  9. wincc mysql ado_WINCC中使用ADO对象连接数据库 例子 常用属性 方法
  10. 对Chrome OS不要有三个指望