@小鱼 嗯嗯,为将系统的share里面功能包删除后就不会出问题了,然后用第一种方法完成了,效果来看目前没有问题

空白 发布的最佳帖子
-
ABB机器人与ROS2联调(文本教程)(ABB-ROS2-Moveit)
在这段时间因为导师要求需要实现ABB与机器人的联调(动力学与运动学都需要,但是感觉gazebo实现还有点困难,暂时先尝试了moveit方向)。
目前来说全部联调过程均参考了网上方案,所以只是给如果同样需要使用ABB机器人与ROS联调的朋友们提供一个简单的方向,代码以及细节不一一讲解(目前我自己也没有完全搞明白)
首先尝试的是ROS1版本的melodic与abb联调,这个可以参考网络上现有的中文教程,在此提供我参考的几个教程链接(不能完全按照上面的方法,可能有一点细节需要改动)https://blog.csdn.net/zhangrelay/article/details/52687545 https://blog.csdn.net/qq_31393391/article/details/107433289?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-107433289-blog-52381597.pc_relevant_recovery_v2&spm=1001.2101.3001.4242.1&utm_relevant_index=3 https://blog.csdn.net/u014697321/article/details/106434289#comments_12532558
实现ROS1与ABB联调后,主要由于这段时间学的ros2(感觉ros2的结构和代码更加清晰,ros1没有学明白),并且melodic在之后不会再更新,同时参考网上ABB机器人闭环控制的要求需要EGM(如下图),故考虑实现ROS2与ABB机器人的联调。
在搜索的过程中,发现有大佬已经完成了ROS2与ABB的联调过程,目前更新版本为rolling,但是与我使用的humble尝试后没有区别,链接如下:
https://github.com/PickNikRobotics/abb_ros2
详细操作步骤可以完全按照Getting Started中所描述的进行。
对此简单复述下(没有明白的话可以直接去github上面仔细看)
第一步先下载源代码并编译安装,整个过程无任何问题(和常规的源码安装一样,下载后VCS安装其他功能包,然后rosdep check 一下需要的依赖,最后用小鱼的rosdepc install就行,rolling与humble版本无影响)安装时有个需要注意的地方,前提条件是已经安装了moveit,针对源码安装moveit出现的问题我在下面链接中有提到,二进制安装不会出现缺少moveit环境的问题
https://fishros.org.cn/forum/topic/763/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8roslaunch-%E8%B0%83%E7%94%A8%E4%B8%8D%E5%90%8C%E5%B7%A5%E4%BD%9C%E7%A9%BA%E9%97%B4%E7%9A%84%E5%8A%9F%E8%83%BD%E5%8C%85/18?_=1668264938770
之后尝试moveit仿真应该不会出现问题,接下来就是进行ABB配置与ROS2配置
将下载好的rspag文件解压后(robotstudio目前尝试了6.08版本不行,下载的2022版本)主要修改ROB_1中Remote Address即可,其他部分一般不会出问题,如果RWS端口不确定也可以参考github上面提供的方法查找,目前测试过方法无问题。
同理在ROS2的robot description file中我们可以看到启动节点完成RWS通讯还需要知道rws_port与rws_ip,默认rws_port为80,rws_ip为电脑ip地址(注意不是虚拟示教器的127.0.0.1!)
上述配置好后可以先启动ABB程序(移至main后点播放一样的按钮即可,然后会提示等待连接),再启动ros2 launch文件,如下
ros2 launch abb_bringup abb_control.launch.py description_package:=abb_irb1200_support description_file:=irb1200_5_90.xacro launch_rviz:=false moveit_config_package:=abb_irb1200_5_90_moveit_config use_fake_hardware:=false rws_ip:=192.168.123.77 rws_port:=80
其中rws_ip 改为自己电脑ip即可
之后再启动rviz和gazebo,这个也可以直接调用写好的roslaunch文件ros2 launch abb_bringup abb_moveit.launch.py robot_xacro_file:=irb1200_5_90.xacro support_package:=abb_irb1200_support moveit_config_package:=abb_irb1200_5_90_moveit_config moveit_config_file:=abb_irb1200_5_90.srdf.xacro
之后就可以尝试ABB与rviz之间是否真正通讯,moveit随机生成一个目标位置并执行,可以看到ABB可视化界面中机械臂跟随运动,对此完成ABB机器人与ROS2的联调过程。
由于我目前还才完成联调过程,后面会使用代码实现目标点和其他要求的自动动作,并且尝试实现闭环控制(ROS1中不能实现闭环控制),后续过程也会和大家一起努力。
-
RE: 运行自己编写的代码时出现Could not find parameter robot_description_semantic and did……问题
@小鱼 最终解决了,思路还是在publish部分设置为true就可以,后面的报错和问题无关,其实是在尝试的过程中修改了太多文件乱了,重新回档后修改了launch的参数即可。谢谢小鱼了
-
RE: 机械臂代码一直卡在(move_group.plan(my_plan)部分
@小鱼 在 机械臂代码一直卡在(move_group.plan(my_plan)部分 中说:
去掉肯定是不行的,试试多线程执行器,原来的估计是跨线程通信造成死锁问题了
好的,谢谢小鱼,这个问题基本上解决了,后面就是去github上面多找找代码学习和练手
空白 发布的最新帖子
-
RE: Imu坐标系转换以及数据验证
@Lorry 我以前做控制的时候用过这部分,但是用角加速度和加速度输出的角度值是没问题的,或者你在里面写一个代码把它转换成角度说不定就可以验证了
-
RE: Imu坐标系转换以及数据验证
https://blog.csdn.net/will_ye/article/details/116401523#:~:text=rosrun%20rviz%20rviz%201%20%E2%91%A4,%E5%9C%A8rviz%E9%87%8C%E9%9D%A2add%E8%BF%99%E4%B8%AA%E6%8F%92%E4%BB%B6%20rviz_imu_plugin%20%EF%BC%8C%E4%BC%9A%E6%9C%89%E4%B8%A4%E4%B8%AA%EF%BC%8C%E8%BF%98%E6%9C%89%E4%B8%80%E4%B8%AA%E8%A7%92%20rviz_plugin_tutorials%20%EF%BC%8C%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%98%BE%E7%A4%BA%E7%9A%84%E6%98%AF%E7%BB%8F%E8%BF%87%E6%BB%A4%E6%B3%A2%E5%92%8C%E5%90%88%E6%88%90%E5%90%8E%E7%9A%84%E5%9B%9B%E5%85%83%E6%95%B0%E5%92%8C%E5%8A%A0%E9%80%9F%E7%AD%89%E4%BF%A1%E6%81%AF%EF%BC%8C%E8%80%8C%E7%AC%AC%E4%BA%8C%E4%B8%AA%E7%94%A8%E6%9D%A5%E6%98%BE%E7%A4%BA%E5%8E%9F%E5%A7%8Bimu%E6%95%B0%E6%8D%AE
可以参考下这个链接
-
RE: Imu坐标系转换以及数据验证
@Lorry 我记得imu有办法(好像是一个功能包)看到tf变换是否是对的,当时的操作就是晃动手里的陀螺仪,然后看rviz里面的运动和手里是不是一样,但是我没具体看
-
RE: Imu坐标系转换以及数据验证
@Lorry 在 Imu坐标系转换以及数据验证 中说:
目前成品imu的坐标系(x、y、z轴的顺序)一般为右-前-上或者左-前-下,这和ros中定义的小车坐标系不一致(小车坐标系为前-左-上),所以就需要将imu坐标系转换到小车坐标系。
我对这方面不是特别了解,但是我觉得可以不自己进行转换,尝试使用TF变换会不会效果会好一点?而且可以通过tf tree查看具体的转换问题
-
Moveit2 怎么在Rviz里面直接显示机械臂末端轨迹?
我目前实现显示末端轨迹的方法是通过
moveit_visual_tools::MoveItVisualTools visual_tools(move_group_node, "base_link", "move_group_tutorial", move_group.getRobotModel()); visual_tools.publishPath(path, rvt::BLUE, 0.005);
来实现相关功能的,但是我发现当机械臂模型没有定义末端执行器(end effector)的时候是不能直接使用像
visual_tools.publishTrajectoryLine(my_plan.trajectory_, joint_model_group);
这样获取的(不知道是不是bug)。
我记得rviz可以直接设置Show Trail来显示末端轨迹的,但是在MotionPlanning里面的Planned Path没有用,RobotModel里面也没有找到,想问问大家是怎么显示轨迹的。
版本ROS2 humble -
RE: 在同一个节点,没定义callback_group的情况下,有多个回调函数,请问算是多个线程么
@Lorry 那就是说,如果资源足够的情况下,遇到话题服务动作相关的数据处理,最好都是使用多线程来完成?