Ros从安装到入门


hlayout: post
title: UnitySir - ROS的安装与实践
date: 2020-12-30 13:32:10
categories: Ros
tag: Ros机器人


文章目录

    • 一、Ubuntu 镜像下载
    • 二、Ubuntu 20.04 安装 代码库
        • 更新vcpkg
        • 卸载vcpkg
    • 三、Ubuntu各个版本安装Ros步骤
      • ROS 1 安装
      • ROS 2 Foxy 安装 (MoveIt2必备)
      • ROS1 和 ROS2
      • MoveIt 1 安装
      • MoveIt 2 安装
    • 四、Ros 核心概念
    • 五、Ros常用命令
        • Ros中 默认以 ==米== 和 ==弧度== 为单位
  • 六、工作空间与功能包
      • 概览
          • 创建工作空间
          • 编译工作空间
          • 设置环境变量
          • 检查环境变量
          • 创建功能包
        • 代码地址
    • 6.1 创建工作空间
    • 6.2 创建功能包
    • 6.3 发布者的编程实现
    • 6.4 订阅者编程实现
    • 6.5 自定义话题消息(.msg文件)
        • 发布者 `person_publisher`
        • 订阅者 `person_subscriber`
        • 编译运行:
    • 6.6 客户端编程实现
    • 6.7 服务端编程实现
    • 6.8 自定义服务数据 (.srv 文件)
          • 1. 编写客户端代码 `person_client.cpp`
          • 2. 编写服务端代码 `person_server.cpp`
          • 3. 编译规则
          • 4. 编译运行
    • 6.9 参数使用与编程方法
        • 使用 `rosparam` 命令
        • 通过代码实现 `parameter_config.cpp`
          • 设置编译规则
          • 编译运行
    • 6.10 Ros中的坐标管理系统 (TF)
          • 坐标之间的数据变换
        • 机器人中的坐标变换
    • 6.12 可视化工具 `rviz` 的安装
    • 6.13 TF 坐标系 广播 与 监听 的编程实现
    • 6.14 launch 文件的使用方法
  • 七、常用可视化工具
    • rqt 可视化工具安装
    • 日志输出工具 - rqt_console
    • 计算图可视化工具 - rqt_graph
    • 数据绘图工具 - rqt_plot
    • 图像渲染工具 - rqt_image_view
    • Gazebo - 三维物理仿真平台
        • Gazebo11 的安装
    • 资源整理
  • 八、Ros 中导入 描述文件(URDF、xacro)
    • ROS导入 URDF
      • ROS导入URDF小车
        • (1)在工作区创建硬件描述包,使用如下命令
        • (2)新建模型的描述文件smartcar.urdf
        • (3)建立launch命令文件
        • (4)在rviz中显示小车
    • ROS导入 Xacro
  • 九、ROS的使用
    • ROS消息(`msg`)中的标准数据类型
  • END 常见问题:
          • 1. `Resource not found: roslaunch` 问题
          • 2. 终端出现没有那个文件或目录,解决每次都要source问题
          • 3. 运行 `roslaunch` 命令出错:
  • 拓展网站

一、Ubuntu 镜像下载

官方下载地址(不推荐)

中国官网(推荐)

中科大源

阿里云开源镜像站

兰州大学开源镜像站

浙江大学



Ubuntu 20.04 安装 ROS Noetic

Ubuntu18.04安装ROS Melodic

二、Ubuntu 20.04 安装 代码库

  1. 在外壳程序窗口中,运行以下命令:

    sudo apt-get update

  2. 更新完成后,请运行以下命令:

    sudo apt-get install build-essential tar curl zip unzip

  3. 从GitHub克隆vcpkg存储库:https : //github.com/Microsoft/vcpkg。

    git clone https://github.com/microsoft/vcpkg

此命令在*vcpkg子目录中创建存储库的本地副本。此位置是此vcpkg克隆的vcpkg根目录*。

  1. 接下来,转到vcpkg根目录,然后运行vcpkg bootstrapper命令:

    ./bootstrap-vcpkg.sh

更新vcpkg

vcpkg软件包管理器会定期在GitHub上更新。要将vcpkg的克隆更新到最新版本,请从vcpkg根目录运行**git pull**。此命令将您的vcpkg副本与GitHub上的版本同步。下载完成后,再次运行引导程序。引导程序将重建vcpkg程序,但是将安装的库保留在原位。

卸载vcpkg

要卸载vcpkg,只需删除*vcpkg*目录。删除此目录将卸载vcpkg发行版以及vcpkg已安装的所有库。

但是,如果已执行**vcpkg integrate install,则应vcpkg integrate remove**在删除文件夹之前执行以确保清除了集成。有关更多信息,请参见整合vcpkg。

三、Ubuntu各个版本安装Ros步骤

ROS 1 安装

  1. sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    

    或者(国内镜像)

    sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    

  2. sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
    

  3. sudo apt update
    
    • 然后,输入下面其中一条命令(每个版本不同) :
      • 16.04 sudo apt install ros-kinetic-desktop-full
      • 18.04 sudo apt install ros-melodic-desktop-full
      • 20.04 sudo apt install ros-noetic-desktop-full

  4. 执行 sudo rosdep init

    如果出现未找到 rosdep命令 执行 sudo apt install python3-rosdep2

    • 如果出现 ERROR: cannot download default sources list from:

      • 通过 sudo gedit /etc/hosts #打开hosts文件

      • #在文件末尾添加 151.101.84.133 raw.githubusercontent.com

    • 如果出现 ERROR: default sources list file already exists:

      • 执行 sudo rm /etc/ros/rosdep/sources.list.d/20-default.list

    最后执行 rosdep update

    ROS终端出现没有那个文件或目录,解决每次都要source问题

    ​ 执行 gedit ~/.bashrc

    在文件末尾添加 : source /opt/ros/noetic/setup.bash noetic 是我安装的版本

  5. 修改为对应的版本 – melodic – noetic – kinetic

    echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    

  6. 执行 Python2 sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

    或者 Python3 sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential


  1. 测试

第一步,打开一个终端测试roscore是否能正常启动,使用ROS必须保证roscore运行:

roscore

第二步,新开启一个终端,执行以下命令:

rosrun turtlesim turtlesim_node

第三步,再开启一个终端,执行以下命令:(鼠标必须聚焦在这个终端,乌龟才会移动)

rosrun turtlesim turtle_teleop_key

通过上下左右键即可实现乌龟的移动


ROS 2 Foxy 安装 (MoveIt2必备)

(注意:ROS2中不再需要 roscore 命令)

在Ubuntu 20.04中安装ROS2最新版本Foxy Fitzroy

ROS2基本命令总结

原文地址 :ROS2入门教程——2. Ubuntu20.04安装ROS2 Foxy

  1. 设置编码
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
  1. 设置软件源
sudo apt update && sudo apt install curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
  1. 安装ROS2
sudo apt update
sudo apt install ros-foxy-desktop
  1. 设置环境变量
source /opt/ros/foxy/setup.bash
  1. 安装自动补全工具
sudo apt install python3-argcomplete
  1. 添加环境变量。这样每次打开 Terminal 就可以自动加载 ROS 2 相关的环境变量,进而使用 ROS 2 相关的命令
echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc
  1. 如果涉及到 ROS 节点与 ROS 2 节点通讯,还要安装 ros1_bridge
sudo apt install ros-dashing-ros1-bridge
  1. 安装colcon ,colcon 包含在了 ROS 2 的 repo 中,前边已经添加过了这个 repo,所以这里直接安装即可:
sudo apt install python3-colcon-common-extensions

跑几个例程测试一下:

  1. 先运行一个talker:
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker
  1. 再运行一个Listener
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_py listener
  1. ROS2的RWM默认使用的DDS是Fast RTPS,Cyclone DDS默认也安装好了,还可以这样安装RTI Connext:
sudo apt update
sudo apt install ros-foxy-rmw-connext-cpp # for RTI Connext (requires license agreement)
  1. 安装之后通过环境变量即可切换DDS:
RMW_IMPLEMENTATION=rmw_connext_cpp
  1. 如果哪一天不喜欢了,还可以这样删除:
