ros

【转载】2.ROS系统整体架构

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 14:07:37
由于 ROS 系统的组织架构比较复杂,简单从一个方面来说明很难说清楚。按照 ROS 官方的说法,我们可以从 3 个方面来理解 ROS 系统整体架构,这 3 个方面分别是文件系统级、计算图级、开源社区级。 1. 从文件系统级理解 ROS 架构 如果你是刚刚接手 ROS 方面的开发或项目,你肯定会觉得 ROS 中的各种概念非常奇怪,但是当你对 ROS 的使用熟练之后,你就觉得这些概念很好理解了。与其他操作系统相似,一个 ROS 程序的不同组件要被放在不同的文件夹下,这些文件夹是根据不同的功能来对文件进行组织的,如图 3 。 (图 3 )文件系统级理解 ROS 架构 ( 1 )工作空间 工作空间是一个包含功能包、可编辑源文件和编译包的文件夹,当你想同时编译不同的功能包时非常有用,并且可以保存本地开发包。当然,用户可以根据自己的需要创建多个工作空间,在每个工作空间中开发不同用途的功能包。不过作为学习,我们先以一个工作空间为例。如图 3 ,我们创建了一个名为 catkin_ws 的工作空间,该工作空间下会有 3 个文件夹: src 、 build 、 devel 。 src 源文件空间 :这个文件夹放置各个功能包和一个用于这些功能包的 CMake 配置文件 CMakeLists.txt 。这里做一下说明,由于 ROS 中的源码采用 catkin 工具进行编译,而 catkin 工具又是基于

Ubuntu中安装ROS提示无法定位软件包

烈酒焚心 提交于 2019-12-04 12:20:21
今天在Ubuntu18.04.1系统中配置ROS的时候一直提示 E:无法定位软件包 ,后来发现是ROS的版本不对应导致的,每个不同的ubuntu系统对应着不同的ROS版本,如果装错了就会出现上述问题,在Ubuntu18.04.1环境下可以安装的是melodic版本的,安装教程可以参考官网安装教程,ROS有Melodic、Lunar、Kinetic不同的种类对应着不同的ubuntu版本, Melodic 主要对应:Ubuntu Artful (17.10), Bionic (18.04 LTS) 以及Debian Stretch Kinetic 主要对应:Ubuntu Wily (15.10) and Ubuntu Xenial (16.04 LTS), 在安装的过程中要根据自己的ubuntu系统版本选择对应的ROS类型进行安装,具体的ROS类型可以在官网分支类型介绍上查看。 我的安装经历 设置软件源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' 设置秘钥(不用担心,ROS是开源的,密钥直接下载就好了,不用买) sudo apt-key adv --keyserver hkp:/

Ubuntu16.04安装ROS 过程中中显示无法定位软件解决办法

痞子三分冷 提交于 2019-12-04 11:50:06
花了我一天时间,现在才找到我的问题解决办法,虽然不能解决所有人的问题,但可以拿来一试。 http://wiki.ros.org/ShadowRepository这个官方网址有基础的配置,我就是在这里没有仔细检查。一切都以为按着机器的默认配置就可以了,所以无法正常安装。 在源那里要添加两个网址,为方便网友使用,图下以粘贴,直接将这两个网址添加进去,就可以解决无法定位软件的问题了,相关的软件更新也就不会报错误了。 我的问题就解决啦,也能正常安装了。开始学习slam 啦! 添加网址: #deb http://packages.ros.org/ros/ubuntu xenial main deb http://packages.ros.org/ros-shadow-fixed/ubuntu xenial main 来源: CSDN 作者: Zr要努力 链接: https://blog.csdn.net/CoralZr/article/details/80283619

解决方案E: Unable to locate package ros-kinetic-rgbd-launch

对着背影说爱祢 提交于 2019-12-04 08:21:59
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116    sudo apt-get update 来源: https://www.cnblogs.com/zxzmnh/p/11848180.html

How would you publish a message in ROS of a vector of structs?

天大地大妈咪最大 提交于 2019-12-04 05:22:47
I want to publish a vector of unknown length of structs that contain two integers and two strings. Is there a publisher and subscriber in ROS that can do this? If not, I've been looking at the tutorial of how to create custom messages and I figure I can make one .msg file containing: int32 upperLeft int32 lowerRight string color string cameraID and another .msg file containing an array of the previous messages. But the tutorial does not give an example of how to use arrays, so I do not know what to put in the second .msg file. Furthermore, I am not sure how to even use this custom message in a

ROS package not found after catkin_make

六月ゝ 毕业季﹏ 提交于 2019-12-04 03:01:10
I created a ROS workspace following the Wiki page from ROS. I also created a package using catkin_create_pkg under the workspace I just created. Then, following the steps in ROS Wiki to build the package using catkin_make , after the package is built, I insert the command rospack find packagename , and my package is not found anymore. Can anyone help me on this? alextoind Have you followed this basic tutorial ? You have to create the package in your workspace and have set properly your Bash file (in your home directory). To permanently set your system, add these lines # ROS settings source

HDL_Graph_slam骨头记(2)

删除回忆录丶 提交于 2019-12-03 23:38:49
#include <memory> #include <iostream> #include <ros/ros.h> #include <ros/time.h> #include <pcl_ros/point_cloud.h> #include <std_msgs/Time.h> #include <sensor_msgs/PointCloud2.h> #include <hdl_graph_slam/FloorCoeffs.h> #include <nodelet/nodelet.h> #include <pluginlib/class_list_macros.h> #include <pcl/common/transforms.h> #include <pcl/features/normal_3d.h> #include <pcl/search/impl/search.hpp> #include <pcl/filters/impl/plane_clipper3D.hpp> #include <pcl/filters/extract_indices.h> #include <pcl/sample_consensus/ransac.h> #include <pcl/sample_consensus/sac_model_plane.h> namespace hdl_graph

HDL_Graph_slam骨头记(3)

假如想象 提交于 2019-12-03 23:38:13
#include <memory> #include <iostream> #include <ros/ros.h> #include <ros/time.h> #include <ros/duration.h> #include <pcl_ros/point_cloud.h> #include <tf_conversions/tf_eigen.h> #include <tf/transform_broadcaster.h> #include <std_msgs/Time.h> #include <nav_msgs/Odometry.h> #include <sensor_msgs/PointCloud2.h> #include <nodelet/nodelet.h> #include <pluginlib/class_list_macros.h> #include <pcl/filters/voxel_grid.h> #include <pcl/filters/passthrough.h> #include <pcl/filters/approximate_voxel_grid.h> #include <hdl_graph_slam/ros_utils.hpp> #include <hdl_graph_slam/registrations.hpp> namespace hdl

Kinect2通过ROS标定

落爺英雄遲暮 提交于 2019-12-03 11:41:37
搞了将近半个月的驱动,终于把该弄的驱动问题全都搞定了 目前libfreenect2,iai-kinect2,ORB_SLAM2都能正常的跑起来,更进一步的问题来了,如何使用我们亲爱的kinect v2去完成我们的orb_slam2呢?让我们来慢慢研究研究 https://blog.csdn.net/wangshuailpp/article/details/75299865 首先肯定是先给相机做标定 https://github.com/code-iai/iai_kinect2/tree/master/kinect2_calibration ! 在实验室里面找到一块6x8x0.02的标定板 注意,6,8对应的是黑白格相邻的边的数量,我拿到的板子实际上是横着7个格子,竖着9个格子的,但是还是6x8x0.02。0.02是格子宽度 空格/s截屏 我这里对应执行rosrun kinect2_calibration kinect2_calibration record color circle6x8x0.02 以上是注意事项,翻译一下就是: 1.打印完标定棋盘后贴在一个平板上面,通过尺子确定一下标定板上黑白格的间距确实为2/3cm 2.搞两个三脚架,一个固定kinect2,一个固定固定标定板(然而根本没有这样的条件),拍照时一定要稳 3.检测到的时候会有彩色线覆盖在标定板上,然后按空格拍照 4

ROS安装过程中的常见且难缠的问题

不羁岁月 提交于 2019-12-03 11:31:54
关于安装ROS这件事,我想我应该算是“比较”有发言权的了。先是在win7系统安装虚拟机VM,在虚拟机上安装了一遍ros,踩了一遍坑。然后是在直接在本地安装ubuntu16.04,重复了一遍这个经历。总结如下: 上一篇随笔写了当时重装系统之前转移整理的一些解决方法和操作步骤,个人觉得还是很有用的。 整个安装过程中其实前面的出问题直接百度,CSDN和博客园上的回答基本都足以解决,且相对比较简单。个人认为最难解决且最为玄学的就是 sudo rosdep init rosdep update 这两条命令的发病率极高,且极难解决,现总结如下: 1、sudo rosdep init 报错“....website may be down” 。这个很常见,解决方法最直接的有,把被人现有的已经安装好ros的文件移植到相应的文件夹下就好了。/etc/ros/rosdep.list/20-....这个路径下的文件,如果init一次都没有成功的话,可以将整个ros文件拷贝到/etc下,不过记得修改目录的使用权限。如果中途成功,然而包读后按照别人的操作删除了这个“20-....”文件的话,直接复制对应的文件粘贴到对应的文件下就好了。 (其实这一步的命令就是访问一个网站下载对应的好几个网址保存成一个源文件,下一步的时候,再按照这个指定的路径去下载相应的包进行操作) 2、rosdep update