ROS kinetic版本常用资料及操作汇总

2024-01-23 19:48

本文主要是介绍ROS kinetic版本常用资料及操作汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.相关网站

走弓字形参考代码
https://www.ncnynl.com/archives/201703/1479.html
走三角形代码
https://blog.csdn.net/ywj447/article/details/53318411
节点控制与通信部分可参考
https://blog.csdn.net/under_maple/article/details/49430765
学习move_base包
https://blog.csdn.net/haorenhaoren123/article/details/51439046
用move_base控制自己的机器人
https://blog.csdn.net/heyijia0327/article/details/41823809
move_base navigation教程
https://www.ncnynl.com/archives/201708/1898.html
使用ros实现navigation导航
https://blog.csdn.net/ganbaoni9yang/article/details/50560310
最后的速度插值处理(流程就是订阅 “cmd_vel”topic 然后将速度做处理,发送给下位机执行)
http://wiki.ros.org/yocs_velocity_smoother
turtlebot主从机网络配置
https://blog.csdn.net/qq_32005213/article/details/80227179
https://blog.csdn.net/lovedarling/article/details/78470680
https://www.ncnynl.com/archives/201609/793.html
https://blog.csdn.net/qq_32005213/article/details/80227179
航迹推演原理
https://robotics.stackexchange.com/questions/106/what-is-a-suitable-model-for-two-wheeled-robots/134#134
rosplan机器人路径规划
https://blog.csdn.net/philthinker/article/details/74937601
ros串口通信教程
https://blog.csdn.net/qq_30299913/article/details/77868738

2.常用命令使用样例及报错解决方案参考

常用命令总结:

创建一个功能包:
catkin_create_pkg ros_tutorials
启动turtlebot : roslaunch turtlebot_bringup minimal.launch
启动建图:roslaunch turtlebot_navigation gmapping_demo.launch
启动rviz: 
roslaunch turtlebot_rviz_launchers view_navigation.launch
启动键盘:
rosrun turtlebot_teleop turtlebot_teleop_key

is not a launch file :报错解决方案

$   cd ~/catkin_ws/
$   catkin_make
$   source devel/setup.bash
创建一个功能包
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

turtlebot仿真(ros by example代码)

启动turtlebot机器人
roslaunch rbx1_bringup  fake_turtlebot.launch
空白地图启动move_base节点
roslaunch rbx1_nav fake_move_base_blank_map.launch
发布一条前进指令
rostopic pub /move_base_simple/goal  geometry_msgs/PoseStamped \ '{header: {frame_id: "map"},pose: {position:{x: 1.0,y: 0,z: 0},orientation: {x: 0,y: 0,z: 0,w: 1}}}'
使用rviz观察
rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz
再发一个返回起点的指令
rostopic pub /move_base_simple/goal  geometry_msgs/PoseStamped \ '{header: {frame_id: "map"},pose: {position:{x: 0.0,y: 0,z: 0},orientation: {x: 0,y: 0,z: 0,w: 1}}}'
运行rqt_reconfigure,可以用可视化的方法调节各个参数

关于四元数的问题

为什么刚才的四元数参数设置为orientation: {x: 0,y: 0,z: 0,w: 1}
四元数可以向欧拉角一样表示旋转变换,这里表示的是机器人到达目的地后和出发时相比姿态的变化。四元数的本质是用一个向量和绕该向量的旋转来表示位姿变换,这个向量暂且记为v=(vx,vy,vz),这个旋转角度记为θ,下面看一下四元数的计算式:
看了这个公式就明白,要想根据四元数自己推算出旋转角度和旋转轴,还是有些麻烦的,一般我们需要将四元数转为为指定旋转顺序的欧拉角,才能看出姿态到底发生了怎样的变化,因此,千万别误以为每一个旋转方向的四元数表达形式都如此简洁,从四元数里读取旋转角和旋转轴还是有点计算量的。
我们可以用Matlab来验证一下quat=(0,0,0,1)这个四元数转换为欧拉角后的结果:

quat = [1 0 0 0]; //这里默认的四元数顺序为 w,x,y,z,与ros下顺序有点区别
eulZYX = quat2eul(quat) //四元数转欧拉角函数,需要注意欧拉角转动顺序
eulZYX =
0 0 0
输出结果也是绕各个轴的旋转角度都为0,即不旋转。
我们再来小小实验一下:我想让机器人到达目的地后调转180度,看看四元数应该怎么写。
调转180度,即绕着机器人z轴转180度,使用matlab中的函数算一下这个四元数:

eul = [pi 0 0]; //这个欧拉角的顺序是与输出顺序保持一致的,下面的函数转换输出顺序为ZYX,因此,绕z轴旋转pi就写为[pi 0 0]
qZYX = eul2quat(eul)
qZYX =
0.0000 0 0 1.0000
注意这里的四元数是(w,x,y,z)的顺序,我们输入到ROS下时,应该调整为(x,y,z,w)顺序,即写为(0,0,1,0)。

用move_base简单的移动机器人