sudo apt remove ros-foxy-* && sudo apt autoremove

ROS1 和 ROS2

ros1 和 ros2的区别

ROS和ROS2.0到底该用哪个呢?

ROS 2最新版Dashing,你尝鲜了么?

为什么 ROS 2.0?

什么是ROS 2.0


MoveIt 1 安装

安装MoveIt和创建一个工作空间沙盒来运行教程和robot

这个教程将会安装MoveIt和创建一个工作空间沙盒来运行教程和robot例子。
一.安装ROS和Catkin
一旦安装了ROS,确保有最新的包:

rosdep update
sudo apt-get update
sudo apt-get dist-upgrade

安装ROS编译系统catkin:

sudo apt-get install ros-kinetic-catkin python-catkin-tools

二.安装MoveIt
最简单的方式安装MoveIt是使用预编译二进制:

sudo apt install ros-kinetic-moveit

三.创建Catkin工作空间
创建一个catkin工作空间:

mkdir -p ~/ws_moveit/src

四.下载例子代码
在catkin工作空间中,下载这些代码:

cd ~/ws_moveit/src
git clone -b kinetic-devel https://github.com/ros-planning/moveit_tutorials.git

需要一个panda_moveit_config包来运行这些教程:

git clone -b kinetic-devel https://github.com/ros-planning/panda_moveit_config.git

说明:现在使用预生成的panda_moveit_config包,但是后面在MoveIt Setup Assistant tutorial章节,将会学习如何制作自己的包。

五.编译Catkin工作空间
接下来安装依赖包:

cd ~/ws_moveit/src
rosdep install -y --from-paths . --ignore-src --rosdistro noetic

配置catkin工作空间:

cd ~/ws_moveit
catkin config --extend /opt/ros/noetic
catkin build

source catkin工作空间:

source ~/ws_moveit/devel/setup.bash

增加上条命令到.bashrc文件中:

echo 'source ~/ws_moveit/devel/setup.bash' >> ~/.bashrc

六.Next Step
通过RViz的交互式运动规划插件可视化一个robot。

七.相关问题
由于自己使用的开发环境为Ubuntu 16.04、ROS2 Dashing和MoveIt2,本来想使用colcon进行工作空间的编译,结果报错,最终还是安装ROS Kinetic和MoveIt,使用的catkin编译系统。如下所示:
[1]pkg_resources.DistributionNotFound: The ‘catkin-tools==0.4.5’ distribution was not found and is requ
解析:pip install catkin-tools
[2]Could not find a package configuration file provided by “moveit_visual_tools” with any of the following names
解析:sudo apt-get install ros-kinetic-moveit-visual-tools
说明:若非必要,尽量不要折腾环境,多写代码,多学原理。
[3]Could not find a package configuration file provided by… Could not find the required
解析:sudo apt-get install ros-kinetic-***
还有两个小问题没有解决掉
[1]Exception ignored in: >
[2]TypeError: signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object


MoveIt 2 安装


四、Ros 核心概念

动态参数配置 – Ros高级功能

五、Ros常用命令

Ros中 默认以 弧度 为单位

rostopic pub -h 即可获取对应指令的说明信息

  1. roscore 启动节点管理器

  2. rosrun turtlesim turtlesim_node { 命令 包名称 节点名称 } ,启动一个仿真节点

  3. rosrun turtlesim turtle_teleop_key 启动一个键盘控制节点

可视化节点视图 命令 :rqt_graph

命令行所有节点信息 命令 :rosnode –> rosnode listrosnode info 节点名称

topic 信息 命令 rostopic

显示 ros 消息类型 rosmsg show geometry_msgs/Twist

创建一个海龟 rosservice call /spawn

保存数据 rosbag record -a -O cmd_record -a 保存所有数据 -O 保存为压缩包 cmd_record 压缩包名称

让海龟根据保存的数据移动 :rosbag play cmd_record.bag


六、工作空间与功能包

概览

创建工作空间
编译工作空间
设置环境变量
检查环境变量

创建功能包

代码地址

https://gitee.com/unitysir/ros_21_tutorials


