tag 标签: ros

相关帖子
相关博文
  • 热度 4
    2022-12-14 14:01
    1133 次阅读|
    0 个评论
    1.安装VMware Workstation Pro 2.安装Ubuntu18.04 3.设置网络:NAT模式(联网) 4.安装Vmware tools(共享文件夹和随意缩小及可以复制粘贴) (https://blog.csdn.net/qweKelliy/article/details/88784494?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163886486816780265470874%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163886486816780265470874&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~baidu_landing_v2~default-1-88784494.pc_v2_rank_blog_default&utm_term=18.04%E5%AE%89%E8%A3%85vmware+tools%E6%AD%A5%E9%AA%A4&spm=1018.2226.3001.4450) 5.安装ROS 1.设置安装源 /etc/apt/sources.list.d/ros-latest.list' 2.设置密钥 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 在更新之前,需要安装公钥,否则无法验证签名,命令如下: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654 3.更新软件列表 sudo apt update 4.安装ROS sudo apt-get install ros-melodic-desktop-full 5.安装完成之后初始化rosdep sudo apt install python-rosdep 6.初始化rosdep sudo rosdep init rosdep update 大多数情况下,做到这一步都会报错,可能会出现如下情况: ···Website may be down 或者 ···ERROR: unable to process source 错误原因是由于 raw.githubusercontent.com 被墙,程序无法下载相应的文件导致的,正常情况下我们也无法访问该网站。 问题解决: A. 下载rosdistro-master的压缩包,然后解压到主目录 cd ~ unzip rosdistro-master.zip mv rosdistro-master rosdistro 链接:https://pan.baidu.com/s/1z25LvAV1Z7dCTuzELqhOsA 提取码:75r1 B. 修改 20-default.list 文件 sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list 内容修改如下: # os-specific listings first yaml file:///home/xxx/rosdistro/rosdep/osx-homebrew.yaml osx # generic yaml file:///home/xxx/rosdistro/rosdep/base.yaml yaml file:///home/xxx/rosdistro/rosdep/python.yaml yaml file:///home/xxx/rosdistro/rosdep/ruby.yaml gbpdistro file:///home/xxx/rosdistro/releases/fuerte.yaml fuerte # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead 注意:上述 xxx 需替换为自己的用户名 C. 修改 sources_list.py 文件 sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 注释原 DEFAULT_SOURCES_LIST_URL 一行,然后在其后添加如下一行,注意:xxx替换 DEFAULT_SOURCES_LIST_URL = 'file:///home/xxx/rosdistro/rosdep/sources.list.d/20-default.list' D. 修改 rep3.py 文件 sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py 注释原 REP3_TARGETS_URL 一行,然后在其后添加如下一行,注意:xxx替换 REP3_TARGETS_URL = 'file:///home/xxx/rosdistro/releases/targets.yaml' E. 修改 __init__.py 文件 sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py 注释原 DEFAULT_INDEX_URL 一行,然后在其后添加如下一行,注意:xxx替换 DEFAULT_INDEX_URL = 'file:///home/xxx/rosdistro/index-v4.yaml' 7.重新 rosdep update 备注: rosdep update 后, sudo rosdep init ,再 rosdep update ,最后修改B 8.添加 ROS 环境变量 ~/.bashrc source ~/.bashrc 9.安装 rosinstall sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential 10.第一次启动ROS时,需要进行环境变量配置,执行如下命令 ~/.bashrc source ~/.bashrc 11.先开启三个终端,然后分别依次输入如下命令: roscore rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key 然后将鼠标聚焦到输入最后一个命令的窗口,通过键盘的上下左右键,分别控制小王八的前进,后退,左转,右转。
  • 热度 10
    2022-9-28 11:32
    1100 次阅读|
    0 个评论
    如何低成本搭建ARM+ROS的硬件载体?上文为大家介绍了实现的思路及原理,本文将为读者实际操作,展示ROS部署前的筹备工作及步骤分解。 1.方案概述 本文重点介绍低成本搭建ARM+ROS的硬件及底层实现。开发板选用HDG2L-IoT评估套件,默认配置为2G内存、8G存储,搭载可玩性极高的Ubuntu系统。 开发套件默认的Ubuntu系统大概占用3.1G空间,剩余3.2G空间,在构建docker+ROS环境时可能会报eMMC空间不足的错误,所以需要调整HDG2L-IoT的启动参数,将启动参数改为引导到TF空间中。市面上常见的树莓派部署ROS方案也是如此操作。 2.方案准备 首先,需要用到的硬件如下所示。 3.TF卡挂载Ubuntu固件修改 本小节将介绍如何实现HDG2L-IoT挂载TF卡内的文件系统,步骤如下: 1) 制作启动卡; 2) 解压目标文件系统到TF卡内; 3) 修改uboot启动参数; 3.1 制作启动卡 首先制作启动卡,格式化TF卡的操作可通过瑞萨提供的shell脚本实现,在PC端的Ubuntu开发环境下,执行以下命令来下载操作脚本。 将需要被用作启动卡的TF卡插入到PC机内,用虚拟机来操作,调整步骤如下。首先打开虚拟机的USB3.1功能,以免TF卡读取失败。 然后将TF卡导入Ubuntu虚拟机中,如下所示。 系统能识别后,执行刚才下载的usb_sd_partition.sh脚本,如下所示。 脚本执行成功后,TF卡将分为两个分区,分区1为fat32,分区2为ext4。 (注:当前新版本的Windows系统比较少支持ext4格式的TF卡,所以在Windows环境下一般只看到分区1,分区2会提示需要格式才能识别,请忽略。) 3.2 拷贝目标文件到TF中 将HDG2L-IoT配套的Ubuntu压缩包解压到ext4分区中,虚拟机内自动挂载到/media/${USER}/sdb2内。本机的解压命令如下所示。 将HDG2L-IoT配套的内核镜像拷贝到Windows下识别的TF分区中(FAT32系统允许被Windows系统识别,ext4系统不被识别),拷贝后如下所示。 3.3 修改uboot启动参数 最后需要调整HDG2L-IoT的uboot启动启动参数,引导其使用TF卡内的内核与文件系统,首先上电,在倒计时前进入uboot菜单,如下所示。 将上一步中制作好的TF卡插入HDG2L-IoT板卡的TF卡槽中,在U-Boot提示符下设定以下变量,bootargs变量用于指定文件系统的载体,在系统内,TF卡槽占用的设备名为/dev/mmcblk1p2。 然后设置从TF的分区1内获取内核镜像和内核设备树,命令如下所示。 设置完成后,通过以下命令保存uboot的环境变量,命令如下所示。 重新启动后,若TF卡正常,整体存储空间情况如下所示。 若TF卡没插入,uboot的启动会报错误信息,错误信息如下所示。 4.安装docker环境 正常启动之后,开始搭建docker环境。 4.1 安装docker软件 首先,烧录后的第一次上电的板卡需要更新内部的软件版本,命令如下所示。update更新失败注意检测网络状态和date日期。部分软件可能体积过大,需要耐心等待。 然后清除旧版本的docker软件,再重新安装docker.io。 启动docker。 使能docker开机自启动。 检查docker运行状态。 4.2 获取镜像 运行此命令可以从DockerHub上下载现成镜像。 查看本地的镜像文件命令如下所示。 4.3 创建容器 容器就是加载模板后运行的沙盒环境,具有运行时所需的可写文件层、应用程序也处于运行状态。概念上可能会与PC端常用的虚拟机混淆,虚拟机是包括内核、应用运行环境和其他系统环境的,而Docker容器就是独立运行的一个或一组应用以及他们必须的运行环境。 创建容器时,需要指定使用的镜像文件,这里使用上面用pull指令下载下来的镜像文件,创建命令如下所示。 查看容器状态,命令如下所示,每个容器都有自己的CONTAINER_ID与NAMES,供后面的命令操作使用(可使用dockerrename命令修改容器名,便于简便使用)。 4.4 启动容器 容器创建后,通过CONTAINER_ID与NAMES来操作容器,启动命令如下所示。 上文所说,容器是运行一个或一组进程,dockerps命令里的COMMAND即为容器运行的进程,当前显示bash,即进入命令交互进程。通过以下命令进入容器内部。 进入后,可以操作容器内的命令,如下所示。 通过exit命令,可退出容器,退出后容器就处于停止状态,如下所示。 通过以上操作,我们就完成了硬件与底层的搭建,为ROS运行在这套开发板上做好了准备,下一章节将为大家带来ROS的部署方法。
  • 热度 3
    2022-9-16 11:48
    2000 次阅读|
    1 个评论
    如何低成本搭建ARM+ROS的硬件载体?本文将为读者提供一个全新的技术方案。全文分概述、硬件与底层、ROS搭建三个章节,敬请订阅。 1.ROS简介 ROS是机器人操作系统(RobotOperatingSystem)的英文缩写,是用于编写机器人软件程序的一种具有高度灵活性的软件架构,其原型源自斯坦福大学的StanfordArtificialIntelligenceRobot(STAIR)和PersonalRobotics(PR)项目。 ROS是一个用于实现机器人编程和开发复杂机器人应用程序的开源软件框架,依托于Linux之类的操作系统上,所以ROS也被称为元操作系统或中间件软件框架。ROS提供了各类成熟的功能包,如:摄像头驱动、OpenCV图像处理、SLAM建图导航等。功能包中的代码可以是C++、Python、Octave等不同的编程语言编写,虽然不同模块基于不同语言编写,但仍可以被ROS组合起来一起使用。这意味着,当开发新款机器人时,开发者不需要做基础的传感器驱动、甚至不必实现某些应用,直接调用ROS自带的功能包,同时ROS是分布式架构,对于大型复杂机器人而言,可以把各个功能分别部署在不同控制板上。 2.硬件介绍 本文档使用本司的HDG2L-IoT评估套件来实现ROS应用环境,硬件产品如下所示。 硬件平台环境条件如下所示: 表2.1硬件平台资源 3.技术总结 目前实现ROS的方式主要有两种: Ubuntu系统+ROS; Ubuntu系统+docker+ROS镜像; 相对而言,使用dockers运行ROS镜像的部署方式,可以大大加快设备部署、移植工作。第二章节也将基于方案2去实现ROS,组成项目的各个部分功能如下所示:
  • 热度 3
    2021-1-18 14:16
    2600 次阅读|
    1 个评论
    作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君 前言 主题 :串口是一种设备间常用的通讯接口,rosserial将串口字符数据转发到标准ROS网络,并输出到rosout和其日志文件。本文将记录如何在ROS上使用其提供的serial包进行串口通信。 我的环境介绍 : PC:使用的是Ubuntu 16-04 ROS-Kinetic 嵌入式端:STM32F071 ROS机器人操作系统是用于创建机器人系统的功能强大的平台,其中包括开发项目所需的一切,从最简单的软件组件(称为“节点”)和数据交换协议到真正的凉亭机器人平台的仿真环境。至于ROS这个操作系统的介绍大家可以看我之前的那篇文章《 嵌入式为什么要学ROS 》 总之ROS是一个在机器人设备端比较常用的分布式处理框架,但是因为ROS的包很多功能也比较复杂,所以一般都是跑在linux系统的板卡上,像stm32一类的单片机就使用的比较少,但是如果我们想用ROS的通讯接口到我们STM32中,那我们应该怎么做呢? 使用介绍 这个时候就要提起rosserial,这个ROS提供一种嵌入式节点和运行在主控PC上的ros master通信的方式,使得在嵌入式节点上编写、运行ros节点成为可能,主要用于转接IO和各类传感器,运行底层控制算法。 要使用rosserial,显然需要分别在嵌入式板卡和主控PC上部署,当前支持的板卡有: arduino stm32等这些比较热门的嵌入式端。 但是目前关于结合STM32微控制器使用ROS机器人操作系统的信息,其实网上使用的还是很少,不过网上还是有几个比较好的的stm32结合ROS使用的代码,其中有一个stm32rc和rtt的配置,不过RTT的配置我使用之后发现有些问题,已经给RTT在github的仓库提交了问题 不过RT_Thread官网的文档中心还是做的很好的,对于使用ROSSERIAL的包在STM32还是介绍的很详细,大家有兴趣可以去看一下 https://www.rt-thread.org/document/site/tutorial/smart-car/ros-connect/ros-connect/ ROSLib实战的使用 首先stm32 ROS serial的使用分为两部分,分别为PC端ROS环境接收数据, 嵌入式端STM32进行发送ROS数据。 首先我是使用的其他人分享一个包进行开发的,使用的是makefile文件进行编译,编译器选择的是 gcc-arm-none-eabi-4_9-2015q3 程序文件如下所示: 其中Bsp包里面主要是stm32串口串口配置的文件和时间定时的程序文件: 在这里插入图片描述 这里的配置方法其实就和我们平时的用库函数配置STM32串口的方法没什么区别,只不过是配置程序放到了HardwareSerial这个类成员函数中。 Dirver包中是我进行自定义的各种电机控制和IMU等的程序包 从程序文件的名称大家应该就可以看出来,这个部分的文件也是做外设等的基本配置,数据的基本发送和接收部分。例如:这里面wheel的配置 lib目录下有两个lib库: 其中 rsolib 其实就是使用ROS的时候程序中需要的头文件,ros msg的各种类。 这些类是我们定义ROS的topic或者service节点时候发送的数据类型,以及ROS serial的串口配置等头文件都在这个包里面 stm32lib 是stm32配置时候的各种库文件,包括stm32f0xx.h、CMSIS、库文件和启动汇编文件 再下面src目录里面就放着我们的 main.cpp 这个部分是比较重要的,main函数的部分除了初始化,我们也可以定义我们需要的topic节点。 initialise(); ros::NodeHandlenh; nh.initNode() while (!nh.connected()){ //nh.loginfo( "rosisnotconnect\r\n" ); nh.spinOnce(); } sensor_msgs::ChannelFloat32VelFeedBack; ros::Publishervelfeedbackpub( "VelFb_" ,&VelFeedBack); nh.advertise(velfeedbackpub); nh.spinOnce(); float fbVel ; while (1) { if =(1000/DEBUG_RATE))//定时发送 { VelFeedBack.name= "r" ; VelFeedBack.values=fbVel; VelFeedBack.values_length=7; velfeedbackpub.publish(&VelFeedBack); } nh.spinOnce(); } 最后面是部分是 makfile 文件,其中makefile文件分了两部分,一个include头文件,一个makefile文件。 makefile.include 文件中,和正常的IDE选项一样,里面包含了芯片选择、编译选择、链接选择、以及相应的程序文件目录设置。 其中芯片我选择了STM32F072 编译选项我按照默认,也没有修改,其中交叉编译器是用的 arm-none-eabi-gxx makefile 文件中我设置了我自行定义的程序文件 此外我还下载了 arm-none-eabi-gxx 的包 编译前先用export 配置一个编译器的选项: 其中我下载好的编译器目录在 /home/lyn/M0/gcc-arm-none-eabi-4_9-2015q3 export PATH=/usr/ local /sbin:/usr/ local /bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/lyn/M0/gcc-arm-none-eabi-4_9-2015q3/bin 使用 make 命令 编译,最后会在当前目录生成一个main.bin文件,这个时候我们就可以把main.bin文件通过j-link或者st-link下载软件把程序下载到板子中去。 PC端连接 PC端安装ROS大家可以参考我之前的 ROS安装的文章 ,一般安装ROS都是安装的全功能版本(全功能含有ROSSERIAL),如果你只是安装了部分的话,那你还需要多进行安装ROS serial sudo apt-get install ros-kinetic-rosserial-python 我是使用我们最常见的USB转串口工具连接到我的电脑端口。 在这里插入图片描述 我们首先检查串口号 用命令 “ls /dev/ttyUSB*” 一定要在程序中USB的参数完全一致。 首先在一个终端开启 roscore 然后使用我们安装好的 rosserial_python 进行启动节点 rosrunrosserial_pythonserial_node.py/dev/ttyUSB0_baud=115200 当然第一次启动会进行报错,权限不够,拒绝访问,,此时我们就需要对USB的权限进行设置,使得 /dev/ttyUSB0 可以被读写 sudochmod777/dev/ttyUSB0 在启动过程中,我们就可以看到我们设置的publis的 VelFb_就初始化了。 此时我们使用 rostopic list 就可以看到相应注册好的通信点,然后再使用 rostopic echo /VelFb_ 结语 这就是我使用STM32接入ROS节点的方法,大家有什么更好的建议可以一起和我交流,如果大家对代码感兴趣,可以在 公众号后台回复我 STM32使用ROSLIB 或者 微信私我 。我把我使用的代码和编译器一个分享给感兴趣的朋友们。
  • 热度 21
    2016-5-16 11:08
    1547 次阅读|
    0 个评论
    By Toradex 秦海 随着ARM平台处理能力的日益强大,越来越多的工业智能/机器人应用在ARM平台上面实现,在这个过程中不可避免的就涉及到将机器人应用开发框架移植到ARM平台来运行,因此本文就着重示例基于 Openembedded 环境,将ROS(Robot Operating System)编译集成到嵌入式Linux中运行。 ROS 是一种为机器人应用设计的分布式处理框架,集成了大量相关库和工具,目的是为了提高机器人应用开发时代码复用率。目前ROS发布版本官方只支持Ubuntu Linux等安装,但由于在Openembedded框架下维护了meta-ros layer,使得我们可以将ROS集成到同样基于Openembedded框架的嵌入式Linux中运行。 本文所使用硬件为Toradex  Colibri T20  基于nVidia Tegra2的ARM核心板配合 Colibri 开发板 ,软件即为Toradex官方发布的基于Openembedded框架的 Yocto Project 兼容 Linux 系统。 1).  编译配置 roscore a).  下载配置基本的Openembedded 环境 详细的关于Toradex Openembeded配置说明请见 这里 ,如下下载配置Opembedded 和Toradex Linux release V2.5相关meta layer数据 --------------------- $ mkdir oe-core $ cd oe-core $ repo init -u http://git.toradex.com/toradex-bsp-platform.git -b LinuxImageV2.5 $ repo sync --------------------- b).  下载meta-ros layer --------------------- $ cd oe-core/stuff $ git clone  https://github.com/bmwcarit/meta-ros.git //默认head为ROS indigo,如需hydro请继续如下操作 //cd meta-ros git checkout v0.2 cd .. --------------------- c).  修改配置文件 ./ 生成相关配置文件 --------------------- $ cd oe-core $ . export --------------------- ./ 修改oe-core/build/conf/bblayers.conf --------------------- BASELAYERS ?= " \ ...... + ${TOPDIR}/../stuff/meta-ros \ " --------------------- ./ 修改oe-core/build/conf/local.conf文件 --------------------- MACHINE ?= "colibri-t20"        //设备配置为colibri-t20,这里也可以改为其他产品型号 ...... + IMAGE_INSTALL_append = "roslaunch"   //安装roscore --------------------- d).  编译image --------------------- bitbake -k angstrom-lxde-image --------------------- e).  部署image 编译成功后,在oe-core/build/out-glibc/deploy/colibri-t20/images目录下找到生成的image Colibri_T20_LinuxImageV2.5_xxxxxxxx.tar.bz2,然后按照这里的方法更新到Colibri T20模块上面。 f).  启动roscore 环境 ./ 配置环境变量 --------------------- export ROS_ROOT=/opt/ros/ indigo export PATH=$PATH:/opt/ros/ indigo/bin export LD_LIBRARY_PATH=/opt/ros/ indigo/lib export PYTHONPATH=/opt/ros/ indigo/lib/python2.7/site-packages export ROS_MASTER_URI=http://localhost:11311 export export ROS_HOSTNAME=localhost export CMAKE_PREFIX_PATH=/opt/ros/ indigo touch /opt/ros/ indigo/.catkin --------------------- ./ 启动roscore --------------------- roscore ---------------------   2).  编译配置 ros-world a).  重新修改oe-core/build/conf/local.conf 文件 --------------------- ...... IMAGE_INSTALL_append = "packagegroup-ros-world""   //安装roscore 以及完整的相关package --------------------- b).  编译部署 方法和上面roscore一致,由于meta-ros问题编译前请修改oe-core /stuff/meta-ros/recipes-ros/geometry-experimental/geometry-experimental.inc --------------------- SRC_URI = "063484906d1c2f1a4ee961680e43b559" SRC_URI = "011b77bc33afea927bab2707ddda585df8de5f1fc6e387081f6bf1ea12d2323b" --------------------- 第一次编译可能会遇到一些错误,请编译退出后做如下修改 ./ oe-core_v25_ros/build/out-glibc/work/armv7at2hf-vfp-angstrom-linux-gnueabi/ 目录下面 修改所有 tf2/0.5.12-r0/geometry-0.5.12/  和 tf2-xxx/0.5.12-r0/geometr-0.5.12/ 目录名均修改为geometry_experimental-0.5.12 ./ 修改oe-core_v25_ros/build/out-glibc/work/armv7at2hf-vfp-angstrom-linux-gnueabi/pluginlib/1.10.1-r0/build/CMakeFiles/plugin_tool.dir/link.txt --------------------- ……/arm-angstrom-linux-gnueabi-g++ -pthread –mfpu=vfpv3-d16 ……  //编译器添加” –pthread”参数 --------------------- c).  后续生成部署image 则和roscore 一致。   3).  总结 本文着重展示了在基于Openembedded框架的嵌入式Linux上面编译运行ROC core以及相关组件的方法,具体关于ROC的使用请参考其官方网站和网上相关资料。
相关资源