
ROS learning
文章平均质量分 59
Will_Ye
其实梦想并不远,走着也能到
展开
-
[ROS调用cv_bridge]undefined reference to `cv_bridge::toCvCopy(boost::shared_ptr<sensor_msgs::Image_
所以在find_package里面加入cv_bridge就可以了,有的blog 说需要在xml文件了也加,我现在没加好像也没有什么问题。原创 2023-04-12 14:18:17 · 1350 阅读 · 0 评论 -
Ubuntu 用C/C++打开/dev/ttyUSB0或/dev/ttyACM0设备以及发送和接收数据
最近使用一个新的设备时,接的也是USB口,但是设备类型好像有点不同,了解了一下,他们所用的协议有所不同,以前最常用的ttyUSB。调用的驱动是drivers/usb/serial/usb-serial.c,而ttyACM。调用的驱动是drivers/usb/class/cdc_acm.c。原创 2023-04-07 15:39:08 · 5347 阅读 · 0 评论 -
开机自启动程序(登陆后)
跟着就可以重新开机试试,如无意外就能看到开机登录后,就会自动启动一个新terminal,里面运行的是roscore.然后点击右上角那个Add,添加需要开机启动的command和名字就好,第三栏comment可以不写。PS:还有一点不要忘了,要确保这个.sh文件有足够的权限,先给它权限。使用系统自带的开机自启动程序工具,打开terminal,然后输入。其实有好几种开机自启动程序的方法,这里只写最简单且亲测可行的。command就是需要启动的file,这里我写了一个。文件,去启动roscore。原创 2022-09-21 15:42:39 · 502 阅读 · 0 评论 -
ROS编译 调用第三方动态库(xxx.so)
在做项目过程中,不可避免,有时需要使用一些第三方的开源库,或者自己写的动态库,然后就需要CMakeLists中添加这些动态库对应的路径,进行编译。需要调用的动态库后缀一般为,有时也会遇到除了,还有和这些,如,还有和在后缀后的这些数字,其实代表的是不同版本,用来做版本管理的,所以整个动态库的文件名是有讲究的。比如,lib是固定代表共享库,zzz是共享库名称,.so是固定后缀,1表示的是主版本号,2表示次版本号,3表示发行版本号。而且这个名字最长的,是实际的库文件,含有的是可执行的二进制代码。所以就可以用指令原创 2022-07-05 23:08:03 · 1843 阅读 · 0 评论 -
Ubuntu18.04 ROS与Anaconda兼容并且在python3的虚拟环境下与ROS通信
首先为什么ROS跟anaconda会出现冲突,问题的核心在于调用python的路径,ROS是建立在python2.7下的,所以运行ROS需要当前的python版本指向python2,而anaconda则是在anaconda创建的python路径,一旦启动anaconda,python的路径就指向了anaconda创建的python路径。弄清这点后,用点小技巧把它们分开执行就可以实现兼容。可以通过下面的方法验证刚刚说的,先进入,一般装完ROS和anaconda后,会多出这么几行这时如果启动ROS的东西就会原创 2022-06-30 19:23:06 · 3114 阅读 · 0 评论 -
Rviz仿真时遇到机器人瞬间回到世界坐标原点的问题及可能原因
仿真过程中,原本正常控制机器人移动,但是突然机器人瞬间回到世界坐标的原点,突破所有限制。这时应该是算法中某些变量算得了,然后计算速度的方程用到了这个带的数值,也得到的值,通过这个topic发给机器人端,导致机器人瞬间就回到原点这时只能在代码中反向排查了,从的数据一步步往上排查,设个判断的语句,慢慢检查一下是哪一个变量出问题了,如下:造成这些变量变成的原因太多了,很多都是基本计算逻辑问题,只要定位出来就好办了,有时比如给函数input的变量有个0,而这个0用作分母,这就出问题了。这里只是对Rviz做仿真时原创 2022-06-02 16:12:26 · 761 阅读 · 1 评论 -
【ROS】usb_cam相机标定
1. 唠叨两句当我们要用相机做测量用途时,就需要做相机标定了,不然得到的计算结果会有很大误差,标定的内容包括三部分:内参,外参还有畸变参数。所以标定的过程就是要求得上面这些参数。以前弄这个事估计挺麻烦,需要做实验和计算才能得到,现在通过ros的开源包几分钟就能完成相机标定,感激!具体的内外参和畸变系数的说明,可以看看Reference里面的第一个链接,写得很详细。2. 准备工作要准备三样东西:usb_cam的ROS启动包相机标定的ROS包还有一个用于标定的棋盘格1)usb_cam启动包原创 2022-05-31 14:44:52 · 7049 阅读 · 4 评论 -
Gazebo仿真模型导入问题: ROS This robot has a joint named “first_joint“ which is not in the gazebo model
1. ProblemROS做仿真时,模型在Rviz中能正常显示和控制,然而在Gazebo中就无法正常显示,并有以下得报错:ROS This robot has a joint named “first_joint” which is not in the gazebo model2. Solution问题其实出在URDF模型的质量和惯性参数没设好,因为Gazebo是一个物理仿真模型!而我们在写URDF时,有时直接把物体的质量设为0,或很小很小的数,接近于0,太小的数会被归为0,如下面的URDF文原创 2022-05-20 14:42:10 · 1575 阅读 · 0 评论 -
ROS 串口通信例程
做项目过程中经常需要通过ROS读写串口,获取对应串口设备的一些信息和状态,在这个过程中需要两样东西:首先是串口设备的说明书,比如电池或IMU之类的,只要是别人出售的产品,都会配对应的说明书,查看返回信息中,每个字节对应数据的含义然后就是ROS端的节点,读取以及发送信息,解析数据,有些产品直接把ROS节点都给你做好了,但大多数不会所以这里主要展示的是如何写一个ROS节点读取一个电池的状态信息1. 查看说明书说明书大致如下所示,就是会告诉你每个字节对应数据的含义,知道这个才能做解码,就像跟单片机通原创 2022-05-06 18:39:38 · 4250 阅读 · 5 评论 -
监听move base的状态以及crash后的重启
1. Problem在导航时,遇到一个情况,就是突然很多人出现在机器人附近,它没办法规划轨迹,然后启动move base的terminal直接就crash了,之后的操作就没办法进行了2. Solution解决方案有两种:事前:在发生crash前处理突发状况事后:发生crash后,怎么重新启动move base以及重新发布目标位置在这里只提供一个事后的处理方案,事前的解决方案比较麻烦,要到算法里头去找,这个就不容易弄了,事后补救的方案还是容易实现。1) 监听move base状态头文件:原创 2022-05-01 18:36:27 · 1136 阅读 · 0 评论 -
TF报错及解决方法 Error: TF_DENORMALIZED_QUATERNION
1. Problem用HDL做定位时会出现如下报错,然后就没办法继续run了,卡在这,然后出现如下报错:Error: TF_DENORMALIZED_QUATERNION: Ignoring transform forchild_frame_id “odom” from authority “unknown_publisher” because of aninvalid quaternion in the transform (0.0 0.0 0.983641 0.122190)2. S原创 2022-02-20 20:30:40 · 4204 阅读 · 1 评论 -
rosparam和ROS参数服务器的使用(C++ & Python)
1. Prob.在一个项目里经常会处理很多不同的参数,同时有很多参数是共用的,每个节点都分别定义的话,某一次修改容易造成不同步的问题。为了方便统一和同步,可以使用ROS的参数服务器来完成上述的事情,即通过rosparam把我们的参数列表加载到ROS参数服务器上,然后所有的ROS节点都可以读取和修改其中的参数,非常方便。2. MethodReferencerosparam和ROS参数服务:https://blog.youkuaiyun.com/u014695839/article/details/783486原创 2022-02-12 15:03:56 · 4431 阅读 · 0 评论 -
运行roscore后电脑重启
Problem&Analysis:机器人的工控机在安装了一些python package后, 发现一运行roscore 电脑就重启. 奇怪得很. 也不弹报错,直接重启. 因为机器人上的工控机很多人在使用, 每个人安装的东西都一样, 需要的环境要求也不一样, 特别是安装python的package,基本都是使用python3, 跟ROS系统所使用的python2.7有冲突, 这也是导致roscore启动失败的原因.一开始也找不到方向, 各种搜索也找不到对应的解决方法, 后来实在没办法了, 只能重装原创 2021-10-20 17:30:56 · 464 阅读 · 0 评论 -
rviz闪退[rviz-12] has died! 和解决办法
最近用Rviz出现闪退的问题,之前没有的,特别奇怪, Rviz能正常启动,也能加载各种topic并且显示,然后正常运行3-5min,就会闪退, 出现如下报错:一开始以为是内存溢出, 后来检查了内存使用, 32G才用了2.4G, 所以排除内存不够问题,然后又检查了硬盘,以为空间不够, 清空了硬盘,剩余141G,也还是一样错误,然后又去提升了CPU的性能,也不行, 综上,排除硬件问题.后来查相关报错的过程中,发现同样的报错,有各种各样的原因会导致Rviz闪退, 一个个排除,最后确定,就是写的node中,发布原创 2021-10-11 15:58:18 · 5818 阅读 · 3 评论 -
ROS运行python报错:/usr/bin/env: ‘python\r’: No such file or directory
Problem运行一个python文件遇到如下报错:/usr/bin/env: ‘python\r’: No such file or directory看了些网上的资料,大致是由于这个python文件是在windows上写的,然后我在ubuntu上run就出现这个问题,主要是换行符导致的。在windows下,用两个连续的符号进行换行: ‘\r’和’\n’ ,其中 ‘\r’为回车符,’\n’为换行符在ubuntu下,用一个符号进行换行:’\n’所以直接使用这种在windows上写的原创 2021-09-18 18:40:14 · 3705 阅读 · 2 评论 -
关于在ROS中会出现的两种ROS Time
做实验的过程中发现,ROS里面其实会计算两个ROS Time一个是仿真的时间:sim time,这个时间应该是从启动程序时才开始计算的一个是系统的时间:system time,这个应该跟系统的时间是match的这两个时间,很多人可能没有怎么了解,应该确实很多地方也需要考虑到它,系统内部会帮忙我们处理好它们的关系。同时,读取它们的函数都是同一个,ros::Time::now()如果有留意的话,会发现,有些节点的更新频率是一串很长的时间数字,有些节点的更新频率却是很多的一个时间,这就说明一个节点读原创 2021-09-18 14:55:55 · 2121 阅读 · 0 评论 -
启动gazebo失败报错[gazebo-1] process has died [pid 10999, exit code 255
启动完Gazebo后,关闭,再次启动出现如下报错:[gazebo-1] process has died [pid 10999, exit code 255, cmd /opt/ros/melodic/lib/gazebo_ros/gzserver -e ode worlds/empty.world __name:=gazebo __log:=/home/will/.ros/log/5ee74f98-0ca5-11ec-9c23-b8ca3a8092a4/gazebo-1.log].log file:原创 2021-09-03 22:16:35 · 8331 阅读 · 6 评论 -
roscore失败,提示RLException: Unable to contact my own server
robot@robot:~$ roscore... logging to /home/robot/.ros/log/67bcd434-f455-11eb-b3b6-204ef6c5f181/roslaunch-robot-22150.logChecking log directory for disk usage. This may take a while.Press Ctrl-C to interruptDone checking log file disk usage. Usage is &l原创 2021-08-25 15:40:17 · 11040 阅读 · 6 评论 -
编辑shell脚本执行ROS指令
目标是写一个.sh脚本来执行各种ROS的指令开头要以#!/bin/bash开始执行这个脚本也可以print文字,echo 'Initialization Start!',用echo来print字符串编写在terminal中执行的shell指令,分好几种①启动roslaunch / rosrun / python / rostopic / source 等等按照下面的格式,基本各种启动程序的指令都可以往里面套gnome-terminal --tab --title="launch gazebo原创 2021-08-06 12:05:21 · 3359 阅读 · 4 评论 -
ROS问题:terminate called after throwing an instance of ‘std::out_of_range‘
Problem:两个节点通信的过程中,出现如下这个错误:terminate called after throwing an instance of 'std::out_of_range' what(): vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)Aborted (core dumped)应该是内存读取溢出了,两个节点,一个是python一个是C++,python的发布topic,C+原创 2021-07-29 18:46:21 · 6972 阅读 · 0 评论 -
编译octomap的包报错:Could not find the required component ‘octomap_ros‘.
Problem在工控机上重新配导航环境时,遇到这个报错,同样是ROS Melodic系统报错如下:CMake Warning at rtabmap_ros/CMakeLists.txt:16 (find_package):By not providing "Findoctomap_ros.cmake" in CMAKE_MODULE_PATH this projecthas asked CMake to find a package configuration file provided by"原创 2021-06-11 10:58:12 · 2459 阅读 · 0 评论 -
CMake Error: Could not find a package configuration file provided by “serial“
CMakeLists.txt中添加了串口的package,如下:find_package(catkin REQUIRED COMPONENTS nav_msgs roscpp rospy serial tf std_msgs message_generationgeometry_msgspcl_conversionspcl_ros)add_message_files( FILES PoseMessage.msg encoder.msg)generate_messages(原创 2021-05-22 11:24:39 · 4335 阅读 · 0 评论 -
ROS 罗技手柄控制机器人(仿真和实体机器人)
机器人在实际使用中,经常需要通过外设来控制它完成一些简单的任务。可以使用键盘,也可以使用罗技的手柄,手柄比较方便。键盘的代码就不放了,太多了。记录一下手柄控制方法。要控制的对象是一个全向轮小车,所以会有一个y方向的横移,以及绕z轴自转。不管是holonomic还是non-holonomic的小车,就差一个y方向。Mehtod:安装手柄驱动:sudo apt-get install ros-melodic-joysudo apt-get install joystick根据实际ROS版本,选原创 2021-05-18 22:20:39 · 4377 阅读 · 0 评论 -
Ubuntu18.04 使用ROS打开外接USB摄像头
Method先装ros的packagecd ~/catkin_ws/srcgit clone https://github.com/bosch-ros-pkg/usb_cam.git usb_cam编译cd ..catkin_make -DCATKIN_WHITELIST_PACKAGES=usb_cam查看接入的USB摄像头的设备号ls /dev/video*会发现有两个编号,我这里的是台式机,没有摄像头,接入USB摄像头后,会出现两个编号,只能使用第一个打开,使用第原创 2021-05-13 19:58:37 · 5148 阅读 · 7 评论 -
ROS Navigation stack setup ERROR: Costmap2DROS transform timeout.
Problem:用move_base导航package测试一下,编译成功,然后也配置了对应的6个参数文件:costmap_common.yamlcostmap_exploration.yamlcostmap_global_laser.yamlcostmap_global_static.yamlcostmap_local.yamlplanner.yaml以上这些参数文件可能跟move_base的版本有关系,我查解决方法的时候,发现有些人的配置文件只有5个,我这里有6个,所以具体还是要根据原创 2021-05-11 16:13:51 · 4007 阅读 · 4 评论 -
Gazebo核心错误,闪退 Aborted (core dumped)
自己组合了arm和base的urdf后,准备导入model,启动gazebo做仿真,没想到一打开就闪退,但是rviz可以启动,弄了几个小时,网上也没有对应的解决办法,一个个可能的出错点排查。总结一下报错如下:log file: /home/will/.ros/log/56999eac-ad93-11eb-8ada-b8ca3a8092a4/urdf_spawner-4*.loggzclient: /build/ogre-1.9-B6QkmW/ogre-1.9-1.9.0+dfsg1/OgreMain/原创 2021-05-05 19:43:33 · 2184 阅读 · 2 评论 -
ROS读IMU数据
现在买到的imu基本把各种系统的代码都配套齐全了,不管是在Windows开发还是Linux,或者ROS,亦或是单片机,都提供了例程了,直接调用就可以了,这里简单说一下ROS怎么调用他们提供的node,常规操作:先装对应的ros serial,sudo apt-get install ros-<distro>-serial,具体看看自己ROS是什么版本的,我的是melodic,就输入:sudo apt-get install ros-melodic-serial然后imu接上电脑后,看看是那原创 2021-05-04 16:21:24 · 9976 阅读 · 23 评论 -
Ubuntu18.04 利用VSCode调试ROS---GDB调试 (C++ & Python)
其实在VS就能调试ROS,不需要单独打开系统的terminal来调试。具体操作如下:先安装VS的ROS插件,在左侧工具栏中找到拓展模块(Extensions),快捷键Ctrl+shift+X在搜索栏输入ROS,看到第一个,点开安装即可,发布者是Microsoft,会有维护。安装完后,在VS里面打开terminal,快捷键Ctrl+`然后进入自己的ROS工作空间,比如catkin_ws,然后常规操作, roscore & 和 source devel/setup.bash然原创 2021-05-03 17:07:27 · 3378 阅读 · 6 评论 -
Rviz显示理想的运动的轨迹,并对比实时的运动轨迹
ReferenceROS中rviz显示运动轨迹的常见方法:https://blog.youkuaiyun.com/u013834525/article/details/80447931?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.control&dist_request_id=&depth_1-utm_source=distribute.pc_rel原创 2021-04-27 11:54:41 · 6399 阅读 · 2 评论 -
ROS发布/订阅Float64MultiArray数组类消息(C++和Python相互发布和订阅)
再次领略了ROS系统一个很好的特性,能兼容不同语言的节点,只要规范好发布信息的类型是匹配的,就能让不同语言编写的节点互相通信。Target:想让python写的node发布数组,而让C++写的node订阅这个发布的数据。Method:1.Python发布,C++订阅1)先选择发布消息的类型,选定为Float64MultiArray2)然后是python节点的代码:#!/usr/bin/env python# encoding: utf-8# Echo client programim原创 2021-04-20 12:37:28 · 12498 阅读 · 4 评论 -
ROS编译cpp,补充缺失头文件
ROS系统编译cpp报错,如下。/home/will/catkin_ws/src/gazebo_base20/src/odometry_publisher.cpp:1:10: fatal error: ros/ros.h: No such file or directory #include <ros/ros.h> ^~~~~~~~~~~compilation terminated.gazebo_base20/CMakeFiles/odometry_publisher原创 2021-03-25 17:58:02 · 2409 阅读 · 2 评论 -
ROS运行python程序问题
用rosrunpython代码报错1:(ros27) will@will-OptiPlex-9010:~/catkin_ws/src/test_ur$ rosrun test_ur moveit_ik_demo.py [rosrun] Couldn't find executable named moveit_ik_demo.py below /home/will/catkin_ws/src/test_ur[rosrun] Found the following, but they're eith.原创 2021-03-12 15:54:11 · 2021 阅读 · 0 评论 -
spawner: error: too few arguments [controller_spawner-4] process has died [pid 19013, exit code 2, c
用moveit生成配置文件后,启动roslaunch arm4 demo_gazebo.com报错,如下:spawner: error: too few argumentsXmbTextListToTextProperty result code -2XmbTextListToTextProperty result code -2[controller_spawner-4] process has died [pid 26682, exit code 2, cmd /opt/ros/melodic/原创 2021-03-11 12:05:50 · 2879 阅读 · 1 评论 -
ROS Kinetic install problem
Couldn’t run roscore, appear the following Notes:will@will-450R5G-450R5U:~$ roscore... logging to /home/will/.ros/log/6fafdbc0-7fd7-11eb-ac79-1867b0b6abeb/roslaunch-will-450R5G-450R5U-6634.logChecking log directory for disk usage. This may take awhile.原创 2021-03-08 18:26:25 · 470 阅读 · 0 评论 -
ROS学习笔记四:Using C++ Classes in ROS
ROS学习笔记四:Using C++ Classes in ROS为了提高ROS代码的可复用性和产出,有效的使用classes就很有必要了。 总的来说,主要做两件事:在一个头文件中定义一个class 定义这个class中的所有成员函数的原型定义private和public数据成员定义class的构造函数原型写一个单独的执行程序include上述的头文件包含各个成员函数的...原创 2018-03-14 23:00:25 · 2838 阅读 · 0 评论 -
ROS学习笔记五:创建library
ROS学习笔记五:创建library很多时候都是调用系统编辑好的library或者别人做好的,自己编辑自己要用的library的时候比较少,不过了解之后,觉得还是很有用处,暂时的麻烦,可以为以后的编程提供很多便利,特别是自己项目要用到的,多几步操作,把一些有用的函数封装起来,以后调用只要加几行代码就可以了。一.创建一个library①先创建一个package存放相关文件 cs_create_pkg原创 2018-03-16 22:48:18 · 3276 阅读 · 0 评论 -
ROS学习笔记二:Defining messages
ROS学习笔记二:Defining messagesROS有14种内置的消息类型,可供调用,当然可以即可单独使用也可以混合使用,利用这些内置的消息类型就可以构建出复杂的消息类型。一.创建自定义的message以下是一个将三个内置消息类型组合成一个自定义的message例子(这三个消息类型的定义都在package std_msgs里面):1.创建message文件①先再工...原创 2018-03-12 08:46:30 · 1019 阅读 · 0 评论 -
ROS学习笔记六:action-server/action-client
ROS学习笔记六:action-server/action-client以下是最后一种通信机制action-server/action-client,尽管与service/client通信机制很像,它与service/client通信机制还是有很关键的不同点的:那就是多对多的action-server与action-client的交流机制 service/client通信机制中serv...原创 2018-03-19 12:08:07 · 9336 阅读 · 3 评论 -
ROS学习笔记三:services/clients
ROS学习笔记三:services/clients与publishers/subscribers的通信机制相比,services/clients通信机制是一种双向、一对一的可靠通信机制。 当client发送一个“请求”(request)到service处,service会反馈一个“响应”(response)给client,这时的client就需要知道service的名称才能完成这种问答形式的...原创 2018-03-13 21:52:03 · 6389 阅读 · 4 评论 -
ROS学习笔记七:parameter server
ROS学习笔记七:parameter server一.Parameter server前面学了三种主要通信机制:publishers/subscribersservices/clientsaction-servers/action-clients除了以上三种通信机制,还有第四种通信机制,那就是parameter server可以很方便的通过parameter...原创 2018-03-20 20:29:21 · 2378 阅读 · 0 评论