媒介
ROS (Robot Operating System, 机器人操作系统) 提供一系列步调库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、装备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。
具体内容请参考
https://baike.baidu.com/item/ros/4710560?fr=aladdin
一、Ubuntu18.04安装ROS情况
1.添加ROS软件源
- sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
复制代码
2.添加密钥
- sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
复制代码
3.安装ROS
- sudo apt-get install ros-melodic-desktop-full
复制代码 选择Y
4.初始化rosdep
阐明:
(1)利用sudo rodep init出现sudo rosdep:找不到命令提示的错误
办理方法:
sudo apt install python-rosdep
(2)出现ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.的错误
办理方法:
增加raw.githubusercontent.com域名与ip之间的映射
$ sudo vim /etc/hosts
151.101.84.133 raw.githubusercontent.com
5.设置情况变量
- echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
- source ~/.bashrc
复制代码 6.安装rosinstall
- sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
复制代码 二、ROS第一个例程——小海龟
开启小海龟仿真的步骤:
1.启动ROS Master
2.启动小海龟仿真器
- rosrun turtlesim turtlesim_node
复制代码
3.启动海龟控制节点
- rosrun turtlesim turtle_teleop_key
复制代码
阐明:
每个步骤都需要新打开一个终端,小海龟的运行路径是在最后一个终端上,通过上下左右按键控制的。
三、编写C++步调,控制小海龟走一个标准的圆形
1、创建工作空间和功能包
概念
工作空间(workspace)是一个存放工程开发相关文件的文件夹。全部的源码、配置文件、可执行文件都是放置在里面的。主要分为四个文件夹:
1.src: 代码空间 (source space)
放置功能包(里面的代码、配置文件、launch文件
2.build:编译空间 (build space)
编译过程中的中间文件(不太用关心
3.devel:开发空间 (development space)
编译天生的一些可执行文件、库、脚本
4.install:安装空间 (install space)
install命令的效果就放在里面
(1)创建工作空间
overview:
operation:
catkin_init_workspace //初始化工作空间(属性厘革),看到冒出了CMakeLists.txt>
下面临工程编译(catkin_make)
要来到工作空间的根目次举行编译:
看到出现了另两个空间:
使install空间出现:
(2)创建功能包
- 功能包是放置ROS源码的最小单位
- 同一个工作空间下不允许存在同名功能包
创建功能包:
(要放在src里面):
命令 功能包名 依赖1 依赖2 依赖3:
catkin_create_pkg test_pkg roscpp rospy std_msgs>
打开功能包:
include放置头文件
src放功能包的代码
后面两个文件是功能包肯定有的,使其区别于平凡文件夹的属性
编译功能包:
照旧先回到catkin_ws
编译工作空间就行了
由于没有代码所以也没有实际效果
要运行功能包里某一个步调的话,要先设置一下工作空间的情况变量
设置之后系统才能找到工作空间
设置情况变量:
ros@ros-virtual-machine:~/catkin_ws$ source devel/setup.bash >
检查情况变量:
用echo命令把情况变量打开
(ROS_PACKAGE_PATH 是ROS本身的一个情况变量,通过这个情况变量查找全部功能包的路径)
也是只有在前一步设置了工作空间的setup.bash之后,path里面才会包含工作空间的路径
ros@ros-virtual-machine:~/catkin_ws$ echo $ROS_PACKAGE_PATH
/home/ros/catkin_ws/src:/opt/ros/noetic/share
2、发布者Publisher的编程实现
以小乌龟速率为例,话题模子(Publisher/Subscriber)如下:
(1)创建功能包
- $ cd ~/catkin_ws/src
- $ catkin_create_pkg my_topic roscpp rospy std_msgs geometry_msgs turtlesim
复制代码
再往功能包下的 src 中添加的 cpp 文件,该文件实现了发布者。
实现发布者的步骤:
1、初始化ROS节点;
2、向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型;
3、创建消息数据;
4、按照肯定频率循环发布消息
velocity_publisher.cpp代码:
- // 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist
- #include <ros/ros.h>
- #include <geometry_msgs/Twist.h>
- int main(int argc, char **argv)
- {
- // ROS节点初始化
- ros::init(argc, argv, "my_velocity_publisher");
- // 创建节点句柄
- ros::NodeHandle n;
- // 创建一个Publisher,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度20
- ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 20);
- // 设置循环的频率
- ros::Rate loop_rate(10);
- int count = 0;
- while (ros::ok())
- {
- // 初始化geometry_msgs::Twist类型的消息
- geometry_msgs::Twist velocity_msg;
- velocity_msg.linear.x = 0.5;//线速度
- velocity_msg.angular.z = 0.5;//角速度
- // 发布消息
- turtle_vel_pub.publish(velocity_msg);
- ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]", //类似c的printf
- velocity_msg.linear.x, velocity_msg.angular.z);
- // 按照循环频率延时
- loop_rate.sleep();
- }
- return 0;
- }
复制代码 在添加了源文件后,我们需要修改编译规则,举行编译:
- //配置CMakeLists.txt中的编译规则
- // 1、设置需要编译的代码和生成的可执行文件
- add_executable(my_velocity_publisher src/my_velocity_publisher.cpp)
- // 2、设置链接库
- target_link_libraries(my_velocity_publisher ${catkin_LIBRARIES})
复制代码
编译并运行发布者:
- $ cd ~/catkin_new_ws$ catkin_make$ source devel/setup.bash$ roscore
- $ rosrun turtlesim turtlesim_node
- $ rosrun my_topic my_velocity_publisher
复制代码 (2)运行效果:
四、以小海龟为例演示两台电脑的ROS分布式通讯
1、查看两台电脑各自的IP信息和主机名hostname
打开终端,输入命令查看主机的ip和主机名称,并记载(此处若ifconfig找不到命令,可以根据提示输入sudo apt install net-tools)
两台主机分别添加对方的ip地点和主机名到hosts文件中。这里可以直接利用vim大概sudo gedit打开文件(这里个人推荐利用gedit)
在第三行参加ip主机地点和主机名hostname然后保存退出
接下来重启网络
- sudo /etc/init.d/networking restart
复制代码 2、下载两个包
下载同步包和ssh服务器
- sudo apt-get install chrony
- sudo apt-get install openssh-server
复制代码 检查启动
- ps -e|grep ssh
- ping 从机的ip地址
复制代码 总结
安装ROS的整个过程,起首需要选择对应版本的ROS,接着就是在网络问题上的处置惩罚。现在网上还没有比力好的方法来办理线上安装过程遇到的网络问题,最佳的方式就是放弃线上安装,选择本地下载安装,否则会花费比力久的时间。
实现小海龟的运动我们可以利用键盘的上下键,命令行以及编程实现,通过三种方式的实现开端了解了ROS的特点。
参考文献
Ubuntu18.04安装ROS——实现小海龟仿真
ROS学习条记(十二)ROS noetic ubuntu 版本 rosdep init,rosdep update
问题办理方法
[古月居ros21讲出现问题及个人办理方案1]第十讲出现:[rospack] Error: package ‘learning_topic‘ not found
Could not find a package configuration file provided by “std_msg“ with any of the following names:
ROS简介-从零开始讲解ROS(适合超零根本阅读)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |