ros

ROS笔记

假如想象 提交于 2020-02-05 00:03:23
创建工作空间 $ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace 编译工作空间 $ cd ~/catkin_ws/ $ catkin_make 设置环境变量 $ source devel/setup.bash 检查环境变量 $ echo $ROS_PACKAGE_PATH 创建功能包 $ cd ~/catkin_ws/src $ catkin_creat_pkg test_pkg std_msgs rospy roscpp 编译功能包 $ cd ~/catkin_ws $ catkin_make $ source ~/catkin_ws/devel/setup.bash 例子: 发布者publisher的编成实现 $ cd ~/catkin_ws/src $ catkin_create_pkg learning_topic rospy roscpp std_msgs geometry_msgs turtlesim $ cd ~/catkin_ws/src/learning_topic/src $ vim velocity_publisher.cpp 实现一个发布者: 初始化ROS节点; 向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型; 创建消息数据;

ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)

混江龙づ霸主 提交于 2020-02-04 23:37:12
这么好的文章怎么能不转发…无改动~~ 参考 (九)ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用) 如何在rviz中如何实时显示轨迹呢? 本文分析nav_msgs/Path结构,实现在rviz中画出圆形轨迹。 1.使用参考代码画轨迹效果展示(hector_slam) google rviz中如何实时显示轨迹?会有以下重要资料。 参考资料 参考http://answers.ros.org/question/209224/show-robot-trajectory-in-rviz-real-time/ hector_slam中实现了画轨迹。 网址http://wiki.ros.org/hector_slam/Tutorials/MappingUsingLoggedData 那么先用bag数据来跑一跑。 步骤如下: (1)启动包 roslaunch hector_slam_launch tutorial . launch (2)回放bag rosbag play Team_Hector_MappingBox_RoboCup_2011_Rescue_Arena.bag --clock (3)效果 (4)查看发送的topic rostopic echo / trajectory 2.实现在rviz中画出圆形轨迹 以上的包太复杂,本文实现最简单的画轨迹功能。 2

roscore无反应

眉间皱痕 提交于 2020-02-04 15:40:35
打开环境配置文件 gedit ~/.bashrc 原因一、 如果最下面有多条source相关的命令,只需要留下一条,因为只执行最后一条。 原因二、 若之前用本机远程通过ssh登录别的主机会设置ROS_IP,需要将ROS_IP注释掉,若ROS_MASTER_URI的地址格式不是http://localhost:11311,需要修改成这个。 最终格式 关闭~/.bashrc。 重新source一下运行roscore即可。 source ~/.bashrc roscore 来源: CSDN 作者: qq_863299715 链接: https://blog.csdn.net/qq_37668436/article/details/104169031

ROS 导航——用Gmapping构建一张地图

人盡茶涼 提交于 2020-02-03 21:14:31
用Gmapping构建一张地图 Gmapping功能包介绍 使用Gmapping功能包的一些准备 /tf 雷达和机器人基座标 里程计 /scan 使用Gmmaping功能包 得到的地图 Gmapping功能包介绍 参见wiki官网 Gmapping功能包 .其中包括了Gmapping功能包订阅发布的话题,参数等。 使用Gmapping功能包的一些准备 根据官网介绍,Gmapping订阅了两个话题: /tf 和 /scan /tf tf指的是坐标变换,就是将机器人各组件的相对位置关系表示出来,对于Gmapping而言,它需要三个tf: 雷达 , 机器人基坐标 和 里程计 雷达和机器人基座标 对于 雷达 和 机器人基座标 ,我们可以有两种发布的方法。 第一种:通过urdf建立机器人模型,然后写一个launch文件将模型文件载入并发布机器人的状态信息给tf。urdf是一种机器人建模的一种方法,具体参见 urdf wiki官网 launch文件示例如下: < ? xml version="1.0" ? > <launch > < !--param name="/use_sim_time" value="true"/ - - > <arg name="model" /> <!-- 加载机器人模型参数 --> <param name="robot_description" command="$

Ubuntu使用火狐浏览器下载安装AdobeFlashPlayer

南楼画角 提交于 2020-02-03 04:16:38
装ros的时候sudo apt-get update命令应该是被占用所以装不了flash,下载时选了for Ubuntu的选项结果打不开。参考了 https://blog.csdn.net/Youga123/article/details/81672693 和 https://blog.csdn.net/NarutoInspire/article/details/82216249 成功了,开心刷B站。 整理一下 在AdobeFlashPlayer下载时选择 tar.gz for LInux 选项,然后下载。 下载完成后,在火狐浏览器的下载项找到下载的flash_player_npapi_linux.x86_64.tar.gz文件,移动到“下载”文件夹。 Ctrl+Alt+t打开终端。 进入下载文件夹 cd ~/下载 解压 tar -zxvf flash_player_npapi_linux.x86_64.tar.gz 复制flash插件到plugins文件夹 sudo cp libflashplayer.so /usr/lib/mozilla/plugins 重启浏览器 即可。 如果不行,再打开终端输入如下命令。 进入plugins文件夹 cd /usr/lib/mozilla/plugins 查看文件夹内文件权限 ls -l -rw-r--r-- (644)

ROS中的Navigation

