上海网站关键词优化,小蝌蚪xkdapp永久免费,设计logo公司,哈尔滨营销网站制作前面的文章是在已安装的ROS基础上做的一些应用#xff0c;这里我们从零开始安装ROS机器人操作系统。 机器人操作系统(Robot Operating System,ROS)是一个开发机器人软件的框架#xff0c;里面包含了一系列的工具#xff0c;库和惯例#xff0c;目的在于简化在大量不同种类机…前面的文章是在已安装的ROS基础上做的一些应用这里我们从零开始安装ROS机器人操作系统。 机器人操作系统(Robot Operating System,ROS)是一个开发机器人软件的框架里面包含了一系列的工具库和惯例目的在于简化在大量不同种类机器人平台之间构建复杂和稳定的机器人行为。 ROS遵循Unix的软件开发理念所以对于有Unix背景知识的会感到很熟悉上手很快。ROS的一个显著特点是可以使用多种语言来开发包括C、Python、Lisp、Java、Javascript、Matlab、Ruby、R语言等等这也使得不同语言背景的程序员都能够很自然的进入到机器人领域。 更重要的是ROS是开源且免费的遵循BSD协议发布所以是允许商用的不需要授权以及由于ROS模块之间的耦合度非常低自己开发的模块等是可以细粒度的许可授权。 这里就介绍Ubuntu(一个流行且相对友好的Linux发行版)中如何是安装ROS的本人的版本是18.04版本这里着重说下版本号是因为下面的安装跟你的系统版本是有关的。
1、更新软件源
首先就是将软件源添加到ros-latest.list文件这样就可以让操作系统知道去哪个站点下载了
sudo sh -c echo deb http://packages.ros.org/ros/ubuntu trusty main /etc/apt/sources.list.d/ros-latest.list
我们可以查看下文件源内容已被写入进去
cat /etc/apt/sources.list.d/ros-latest.list
deb http://packages.ros.org/ros/ubuntu trusty main
这里需要注意的是如果想要安装先不急着输入上述命令全文看完之后再来安装因为ROS的安装跟你的Ubuntu系统版本有关。
2、设置密钥
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
这里的密钥在后续进行安装的时候第二行命令可以先不管它应该是不需要
3、安装机器人开发库
安装完整桌面套装包含了机器人开发所需的库和工具
sudo apt-get update
sudo apt-get install ros-indigo-desktop-full python-rosinstall
如果出现下面这样的错误 Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: ros-indigo-desktop-full : Depends: ros-indigo-desktop but it is not going to be installed Depends: ros-indigo-perception but it is not going to be installed Depends: ros-indigo-simulators but it is not going to be installed Depends: ros-indigo-urdf-tutorial but it is not going to be installed E: Unable to correct problems, you have held broken packages. E:由于无法纠正问题您持有损坏的包。所以这里其实是版本不匹配
我的Ubuntu的发行版本是
uname -v
#161~18.04.1-Ubuntu SMP Fri Feb 10 15:55:22 UTC 2023
可以看到是18.04的版本这里列出Ubuntu对应的版本
Ubuntu版本ros版本Ubuntu 20.04noeticUbuntu18.04melodicUbuntu16.04kineticUbuntu14.04indigo
所以需要将indigo修改成melodic再次安装时依然有问题
sudo apt-get install ros-melodic-desktop-full python-rosinstall
报错E: Unable to locate package ros-melodic-desktop-full
发现这里报错的原因除了版本对应的问题之外更关键的是软件源的选择。 使用lsb_release -sc命令直接获取版本也可以这里显示为bionic
sudo sh -c echo deb http://packages.ros.org/ros/ubuntu bionic main /etc/apt/sources.list.d/ros-latest.list
或者为了更好的在其他不确定的系统上进行移植输入下面这样的命令(推荐)
sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list
再次查看ros-latest.list文件内容
cat /etc/apt/sources.list.d/ros-latest.list
deb http://packages.ros.org/ros/ubuntu bionic main
然后sudo apt-get update更新之后再次安装就没有问题了
安装好了ros之后就会在opt目录下面出现ros目录查看ls /opt nvidia ros 可以进入ros里面再去看看是melodic版本里面有哪些目录与文件cd /opt/ros/melodic bin include local_setup.sh setup.sh shareenv.sh lib local_setup.zsh _setup_util.pyetc local_setup.bash setup.bash setup.zsh 4、安装依赖包
rosdep是ROS的依赖管理实用程序rosdep可以与ROS包和外部库一起使用是一个命令行实用程序用于识别和安装依赖项以构建或安装包。
sudo rosdep init
如果出现 sudo: rosdep: command not found 这样的错误就需要安装python-rosdep 安装命令 sudo apt-get install python-rosdep
rosdep update
如果因为网络而出现不能访问的错误 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. 处理方法新建目录与文件
sudo mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d
sudo gedit 20-default.list
然后将下面的内容粘贴到这个20-default.list文件里面 # os-specific listings first yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx # generic yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead 如果在前面访问不了同样的里面的站点也会访问不了修改hosts文件
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133 raw.githubusercontent.com
然后再rosdep update有时多试几次就可以了。
5、新开终端自启
最后将setup.bash添加到~/.bashrc这样每次启动终端就会自动运行从而可以在shell中运行ROS提供的命令了
echo source /opt/ros/melodic/setup.bash ~/.bashrc
source ~/.bashrc
不然每次开终端都需要source /opt/ros/melodic/setup.bash就显得比较麻烦。
6、检验ROS
ROS安装好了之后我们输入命令roscore 查看下是否能正常启动这个节点管理器如图 恩没有问题这个roscore可以理解成每个节点需要进行交互必须向它报道因为ROS是松耦合的一种组织方式节点之间如果要进行消息的传递就需要roscore来提供连接信息也就是说每个节点在启动的时候都会连接到roscore并注册该节点发布和订阅的消息。当新的节点出现的时候roscore就会向其提供其他相同消息主题的节点从而建立连接关系如果没有roscore的话节点之间就不能通信了。 另外我们也看到了ROS_MASTER_URIhttp://YAB:11311/其中YAB是主机名11311是默认端口这样我们就可以通过这个URI来进行访问了。
现在我们来开启两个节点测试下新增的两个节点为talker和listener一个说话一个倾听也就是一个发布一个订阅画张图来表示它们之间的关系如下
需要注意的是图中的节点是周期性的调用roscore提供的服务来找到其他节点这里就是talker和listener周期性的调用roscore而这两个节点之间的通信是直接完成的节点跟roscore都只是短暂性的连接。
现在分别打开终端并运行节点
rosrun rospy_tutorials talker
rosrun rospy_tutorials listener
如图 这个listener就会一直侦听talker发布的消息。如果将talker节点CtrlC终止这个listener节点也将停止显示信息仍将处于侦听状态。