6.1 创建工作空间

  1. 在当前目录创建一个ROS工程文件夹 mkdir catkin_ws

  2. catkin_ws 目录下创建子目录 src

    1. src目录初始化ROS工程 : catkin_init_workspace
    2. catkin_ws 中 编译整个项目 :catkin_make
      • 编译后,产生了 builddevel 目录
    3. catkin_ws 中执行 catkin_make install
      • 产生 install 目录

6.2 创建功能包

  1. src 目录中创建功能包 - 执行 catkin_create_pkg us_pkg roscpp rospy std_msgs 创建一个名为 us_pkg 依赖为 roscpp rospy std_msgs

  2. catkin_ws 中编译 功能包- 执行 catkin_make

  3. 设置工作空间的环境变量 source devel/setup.bash

  4. 查看环境变量 echo $ROS_PACKAGE_PATH


6.3 发布者的编程实现

  1. catkin_ws/src 目录创建功能包 catkin_create_pkg learing_topic roscpp rospy std_msgs geomtry_msgs turtlesim

    • 步骤:
      • 初始化ROS节点
      • 向 ROS Master注册节点信息(话题名和消息类型)
      • 创建消息数据
      • 按照一定频率发布消息

    (配置编译规则)将以下代码复制到 catkin_ws/src/learing_topic 中 CMakeList.txt中

    add_executable(velocity_publisher src/velocity_publisher.cpp)
    target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
    

    实现代码: velocity_publisher.cpp

/**

该例程将发布 turtle1/cmd_vel 话题 , 消息类型为 geometry_msgs::Twist

**/

#include
#include

int main(int argc,char **args){
   
	
	//ROS节点初始化
	ros::init(argc,args,"velocity_publisher");
	
	//创建节点句柄
	ros::NodeHandle n;

	//创建一个Publisher 发布名为 turtle1/cmd_vel , 消息类型为 geometry_msgs::Twist
	ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);

	//设置循环频率
	ros::Rate loop_rate(10);

	int count = 0;
	while(ros::ok()){
   
		//初始化geometry_msgs::Twist类型的消息
		geometry_msgs::Twist vel_msg;
		vel_msg.linear.x = 0.5;
		vel_msg.angular.z = 0.2;
		

		//发布消息
		turtle_vel_pub.publish(vel_msg);
		ROS_INFO("command[%0.2f m/s , %0.2f rad/s]",vel_msg.linear.x,vel_msg.angular.z);

		//按照循环频率延时
		loop_rate.sleep();
	}

	return 0;
}

  1. catkin_ws目录中编译 catkin_make

  2. 启动

    1. roscore 启动节点管理器
    2. rosrun turtlesim turtlesim_node { 命令 包名称 节点名称 } ,启动一个仿真节点
    3. rosrun turtlesim turtle_teleop_key 启动一个键盘控制节点
    4. rosrun learing_topic velocity_publisher 启动发布者

6.4 订阅者编程实现

(配置编译规则)将以下代码复制到 catkin_ws/src/learing_topic 中 CMakeList.txt中

add_executable(pose_subscriber src/pose_subscriber.cpp)
target_link_libraries(pose_subscriber ${catkin_LIBRARIES})

实现代码:pose_subscriber.cpp

#include
#include"turtlesim/Pose.h"

void poseCallback(const turtlesim::Pose::ConstPtr& msg){
   
	
	ROS_INFO("Turtle pose: x:%0.6f, y:%0.6f",msg->x,msg->y);
}

int main(int argc,char **argv){
   
	//初始化节点
	ros::init(argc,argv,"pose_subscriber");

	//创建节点句柄
	ros::NodeHandle n;

	// 创建一个Subscriber,订阅名为 /turtle1/pose的topic , 注册回调函数poseCallback
	ros::Subscriber pose_sub = n.subscribe("/turtle1/pose",10,poseCallback);

	//循环等待回调函数
	ros::spin();

	return 0;
}
  1. catkin_ws目录中编译 catkin_make

  2. 启动

    1. roscore 启动节点管理器

    2. rosrun turtlesim turtlesim_node { 命令 包名称 节点名称 } ,启动一个仿真节点

你可能感兴趣的:(Ros,ubuntu,linux)