1.首先启动turtlebot机器人。
roslaunch rbx1_bringup fake_turtlebot.launch
2.在另一个终端运行:
roslaunch rbx1_nav fake_move_base_blank_map.launch
3.打开rviz视图查看机器人。
rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz
4.运行move_base_square.py脚本移动机器人。
rosrun rbx1_nav move_base_square.py

move_base仿真2

1、首先运行ArbotiX节点,并且加载机器人的URDF文件。roslaunch rbx1_bringup fake_turtlebot.launch 
2、然后运行move_base和加载空白地图的launch文件(fake_move_base_blank_map.launch):
roslaunch rbx1_nav fake_move_base_blank_map.launch
3、然后调用rviz就可以看到机器人了。rosrun rviz rviz -d `rospack find rbx1_nav`/nav_fuerte.vcg

使用github源代码步骤

创建一个程序包
roscreate-pkg move_base
更新ros查找路径
export ROS_PACKAGE_PATH=./:$ROS_PACKAGE_PATH
确认路径已经添加
rospack find PACKAGE_NAME

roscore 命令无反应

sudo gedit ~/.bashrc
将文件末尾host_master 等携带IP的注释掉

工具的下载与安装

git clone https://github.com/jbeder/yaml-cpp
到下载的yaml-cpp 目录下,build
git clone https://github.com/jbeder/yaml-cpp.git
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
sudo make install

Ros cpp文件编译方法

$cd ~/catkin_ws/src
$roscreate-pkg beginner_tutorials
$cd src
$vim talker.cpp
$vim listener.cpp
$cd ..
$ gedit CMakeLists.txt
添加如下代码
dd_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp)
然后切换到工作目录进行编译
$ cd ~/catkin_ws
$ catkin_make
编译完成后进行一下步骤
启动ros 核心运行环境roscore
注册程序
$ cd ~/catkin_ws
$ source ./devel/setup.bash
运行talker节点
rosrun beginner_tutorials talker
rosrun beginner_tutorials listener

解决远程 rviz不能显示的问题

https://blog.csdn.net/bbtang5568/article/details/83030019

rviz运行时提示rviz package包找不到

sudo apt-get install ros-kinetic-rviz
然后环境检测,安装
rosdep install rviz
rosmake rviz

ROS串口通信
https://blog.csdn.net/Kalenee/article/details/82422196
ROS学习篇(三)ROS系统的串口数据读取和解析(组合导航系统)
https://blog.csdn.net/Tansir94/article/details/81357612
上位机获取和读写odometry数据
https://blog.csdn.net/weixin_40641902/article/details/78873340
Publishing Odometry Information over ROS
http://wiki.ros.org/navigation/Tutorials/RobotSetup/Odom#CA-e2052414630468fe310b25214b246ed855f653e9_54

发送机器人位置,movebase自动移动到改位置
https://blog.csdn.net/yiranhaiziqi/article/details/52891973

kobuki安装使用方法
http://wiki.ros.org/kobuki/Tutorials/Installation

kobuki navigation move_base

启动底盘

roslaunch kobuki_node minimal.launch

键盘遥控

roslaunch kobuki_keyop keyop.launch

在真实的机器人上运行
https://blog.csdn.net/haorenhaoren123/article/details/51439046

kobuki navigation
https://github.com/DaikiMaekawa/kobuki_navigation

发布odometry消息
http://wiki.ros.org/navigation

python代码:move_base
https://github.com/EAIBOT/dashgo
https://github.com/EAIBOT/dashgo/blob/master/dashgo_bringup/scripts/move_base_square.py

Dashgo多种运动方式测试走弓字形
https://blog.csdn.net/EAIBOT/article/details/51719691

创建启动文件及一系列的节点
启动节点:
启动文件的核心是一系列节点元素,每个节点元素都指向一个需要启动的元素,节点元素的形式为:
<node
pkg = “package-name” // 功能包的名称
type = “executable-name” // 功能包中编译形成的可执行文件的名称
name = “node-name” //节点名称
/>
其中,pkg 和 type 这两个参数和 rosrun 这个命令的参数一样。
启动文件设置
https://blog.csdn.net/wang2012010865/article/details/78628118
ROS学习资料
https://blog.csdn.net/ZhangRelay/article/details/78179097

弓字形轨迹启动步骤:

1.启动turtlebot:
roslaunch turtlebot_bringup minimal.launch
2.启动一系列节点
roslaunch rbx1_nav wfmovebase_grid.launch
3.rviz配置可视化
rosrun rviz rviz -d `rospack find rbx1_nav`/nav.rviz
4.运行弓字形代码
rosrun rbx1_nav movebase_square.py  rosrun rbx1_nav send_goal

查看话题和消息的常用命令
https://blog.csdn.net/NNNNNNNNNNNNY/article/details/75213524

rqt_graph  查看节点消息关系图
rosrun rqt_graph rqt_graph

waypoints nav

https://github.com/turtlebot/turtlebot_apps/tree/waypoint_nav

这篇关于ROS kinetic版本常用资料及操作汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/637334

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav