ROS2中用MoveIt2控制自己的舵机机械手(5)
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)相关推荐
- ROS2中用MoveIt2控制自己的舵机机械手(3)
文章目录 1.前言 2.机械手Solidworks建模及其URDF文件导出 2.1.机械手建模 2.2.urdf文件导出 2.3.urdf文件微调 2.4.moveit导入urdf测试 3.PCA96 ...
- 在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文件 ...
- 立创梁山派GD32F450ZGT6--通过PCA9685控制16路舵机
PCA9685芯片,每一路LED输出端均可自由调节PWM波的频率 (40~1000Hz) 和占空比 (0%~100%) .这款芯片主要通过输出不同占空比的PWM脉冲信号来控制舵机转动的角度.是16通道 ...
- 《树莓派项目实战》第十二节 使用PCA9685驱动板控制多个舵机
目录 11.1 引脚介绍 11.2 打开I2C接口 11.3 连接到树莓派 11.4 编写代码获取温度 因为树莓派无法同时生成多个稳定的PWM信号,所以也就无法控制多个舵机,我们需要借助PCA9685 ...
- ESP8266 12F 点灯科技APP 控制两个舵机
第一次写博客,有什么不足,希望大家指正. 文章目录 1.基本功能描述 2.程序 3.接线图 4.配置方法 5.注意事项 custom wifimanager 这个库在云盘在中呢 链接:https:// ...
- LabVIEW控制Arduino实现舵机联控(基础篇—9)
目录 1.控制单个舵机 1.1.实验目的 1.2.实验环境 1.3.程序设计 1.4.实验演示 2.控制多个舵机 2.1.实验目的 2.2.实验环境 2.3.程序设计 2.4.实验演示 本篇博文将通过 ...
- stm32按键控制mg90s数字舵机、pwm调节舵机转动角度
昨天做了一个简答的小实验,我感觉挺有意思的跟大家分享一下. 我用了按键控制mg90s数字舵机,前不久一直研究模拟舵机,数字舵机与模拟舵机的控制方式是一样的pwm时序. 数字舵机接线方面: 与模拟舵机一 ...
- 气动与PLC控制实验装置带机械手QY-QDSY01
一.装置简介 QY-QDSY01气动与PLC控制实验装置带机械手是根据<液压与气压传动>.<气动控制技术>等通用教材的内容要求开发生产,装置可以进行气动基本制回路实验,模拟气动 ...
- 使用PCA9685控制多个舵机
todolist 要单独去找舵机的两个极值的大小,然后去该前文的映射的初始值 把角度值打印出来 0.准备 0.1.硬件设备 0.2.软件安装 1.安装好Arduino IDE 可以前往Arduino官 ...
最新文章
- 网卡的7种bond模式
- 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
- 控制两个等交替慢慢变亮,慢慢变暗【占空比】
- python 生成器推导式
- 【2018ACM山东省赛 - C】Cities(最小生成树变形优化,贪心思维)
- 简单的web框架(python)
- iframe懒加载_懒加载是如何实现的?
- lvs mysql 端口_LVS配置及多端口服务配置
- pythonista ios_Pythonista 3 ios版下载_Pythonista 3苹果版
- java面向对象super,final,static,匿名对象,内部类学习
- 启航篇——四旋翼飞行器之入坑两年心路历程和毕设总结
- 多重心法选址matlab,重心法选址问题.ppt
- 题解-怪盗基德的滑翔翼 c++
- 用计算机计算勾股定理,勾股计算器(勾股定理计算器)
- MQTT服务器Mosquitto的使用及配置过程中的一些问题和解决方法
- html网页配色,#0000ff表示什么颜色,设计师谈网页配色:按颜色分类(黄色)
- Excel中VBA编程学习笔记(十二)--自动筛选
- mldonkey系列之三──Ini文件[zt]
- 2-2 组合优化问题-常用模型与通用求解器
- 手机计算机怎么打出无限符号,Win7怎么用搜狗打无限符号|输入法打无限符号方法...