泄露秘密 提交于 2020-02-03 01:43:33
ROS中的Navigation 1、Navigation Stack的核心就是move_base 2、move_base的三个功能:全局规划(静态)、局部规划(动态)、处理异常行为。有三个接口: 3、costmap(代价地图,是move_base的一个插件,并不是node):用于路径规划,两张(global_costmap,local_costmap)、2维、多层。 4、MapSever(提供地图)和AMCL(定位) 1、Navigation Stack的核心就是move_base 2、move_base的三个功能:全局规划(静态)、局部规划(动态)、处理异常行为。有三个接口: 3、costmap(代价地图,是move_base的一个插件,并不是node):用于路径规划,两张(global_costmap,local_costmap)、2维、多层。 4、MapSever(提供地图)和AMCL(定位) 来源: CSDN 作者: r = a (1-sinθ) 链接: https://blog.csdn.net/weixin_42361804/article/details/104145765

解读ROS的navigation Stack

♀尐吖头ヾ 提交于 2020-02-02 00:12:33
navigation Stack的总体架构 一、Map servicer(提供地图) ·是一个节点,package ·相关操作 二、AMCL ·纯里程计定位和AMCL定位 三、move_base: ·全局规划(静态)、局部规划(动态)、处理异常行为 四、costmap代价地图 ·与SLAM中的map不一样,map是一个topic,costmap在原来map的基础上加工 ·costmap就有两张:全局和局部 ·costmap的架构: ·导航实操图 来源: CSDN 作者: 又想学又想玩 链接: https://blog.csdn.net/weixin_43404836/article/details/104127449

【实战+源码】基于RGB-D(深度视觉)的具有机械臂抓取功能的自主规划移动服务机器人的设计与实现(一)——准备工作

拈花ヽ惹草 提交于 2020-02-01 05:24:36
目录 一,实物or仿真 1,实物或仿真的利弊 2,从哪些角度去考虑是选择实物还是仿真 二,环境准备 1,首推ROS 2,其他环境 三,理论学习 四,实物搭建 一,实物or仿真 我想这个问题是在开发之前最容易想清楚的,所以我先说! 1,实物或仿真的利弊 对于做出实物,要比仿真耗费更多的时间,精力,物力,财力。 接触过硬件的朋友都会有体会,首先你会考虑性能价格等方面的因素去选择一款合适的硬件,然后你需要花时间去学会使用调试它,最头疼的是你调试的过程中会遇到很多只有你才会遇到的问题,像硬件烧坏,电气连接不稳定对初学者来说是最常见的问题,还有可能你用着用着发现不合适了,对不起,需要把上述过程再过一遍,这都需要时间和精力。关于物力,财力问题,我就举个例子来说,最早诞生于斯坦福大学PR1机器人,现在迭代到PR2,价值100多万,这不是一般科研单位能用的起的,说一个入门级的科研平台Turtlebot,二代标配也是几万块,就算是自己搭建,激光雷达,深度相机,机械臂这些都要上千,移动底盘可以自己搭,电机,里程计,电源,驱动这些自己可都做不出来,我目前了解到一款较便宜的桌面级的机械臂turtlebot-arm(PhantomX-Arm)也要几千,当然也可以自己画图买控制驱动舵机完完全全自己做,如果不是个团队或者懂点机械也不建议弄,结构不好,精度不够,参数不明确也没法用。 那也不是一无是处

ROS学习篇第(四)篇:话题编程、服务编程、参数编程详解

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-31 04:56:58
文章目录 一、话题编程 代码理解 发布者:talker 订阅者:listener 简单测试 二、服务编程 代码理解 service client 简单测试 三、参数编程 代码理解 简单测试 一、话题编程 代码理解 发布者:talker /* * 发布chatter话题,消息类型String */ # include <sstream> # include "ros/ros.h" # include "std_msgs/String.h" using namespace ros ; int main ( int argc , char * * argv ) { init ( argc , argv , "talker" ) ; //节点初始化,起个名字 NodeHandle n ; //节点句柄 Publisher chatter_pub = n . advertise < std_msgs :: String > ( "chatter" , 100 ) ; //创建一个Publisher,发布名为chatter的topic,消息类型为std_msgs::String Rate loop_rate ( 10 ) ; // 设置循环的频率 /* 向 Topic: chatter 发送消息, 发送频率为10Hz(1秒发10次);消息池最大容量100。 */ /*

ROS系统节点间的内存共享

痞子三分冷 提交于 2020-01-31 01:08:38
ROS系统节点间的内存共享 为什么要用内存共享? 在C++中怎么共享内存? 写进程 读进程 将上述代码移植进ROS 创建writeshmInRos.cpp 创建readshmInRos.cpp 为什么要用内存共享? 答案是ROS提供的服务或者话题都是通过网络来实现的。照顾到ROS节点可能架设在不同的硬件上这一点,这样做更具普遍性,但对于在同一台设备的两个节点间传输数据是非常不友好的。因为其既没必要性又浪费大量资源,且效率低下,容易造成网络堵塞,延时严重。 那么怎么改善最好呢,自然是进程间的内存共享。我们直接让两个节点共享一片物理内存,在里面做一个队列数据结构,一个往里面写,一个去里面读。 下面我们就来实现这一功能。跟上篇文章一样,我们先实现纯净的Linux C++版本,然后再把代码移植到ROS的节点中。 在C++中怎么共享内存? 实现Linux进程间的内存共享,主要参考 这篇文章 。 写进程 “写”进程,流程如下: 获得key, ftok() 使用key来创建一个共享内存 shmget() 映射共享内存(得到虚拟地址), shmat() 使用共享内存, 往共享内存中写入数据 解除映射 shmdt() 如果共享内存不再使用,可以使用shmctl()销毁共享内存 代码如下: # include <stdio.h> # include <unistd.h> # include