ros
文章平均质量分 81
韭菜钟
这个人很懒,懒得写简介
展开
-
ros2_control的简单应用
在利用moveit_setup_assistant配置我们自己机械手后,当运行demo.launch.py时,会实例化一个moveit对象以及一个基于ros2_control的、虚拟的控制对象,从而可以实现一个完整的控制闭环。此基于ros2_control的虚拟对象,包含了action(server)相关的实例化、关节状态的发布、虚拟伺服电机的驱动及读取。我们也可以利用ros2_control,将我们自己的机械手与moveit连接起来,从而实现moveit对我们机械手的控制。原创 2023-11-13 14:56:35 · 794 阅读 · 3 评论 -
MoveIt的【Use Cartesian Path】选项及computeCartesianPath函数
在rviz中使用MoveIt时,在MotionPlanning选项卡有一个【Use Cartesian Path】的选项,勾选之后,规划出来的路径是两个移动点的直线路径。需要特别注意的是,此种方式规划出来的路径是不进行碰撞外部检测的,也就是不会避障。勾选此项以在笛卡尔(3D)空间中生成一条线性路径。此举将不考虑避开障碍物。在moveIt的c++接口中,也有对应的一条函数。原创 2023-10-12 09:54:45 · 621 阅读 · 8 评论 -
micro-ROS中对消息的内存管理
但是,假如消息的成员类型为:序列类型(Sequence type)、包含序列的复合类型(Compound type)、复合序列类型(Sequences of compound types),那就需要手动申请内存空间了。当然,假如复合类型中的成员全是基本类型,那也不用手动申请。等等,那就不用额外进行内存申请的操作,因为这些基本类型在实例化时就已经明确了空间大小,系统直接帮忙分配好了内存。假如你的消息的成员类型是基本类型(Basic type)及其数组类型(Array type),比如。原创 2023-10-06 16:38:45 · 251 阅读 · 0 评论 -
vscode的ros拓展(插件)无法渲染urdf
意思是这个拓展中的urdf渲染是由RobotWebTools来完成,可能是在安装时或者渲染时无法连接到这个RobotWebTools的网络导致的。执行 URDF Preview之后,虽然弹出了一个URDF Preview的窗口,但是这个窗口里面啥都没有。这几天有空了,到了这个拓展的github网站找一找原因,看看别人有没有遇到这个问题。只能使用最新版0.9.4了,在最新版中,他们重写了这个渲染插件。然后他好像再次确认了,是因为RobotWebTools.org这个网站挂掉了,所以无法渲染了。原创 2023-08-10 15:21:35 · 1810 阅读 · 8 评论 -
在VSCode下利用PlateFormIO开发Arduino的MicroROS遇到的一些问题
我是按照鱼香ROS的教程进行的,但是在进行的过程中,遇到了一些问题,这里记录下来,供有同样问题的同学进行参考。其实只要你使用的板子的MCU是ESP32,都可以按照他这个教程进行操作。原创 2023-06-09 15:39:47 · 2709 阅读 · 19 评论 -
sw2urdf导出的urdf文件中的惯性参数(inertial)错误的问题
有时候,当我们使用solidworks建好我们的模型,然后利用。原创 2023-06-08 10:25:14 · 1882 阅读 · 1 评论 -
ROS2中,从SolidWorks导出的urdf,联合moveit、gazebo进行控制及仿真
本文是对之前发的文章【在ROS2中,通过MoveIt2控制Gazebo中的自定义机械手】的一个拓展。建议先看看之前的文章再看这个。之前的文章的机械手是一个纯urdf自带几何图像(圆柱、立方体)等组成的所谓机械手,基本没有什么实用性。在后续的文章【ROS2中用MoveIt2控制自己的舵机机械手(1)】,我这边也已经实现了控制一个实物机械手,所以当时就没拿这个机械手放到gazebo中去仿真,因为我已经有实物了嘛。原创 2023-06-02 11:47:34 · 5182 阅读 · 50 评论 -
在ROS2中使用MoveIt2时出现 [moveit_robot_state.robot_state]: No kinematics solver instantiated for group
这个launch文件使用launch_ros.actions.Node来启动前面的parameters_basic,并传递了parameters给它。关于这个问题的回答,主要的原因是需要将moveit的配置传递给MGI(moveit::planning_interface::MoveGroupInterface)节点,让其使用节点的参数。因为我们还要做一个很重要的事情,让节点自动加载传递进来的参数:automatically_declare_parameters_from_overrides。原创 2023-05-30 17:19:02 · 565 阅读 · 0 评论 -
在windows下使用AstraPro深度相机
其中特别注意一下,通过openni去获取彩色图是无法成功的。只能通过uvc来取得。下载的OpenNISDK里面有个samples,里面都是例程,可以参考一下。原创 2023-05-26 16:36:15 · 1189 阅读 · 0 评论 -
MoveIt2中使用trac_ik
但是在Ros2中,无论MoveIt2也好,还是trac_ik也好,都没有提供标准的trac_ik集成(使用)方法。使用起来也挺方便。原创 2023-05-26 15:22:17 · 1492 阅读 · 0 评论 -
在moveit2中实现四连杆及曲柄滑块
该机构的组成如下图所示。粉红色、蓝色的底座为固定机构,黄色、灰色、青色的三根杠与彼此之间、与底座之间都是铰链连接,可以转动。其中黄色与灰色杆子连接部分的关节为主动轴,可以主动发起旋转(可以理解在此处装了马达)。原创 2023-05-18 15:06:11 · 802 阅读 · 3 评论 -
关于URDF文件的一些记录
以下记录一些关于本人对一些概念的理解,不保证正确,仅供参考。原创 2023-05-18 10:10:10 · 193 阅读 · 0 评论 -
pcl::io::saveOBJFile保存的obj文件的法线问题
可以看到,法线都是在同一侧的,表示方向是正确的。可以看到,黑一片、灰一片的。打开法线看看:好家伙,一半是正向的,一半是反向的。难怪看起来不对劲了。打开方向着色看也可以看到一部分面片的法线方向是有问题的。原创 2023-05-16 16:25:44 · 336 阅读 · 2 评论 -
手眼标定中利用Eigen求解AX=XB问题
在手眼标定中,求解AX=XB基本是个绕不过去的问题,其中A、B、X都是4*4的变换矩阵。从结果可以看到,解出来的X虽然没有绝对满足公式,但是基本符合要求,先将就着用。原创 2023-05-08 10:11:31 · 1360 阅读 · 4 评论 -
ORBBEC(奥比中光)AstraPro相机在ROS2下的标定与D2C(标定与配准)
相机自带的D2C效果不好,颜色和点云没有很好地匹配上,自己按照下面的介绍手动匹配一下。原创 2023-05-03 11:45:16 · 7256 阅读 · 21 评论 -
ROS2下机械手的手眼标定
摄像头是垂直拍摄工作平面,只需要用棋盘格一次性标定就够了,这里的棋盘格是便于捕捉到特征点,特征点的实际坐标是已知的(通过设置每个单元格的实际物理尺寸可以计算得到),通过特征点确定用户坐标系,然后计算两个坐标之间的变换矩阵(旋转、平移、缩放),然后就可以确定相机采集到的图像上的一个坐标点映射到用户坐标系的实际坐标点。标定板的坐标系与用户坐标系重合(物理上)、我们建立了标定板坐标与图像坐标的映射(计算上),基于上面两个成立的前提,我们也就建立了图像坐标与用户坐标系的对应。里面演示的两把剑末端相对旋转的运动)。原创 2023-04-25 17:17:14 · 2854 阅读 · 0 评论 -
在ROS2中使用奥比中光(ORBBEC)的AstraPro深度相机
拷贝到你的ubuntu的一个文件夹中,并解压得到 ros2_astra_camera 文件夹然后新建一个ros2_ws文件夹,再在ros2_ws文件夹中新建src文件夹,然后复制 ros2_astra_camera文件夹里面的astra_camera、astra_camera_msg两个文件夹到src里面。原创 2023-04-18 13:38:40 · 4903 阅读 · 16 评论 -
ROS2中将octomap发布到Moveit中作为碰撞物体
这里假设你已经装好了ROS2以及Moveit2(都用二进制安装就行,不用从源码安转),没有安装好的,可以按照鱼香ROS的教程安装,两三行命令就搞定了。我的ROS2版本为humble,请根据你使用的实际版本替换。安装pcl安装octomap相关库下面这个也安装一下。原创 2023-04-08 18:21:10 · 2482 阅读 · 17 评论 -
尝试对MoveIt2的轨迹进行插值控制舵机机械手
机械手在运动时,要尽可能平稳、少冲击,显得丝滑。Moveit给到的轨迹,除了描述了各个关键时刻的各个关节的位置,还描述了此时的各个关节的速度、加速度。假如我们的执行机构可以完全按照这些位置、速度、加速度来进行操作,理论上就可以实现平滑的移动。但是由于我们目前用的是舵机,除了位置可控外,速度、加速度都不能直接控制。所以,只能通过插值来插补两个位置之间的各个小位置,让运动大概实现【加速-匀速-减速 】的过程。舵机的转动速度会因为负载的不同而不同,不能够简单认为是一个固定值。原创 2023-04-05 17:14:15 · 985 阅读 · 15 评论 -
ROS2中用MoveIt2控制自己的舵机机械手(3)
经过上面的操作,舵机就基本在我们的掌控之中了。下一步就可以通过串口建立电脑与stm32的通讯,从而实现电脑上发送相应的指令控制任意舵机的转动角度。原创 2023-03-24 11:24:45 · 2325 阅读 · 10 评论 -
ROS2中用MoveIt2控制自己的舵机机械手(5)
该机械手在执行MoveIt规划的路径时,会一卡一卡的,主要是因为两方面的原因:1.机械结构松散、2.执行路径时没有进行插补。主要原因是插补、反馈问题,后面再慢慢完善了。总之,暂时告一段落了。原创 2023-04-02 11:10:32 · 2345 阅读 · 3 评论 -
ROS2中用MoveIt2控制自己的舵机机械手(4)
好了,这下子应该全链路打通了。下一篇应该大结局了。原创 2023-03-27 17:04:59 · 1217 阅读 · 0 评论 -
ROS2中用MoveIt2控制自己的舵机机械手(2)
硬件选型原创 2023-03-17 16:12:11 · 1685 阅读 · 3 评论 -
ROS2中用MoveIt2控制自己的舵机机械手(1)
此教程是基于上一篇的,假如还没看过上一篇,请按上一篇说明的步骤操作一遍,然后再看这一篇。目前我们先完成上位机的接口,以后再与下位机的舵机通讯。原创 2023-03-14 15:13:56 · 3457 阅读 · 17 评论 -
为啥rviz2只需要订阅/robot_description就可以显示运动的机器人
先说答案:实际它还订阅了坐标话题/tf、/tf_static。原创 2023-03-10 15:26:47 · 780 阅读 · 0 评论 -
在ROS2中,通过MoveIt2控制Gazebo中的自定义机械手
目前的空余时间主要都在研究ROS2,最终目的是控制自己用舵机组装的机械手。由于种种原因,先控制Gazebo的自定义机械手先。先看看目前的成果左侧是rviz2中的moveit组件的机械手,右侧是gazebo中的机械手。在moveit中进行路径规划并执行后,右侧gazebo中的机械手也就执行相应的动作。据说win10下也可以装ROS2,但是十分折腾,还是在Ubuntu下安装方便一些,Ubuntu22.04才有humble版本的ros2,Ubuntu20.04没有humble。按照鱼香ros的教程,在命令行原创 2023-03-09 17:55:30 · 11655 阅读 · 138 评论 -
ROS2中使用gazebo仿真时找不到libgazebo_ros_openni_kinect.so
因为ros2的gazebo_ros_pkgs中,已经将该插件移除,或者说将该插件的功能合并到libgazebo_ros_camera.so中,主要是将type改成depth。还有其他类型的相机,可以参考具体的说明。原创 2023-02-15 16:46:46 · 1088 阅读 · 0 评论 -
关于在ROS2中订阅话题/robot_description后,立马返回相应信息的实现问题
一开始我以为是话题发布者通过 get_subscription_count() 不断获取实时的订阅者数量,当发现订阅者数量发生变化时,发布一次话题(广播)。然而,当我保持此次订阅,并重新创建另外一个订阅时,另外新创建的订阅会收到信息,这是正常的。但是原来打开的那个订阅,并没有收到新的信息。可以看到,在订阅话题后,立马收到了话题的响应,获取到了信息。目前在学习ROS2的过程中,发现了一个感觉有点意思的问题。a.在订阅者订阅时立马发送一次信息给订阅者。1.打开了gazebo的例程。b.而且还是独立发送的。原创 2023-02-14 17:31:44 · 832 阅读 · 0 评论 -
在Qt中调用MoveIt时出现Ogre::xxx错误
经过查找,发现是ros2里面的moveit_visual_tools,和moveit源码编译的moveit_visual_tools冲突了。可能是我什么时候安装了二进制的moveIt。然后再设置库的路径。原创 2023-02-06 16:52:49 · 258 阅读 · 0 评论 -
ROS2学习
先安装Ubuntu22.04.1(据说win10下也可以装ROS2,但是十分折腾,还是在Ubuntu下安装方便一些)(Ubuntu22.04才有humble版本的ros2,Ubuntu20.04没有humble)时,假如是直接用g++编译cpp文件,他那样子是没问题;但是假如是在Qt中调用ros的库时,需要将lib目录下所有的so包含进去。强烈建议使用鱼香ROS的一键安装功能,对于我们这些小白真的是福音。然后在命令行中执行鱼香ROS的一键安装代码。然后选择安装ros,选择humble版本。原创 2022-12-28 10:36:32 · 1046 阅读 · 4 评论