1.最强干货|ROS与RPLIDAR结合使用说明及问题汇总
2.å¦ä½ç¼årosçpythonç¨åº
3.baxter realsense435i easy_hand 手眼标定
4.ROS学习笔记@ROS安装
5.1.5 ROS2体系框架万字干货来啦,快来码住
6.单目USB摄像和Intel Realsense D435i 头+ Apriltag_ros配置和实现对相机姿态的估计
最强干货|ROS与RPLIDAR结合使用说明及问题汇总
ROS作为机器人软件平台,提供类似操作系统功能,对于机器人行走研究至关重要。Llidar作为机器人定位导航的核心传感器,在自主行走、图像直方图源码定位导航方面起到关键作用。结合使用,使机器人自主定位导航效果更优。
RPLIDAR产品简介:SLAMTEC思岚科技自主研发激光雷达,有A1和A2两款成熟商业产品。A1测距范围0.2~6米,每秒2K个点,扫描频率5~hz可调;A2测距范围0.~8米,每秒4K个点,扫描频率5~ hz可调。官方提供SDK和开发指导文档。
具体操作流程:设备管理器找到串口,打开frame_grabe,选择对应端口查看,进入frame_grabber界面。
RPLIDAR的ROS包rplidar_ros:面向全球ROS开发者推出,价格低廉,推动激光雷达在ROS中的应用,促进服务机器人移动导航、避障技术发展和人才储备。建立通用通讯框架,让开发者遵循通讯协议,关注数据接口,完成模块功能。
rplidar_ros wiki:包含产品功能、接口、参数说明和使用流程、支持版本信息。
rplidar_ros github:包含源码、源码形式值版本管理、开发者问题讨论。
消息机制:/scan话题、stop_motor和start_motor服务。/scan用于发送雷达数据消息,消息格式为sensor_msgs/LaserScan,避障或SLAM功能模块调用。stop_motor和start_motor用于客户端调用服务器关闭和启动雷达。
坐标系说明:rplidar顺时针旋转,SDK左手系数据转化为右手坐标系输出。
启动说明:查看端口权限,执行相应脚本赋予固定权限,启动节点,显示雷达数据。
搭建机器人系统:关注topic/service和TF帧协调,通过模型、静态变换、TF查看TF树。
利用RPLIDAR建图:开源2D激光雷达SLAM ROS包有gmapping、Hector、karto、cartographer等。构建效果取决于算法实现,参数设置和内部代码。
问题汇总:树莓派等系统无法启动检查供电、设置端口权限、原始数据输出形式、ntenstity数据无效、固定角度需求添加滤波节点、检查端口、tf_tree和rqt_graph、发送问题至支持邮箱。
å¦ä½ç¼årosçpythonç¨åº
ROS Indigo beginner_Tutorials- ç¼å ROS è¯é¢çç Hello World ç¨åºï¼Pythonçï¼æ使ç¨çèææºè½¯ä»¶ï¼VMware Workstation
使ç¨çUbuntuç³»ç»ï¼Ubuntu ..4 LTS
ROS çæ¬ï¼ROS Indigo
1. åè¨ ï¼
Hello world ç¨åºï¼å¨æ们ç¼ç¨çï¼ä»£è¡¨å¦ä¹ æç§è¯è¨ç¼åç第ä¸ä¸ªç¨åºãå¯¹äº ROS æºå¨äººæä½ç³»ç»æ¥è¯´ï¼è¿ä¸ª Hello World ç¨åºå°±æ¯ ï¼ åä¸ä¸ªç®åçæ¶æ¯åå¸å¨(åé) å 订é å¨(æ¥æ¶)ã
2. åå¤å·¥ä½ ï¼
C++ çç¨åºé½ä¼åæ¾å¨æ¯ä¸ªç¨åºå ç src æ件夹éã Python ä¸åï¼Python ç¨åºé½åæ¾å¨ scripts æ件夹ä¸ï¼ åæ£ææé½æ¯ æºæ件 å ã
Step 1 . æ以ï¼å å¨ beginner_tutorials 软件å ä¸å建ä¸ä¸ª scripts æ件夹ï¼
$ roscd beginner_tutorials$ mkdir scripts$ cd scripts
3. ç¼åæ¶æ¯åå¸å¨èç¹ç¨åºï¼
å¦æä½ æå¾å»åçè¯ï¼ä½ å¯ä»¥ä½¿ç¨ wget å½ä»¤ï¼ å¨ github ä¸è·åä¸ä¸ª talker.py æºä»£ç ãå¦ä½è·åå¢ ?
Step 2 . å¼ä¸ä¸ªç»ç«¯ï¼è¾å ¥ä¸é¢çå½ä»¤å°±å¯ä»¥è·å talker.py ï¼
$ wget
-devel/rospy_tutorials/_talker_listener/talker.py$ ls
talker.py
ä½æ¯æå»ºè®®ä½ äº²èªå¨æï¼åä¸åï¼æå¨å建ä¸ä¸ª talker.py æä»¶å¨ /scripys æ件夹éï¼
$ roscd beginner_tutorials/scripts$ gedit talker.py
å°è¿ä¸é¢é¾æ¥éç代ç æå¨è¾å ¥å° talker.py æ件ä¸ãï¼æå°±ä¸å°ä»£ç è´´ä¸æ¥äºï¼
ä¸é¢ææ¥è®²è§£ä¸ä¸ä»£ç ï¼
Step 3 . æåä¸æ¥ï¼ç»è¿ä¸ª talker.py æ件å ä¸å¯æ§è¡æéï¼
$ chmod +x talker.py1
è¿æ ·ï¼ä¸ä¸ªåå¸å¨å°±ç¼åå®äºãæ们ä¸è¦æ¥çå»è¿è¡å®ï¼ç°å¨æ们ç¼åä¸ä¸ªè®¢é å¨ï¼æ¥æ¥æ¶è¿ä¸ªåå¸å¨åå¸çè¯é¢ï¼
4. ç¼åæ¶æ¯è®¢é å¨èç¹ç¨åºï¼
Step 4 . ååå¸å¨ä¸æ ·ï¼æ们使ç¨wgetå½ä»¤è·å订é å¨çæºä»£ç listener.pyï¼
$ roscd beginner_tutorials/scripts/$ wget
ials/indigo-devel/rospy_tutorials/_talker_listener/listener.py$ ls
listener.py talker.py
ä½æ¯ï¼æè¿æ¯å»ºè®®ä½ èªå·±å¨æåä¸ä¸ã
好å§ï¼ä¸é¢æ们å¼å§è®²è§£ listener.py éé¢ç代ç ï¼è¿ä¸ªlistener.pyç¨åºç代ç ç®åï¼
Step 5 . æåä¸è¦å¿äºç»è¿ä¸ªlistener.py å å¯æ§è¡æéï¼
$ chmod +x listener.py1
5. è¿è¡ ï¼
对äºpython æ¥è¯´ï¼æ们ä¸éè¦ä½¿ç¨ catkin_make å½ä»¤å¯¹ ~/catkin_ws å·¥ä½ç©ºé´è¿è¡ç¼è¯ãå 为pythonæ件æ¬èº«å°±æ¯å¯æ§è¡æ件ï¼åææ¯æ们ç»å®æ·»å å¯æ§è¡æéï¼ã
OKï¼åå¸å¨ å 订é å¨ é½å建å®äºãä¸é¢æ们è¿è¡å®ä»¬ï¼ççææï¼
Step 6 . æ°æå¼ä¸ä¸ªç»ç«¯ï¼å æ§è¡ roscore å½ä»¤ï¼
$ roscore1
Step 7 . æ°æå¼ä¸ä¸ªç»ç«¯ï¼å¯å¨ åå¸å¨ ï¼
$ rosrun beginner_tutorials talker.py 1
Step 8 . æ°æå¼ä¸ä¸ªç»ç«¯ï¼å¯å¨ 订é å¨ ï¼
$ rosrun beginner_tutorials listener.py 1
è¿è¡ææï¼
Step 9 . æ们æ¥ä½¿ç¨ rostopic list ï¼ççå½åçè¯é¢æåªäºï¼
$ rostopic list
/chatter
/rosout
/rosout_agg
å ¶ä¸ /chatter å°±æ¯æ们å¨åå¸å¨éé¢åå¸ç ROSè¯é¢ã
6. æ©å±ï¼ç¼åä¸ä¸ªå¯å¨èæ¬æ件 ï¼
è¿è®°å¾ä¸ä¸èï¼æ们讲çROSçå¯å¨èæ¬æ件å§ï¼ä¸é¢æ们æ¥ç¼åä¸ä¸ªlaunchæ件ï¼æ¥å° talker.py ålistener.py æ件çå¯å¨å·¥ä½äº¤ä¸ªè¿ä¸ªlaunchæ件æ¥åï¼
Step . æ¥å° beginner_tutorialsç¨åºå ç /launch è·¯å¾ä¸ï¼æ°å»ºä¸ä¸ª hello_world_topic.launch æ件ï¼
$ roscd beginner_tutorials/launch$ gedit hello_world_topic.launch #使ç¨ä½ èªå·±å欢çææ¬ç¼è¾å¨
Step . è¾å ¥ä¸é¢ç代ç ï¼
<launch>
<node pkg="beginner_tutorials" name="talker" type="talker.py" />
<node pkg="beginner_tutorials" name="listener" type="listener.py" /></launch>
Step . ç°å¨ï¼å°ä¹åæå¼çç»ç«¯é½å ³éï¼æ们å¯å¨è¿ä¸ªèæ¬ï¼ ï¼å¼ä¸ä¸ªç»ç«¯ ï¼ Ctrl+Alt+Tï¼
$ roslaunch beginner_tutorials hello_world_topic.launch1
è¿è¡ç»æï¼
ä¸é¢æªå¾çè¾åºæ¾ç¤ºï¼ talker.py å listener.py èæ¬è¿è¡æåãä½æ¯å¹¶æ²¡æåºç°å·å±çç°è±¡ãè¿æ¯ä¸ºä»ä¹ï¼ 为äºè¯æè¿ä¸ªèæ¬ç¨åºççæåçè¿è¡äºï¼æ们æ¥è¯ä¸è¯ï¼
Step . éæ°å¼ä¸ä¸ªç»ç«¯ï¼è¾å ¥ä¸é¢çå½ä»¤ï¼
$ rosrun list$ rostopic list$ rostopic echo /chatter
Step . ç°å¨ Ctrl+C ç»æçå¬ /chatter è¯é¢ãä½¿ç¨ rqt_graph 对å½åå¯å¨çèç¹å¯è§åï¼
$ rqt_graph1
è¿äºè¶³ä»¥è¯´æï¼hello_world_topic.launch å¯å¨èæ¬æ件ï¼å¯å¨æåã
æ»ç»ï¼ åå¸å¨ å 订é å¨ æ¯å¾ç®åç, å°±æ¯ç®åçåå¸ä¸ä¸ª èªå®ä¹çè¯é¢ã
æä¹å使ç¨è¯´è¿ï¼èç¹ä¹é´é讯çæ¹å¼æä¸¤ç§ ï¼ è¯é¢(rostopic) å æå¡(rosservice)
æ以ï¼æ¥ä¸æ¥ï¼æ们ä¼è®²ï¼ä½¿ç¨ROSæå¡æ¥å®æROSç Hello World ç¨åºçä¾åãä½æ¯å¨è¿ä¹åï¼æ们éè¦å¦ä¸å¦ï¼å¦ä½å建èªå®ä¹çROSæ¶æ¯åROSæå¡ï¼ä»¥ä¾¿ ROS æå¡çç Hello World ç¨åºçç¼åã
æ以ä¸ä¸è®²ï¼æ们æ¥å¦ä¹ ï¼å¦ä½å建èªå®ä¹çROSæ¶æ¯åROSæå¡ã
baxter realsensei easy_hand 手眼标定
在 Ubuntu . ROS melodic 环境下配置安装 Baxter realsensei easy_hand 手眼标定涉及以下步骤:
首先,安装 realsenseSDK2.0 和 ROS Wrapper for Intel RealSense。网站源码被偷选择二进制安装或源码安装,根据个人需求进行。
接着,安装 easy-handeye 工具包,包括 aruco_ros 和 visp 的配置。确保网络连接稳定,以避免安装过程中的错误。
对于 rosdep 的安装问题,需执行 rosdep update 或在遇到错误时,重置 rosdep 环境。如果安装 transforms3d 时出现问题,直接安装此库以解决问题。
完成 rosdep 安装后,使用 catkin_make 命令构建项目。
进行 Baxter 手眼标定时,准备 ArUco marker,注意选择合适的 Dictionary、Marker ID 和 Marker size,并打印标定板。在 easy_handeye 文件夹内,创建并配置 baxter_realsense_calibration.launch 文件。
运行 baxter_realsense_calibration.launch 文件时,可能遇到 try passing the option "--force-discover" 错误,可尝试执行 sudo rm ~/.config/ros.org/rqt_gui.ini 并重新安装 OpenCV 来解决。
执行上述步骤后,即可完成 Baxter realsensei easy_hand 手眼标定,并成功发布 TF。参考相关文章和教程,以确保配置和操作的准确性。
ROS学习笔记@ROS安装
安装ROS的步骤如下:
首先,检查CMake版本是否已安装,若有新版本的Cmake,可稍后再安装。若未安装,wp菜谱源码则在安装ROS后安装所需版本的Cmake。
接着,确认Ubuntu安装的ROS版本。对于Ubuntu .,对应的是RS Melodic版本,需避免误安装其他版本。参考ROS官网查看其他对应版本。
安装步骤如下:
在安装前,确保Ubuntu软件和更新源已检查并更新。推荐更换为国内源以提高速度,例如阿里云、清华或中科大。
添加ROS软件源,使用终端输入相应命令。
设置ROS安装密钥,使用apt-key命令,同时检查软件包密钥。
更新Ubuntu软件源,使用终端输入命令。
安装ROS桌面完整版,输入终端命令,安装包括ROS、rqt、rviz和机器人通用库在内的内容。选择桌面安装或ROS-Base安装。
为安装特定ROS软件包,替换下划线为软件包名称的破折号,并使用命令查找可用包。
设置ROS环境变量,使用终端命令。若要自动添加到当前bash会话,可输入相应命令。对于zsh用户,需运行不同命令。小乔源码
安装ROS工具,使用命令执行。
在使用ROS工具前,初始化rosdep,使用终端命令。若遇到从国外网站raw.githubusercontent.com拉取信息导致错误,可修改/etc/hosts和/etc/resolv.conf文件。
更新rosdep,使用终端命令。遇到更新超时错误时,可尝试多次执行或本地更新以解决。
运行小海龟和rviz检查安装情况,使用roscore启动ROS核心,然后运行turtlesim_node和turtle_teleop_key控制小海龟,最后启动rviz检查高级功能。
至此,Ubuntu .的ROS安装过程结束。源码安装内容将在后续研究。
1.5 ROS2体系框架万字干货来啦,快来码住
1.5 ROS2体系框架详解
深入理解ROS2框架,对于学习和开发至关重要。ROS2不仅涉及文件系统与核心模块,还有强大的技术支持和广泛应用领域。让我们从微观和宏观视角探讨。微观视角
ROS2的文件系统由三层结构组成,主要针对开发者,主要关注的是功能包为核心的硬盘目录和文件组织,特别是应用层,开发者通过编写特定功能包构建机器人应用。宏观视角
技术支撑:得益于ROS2社区,涵盖了包文档、问答、论坛、包索引和问题跟踪等多种支持机制。
应用方向:ROS2在导航、机械臂、自动驾驶等领域展现出广泛的应用,如Nav2项目、OpenCV、MoveIt等。
具体操作
创建和编译功能包:使用colcon指令进行操作,如`colcon build`和`colcon build --cmake-args`。
通信模块:涉及机器人控制、传感器数据传输和人机交互等,是开发核心。
功能包应用:包括二进制安装、源码安装和自定义实现。
工具与资源
命令行工具和rqt图形化界面:方便调试和开发效率提升。
launch文件:批量启动节点的常用方式。
TF坐标变换和rviz2可视化:辅助定位和数据展示。
单目USB摄像和Intel Realsense Di 头+ Apriltag_ros配置和实现对相机姿态的估计
配置平台:ROS版本:noetic/melodic,Ubuntu:.LTS/.LTS
一:AprilTag_ros的配置
1.1 usb摄像头的安装和使用
1.1.1下载源码
1.1.2编译工作空间
1.1.3添加usb_cam属性文件
1.1.4编译usb_cam源码
回到工作空间的src文件中,再去usb_cam中进行编译
5.测试USB摄像头
1)运行ROS
回到usb_cam的launch文件夹中,运行usb_cam的功能包
1.2 AprilTag_ros包的安装
安装依赖库apriltag
编译依赖库apriltag
进入 apriltag 文件夹中,然后新建文件夹build
安装AprilTag_ros包
将源码拷贝到你的工作空间中的src工作目录下
回到工作空间进行编译
1.3 单目摄像机的标定
摄像机标定是通过寻找对象在图像与现实世界的转换数学关系,找出其定量的联系,从而实现从图像中测量出现实中实际数据的目的,基于此才能实现后面的位姿检测。
1.3.1安装标定功能包
1.3.2打开摄像头进行标定
第二条命令参数说明:size:棋盘内交叉点的个数,行*列square:一个格子的边长,单位是mimage:订阅摄像头发布的图像话题(ROS topic)camera:寻找相应的设备相机名(现实情况应该是/dev,仿真的话,不清楚)
摄像机的校准是以一个由黑白方块组成的棋盘为基准进行的,如图8-8所示。从下面的地址下载8x6国际象棋棋盘,并打印出来后将其贴到一个平坦的纸箱。有时也会打印成超过1米的棋盘,但这里用的是A4纸。作为参考,8x6棋盘横向有9个方块,所以有8个交叉点,而竖向有7个方块,有6个交叉点,所以它被称为8x6棋盘。
/AprilRobotic... Tag Size Definition 部分可以看到并排的6个二维码,下面的字符串(如:“Tagh” 和 “TagCircleh7”)就是二维码类型,直接替换即可。其他参数使用默认值即可。
2.配置 tags.yaml
这个文件只有两个标签可以编写。
这里面写要使用多少个二维码,apriltag_ros 允许一张中出现多个二维码,但一定要明确每个二维码类型,如果想要添加的话这样写就可以,但记得两个标签都要添加:
standalone_tags解释:
id:你给每个二维码的编号,可以从任意数字开始,只要你自己能区分哪个号是哪个二维码就好;
size:二维码的长度。这个值是需要手动测量出来的,不同类型的二维码测量方式不同,具体可以看他的链接 github.com/AprilRobotic... Tag Size Definition 部分,红色箭头就是你需要手动侧脸的二维码长度,单位是米,然后填写到这里;
name:和id一样,这是为了更好地区分可以任起;
tag_bundles注释:
修改 continuous_detection.launch 文件
打开 apriltag_ros/launch/continuous_detection.launch 文件。
需要修改的主要有两个标签:
这两个值是在 rostopic list中查看相机发布的话题中看见,如果你用的不是realsense,那么需要按照相机包发布出来的话题名修改,这里用的是默认设置的 realsense 相机话题。
注意:“camera_name” 一定只能用前缀,如果多加了 “/” 会导致算法订阅到的话题变成了 “/camera/color//image_raw” 这样是不会出数据的,因为后面其实是做了一个字符串拼接:
最终修改如下:
4.启动 apriltag_ros 算法
如果没有出现红色的报错说明启动成功了,如果有则检查 yaml 文件有没有出现多一个逗号或者省略号之类的。
然后再开一个窗口就可以订阅推算出来的话题:
正确检测到的应该会有下面的信息:
Turtlebot3 入门教程-PC软件设置
本文提供Turtlebot3入门教程,重点讲解PC软件设置。
首先,安装Ubuntu系统并执行脚本安装ROS-kinetic,如安装过程中遇到问题,可选择源码安装。
源码安装步骤包括:安装源、增加key、更新、Desktop-Full安装推荐包,包括ROS、rqt、rviz、robot-generic库等,并解决依赖问题。
在安装过程中,可能需要解决国外服务器下载问题,可借助科学上网方法解决。
环境设置后,进行rosinstall工具的安装,方便下载ROS软件包。接着开始安装TurtleBot3及依赖包。
进行网络配置,首先通过`ifconfig`命令获取主机ip地址,如:..1.,并在终端中编辑`.bashrc`文件,添加ROS_MASTER_URI参数,记得包含接口:“:”,然后刷新环境变量。
小车连接显示器,打开树莓派Ubuntu系统,获取从机ip地址,并确保小车系统连接同一WiFi,与主机IP前三部分一致。
在小车系统中,同样在`.bashrc`文件中进行相关参数的添加和修改,并刷新环境变量,确保配置完整无误。
进行主从机测试配置,首先在主机启动roscore服务,接着在从机执行`rostopic list`命令,查看节点名称返回数据是否与预期相同,若相同则配置成功。
如果配置过程中遇到无法连接主从机的问题,需检查虚拟机网络配置或网络连接是否正确。
本文还提供如何在主机上仅进行网络配置的简化步骤,通过使用ssh命令连接从机,便于操作和管理。
完成上述步骤后,即可成功设置Turtlebot3的PC软件环境,为后续的使用与开发打下坚实基础。
cruise-automation Webviz 简介
cruise-automation项目旨在开发一系列与现有开源工具如rviz、rqt console、rqt_runtime_monitor、rostopic echo和rqt_plot相呼应的可视化面板。通过进一步的开发,添加了针对Cruise特定需求的自定义面板,远离传统工具,以更精细地满足工程师解决问题的需要,并保持对开放源代码机器人社区的实用性。随着定制化和对过时工具逐渐迁移,这些面板功能日益精进。 项目目标是替代ROS中的可视化工具,如rviz、rqt等。Webviz实现这一目标,提供直观且功能丰富的界面。在试用过程中,发现其稳定性高、加载速度快、使用便捷。以下是Webviz的安装和运行步骤,假设操作系统为Ubuntu .。 Webviz与ROS数据传递通过rosbridge_suite进行。对于实时显示数据(而非使用bag文件),需要安装rosbridge_suite。 Webviz启动默认使用websocket端口,无需调整,连接时会自动使用该端口。 安装nodejs时,遵循github.com/nodesource/d...指南,选择较旧版本(如v.x,避免新版本编译问题)。 接下是Webviz编译过程: 下载代码。 执行编译命令,确保根目录下安装了所有依赖。 再次执行编译。 运行编译好的程序,浏览器将直接打开预览界面(推荐使用Chrome浏览器)。 测试Webviz效果时,可使用两个示例topic:速腾的lidar数据和gnss定位信息(默认时间坐标,也可切换为xy坐标形式)。实测效果如图所示,展示了Webviz在可视化数据方面的强大能力。