hlayout: post
title: UnitySir - ROS的安装与实践
date: 2020-12-30 13:32:10
categories: Ros
tag: Ros机器人
官方下载地址(不推荐)
中国官网(推荐)
中科大源
阿里云开源镜像站
兰州大学开源镜像站
浙江大学
Ubuntu 20.04 安装 ROS Noetic
Ubuntu18.04安装ROS Melodic
在外壳程序窗口中,运行以下命令:
sudo apt-get update
更新完成后,请运行以下命令:
sudo apt-get install build-essential tar curl zip unzip
从GitHub克隆vcpkg存储库:https : //github.com/Microsoft/vcpkg。
git clone https://github.com/microsoft/vcpkg
此命令在*vcpkg
子目录中创建存储库的本地副本。此位置是此vcpkg克隆的vcpkg根目录*。
接下来,转到vcpkg根目录,然后运行vcpkg bootstrapper命令:
./bootstrap-vcpkg.sh
vcpkg软件包管理器会定期在GitHub上更新。要将vcpkg的克隆更新到最新版本,请从vcpkg根目录运行**git pull
**。此命令将您的vcpkg副本与GitHub上的版本同步。下载完成后,再次运行引导程序。引导程序将重建vcpkg程序,但是将安装的库保留在原位。
要卸载vcpkg,只需删除*vcpkg
*目录。删除此目录将卸载vcpkg发行版以及vcpkg已安装的所有库。
但是,如果已执行**vcpkg integrate install
,则应vcpkg integrate remove
**在删除文件夹之前执行以确保清除了集成。有关更多信息,请参见整合vcpkg。
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'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-kinetic-desktop-full
sudo apt install ros-melodic-desktop-full
sudo apt install ros-noetic-desktop-full
执行 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 是我安装的版本
修改为对应的版本 – melodic – noetic – kinetic
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
执行 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
第一步,打开一个终端测试roscore是否能正常启动,使用ROS必须保证roscore运行:
roscore
第二步,新开启一个终端,执行以下命令:
rosrun turtlesim turtlesim_node
第三步,再开启一个终端,执行以下命令:(鼠标必须聚焦在这个终端,乌龟才会移动)
rosrun turtlesim turtle_teleop_key
通过上下左右键即可实现乌龟的移动
(注意:ROS2中不再需要 roscore 命令)
在Ubuntu 20.04中安装ROS2最新版本Foxy Fitzroy
ROS2基本命令总结
原文地址 :ROS2入门教程——2. Ubuntu20.04安装ROS2 Foxy
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
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'
sudo apt update
sudo apt install ros-foxy-desktop
source /opt/ros/foxy/setup.bash
sudo apt install python3-argcomplete
echo "source /opt/ros/dashing/setup.bash" >> ~/.bashrc
sudo apt install ros-dashing-ros1-bridge
sudo apt install python3-colcon-common-extensions
跑几个例程测试一下:
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker
source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_py listener
sudo apt update
sudo apt install ros-foxy-rmw-connext-cpp # for RTI Connext (requires license agreement)
RMW_IMPLEMENTATION=rmw_connext_cpp
sudo apt remove ros-foxy-* && sudo apt autoremove
ros1 和 ros2的区别
ROS和ROS2.0到底该用哪个呢?
ROS 2最新版Dashing,你尝鲜了么?
为什么 ROS 2.0?
什么是ROS 2.0
安装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
动态参数配置 – Ros高级功能
rostopic pub -h
即可获取对应指令的说明信息
roscore
启动节点管理器
rosrun turtlesim turtlesim_node
{ 命令 包名称 节点名称 } ,启动一个仿真节点
rosrun turtlesim turtle_teleop_key
启动一个键盘控制节点
可视化节点视图 命令 :rqt_graph
命令行所有节点信息 命令 :rosnode
–> rosnode list
–rosnode 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
在当前目录创建一个ROS工程文件夹 mkdir catkin_ws
在 catkin_ws
目录下创建子目录 src
src
目录初始化ROS工程 : catkin_init_workspace
catkin_ws
中 编译整个项目 :catkin_make
build
和 devel
目录catkin_ws
中执行 catkin_make install
install
目录在 src
目录中创建功能包 - 执行 catkin_create_pkg us_pkg roscpp rospy std_msgs
创建一个名为 us_pkg
依赖为 roscpp
rospy
std_msgs
在 catkin_ws
中编译 功能包- 执行 catkin_make
设置工作空间的环境变量 source devel/setup.bash
查看环境变量 echo $ROS_PACKAGE_PATH
在 catkin_ws/src
目录创建功能包 catkin_create_pkg learing_topic roscpp rospy std_msgs geomtry_msgs turtlesim
(配置编译规则)将以下代码复制到 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;
}
在catkin_ws
目录中编译 catkin_make
启动
roscore
启动节点管理器rosrun turtlesim turtlesim_node
{ 命令 包名称 节点名称 } ,启动一个仿真节点rosrun turtlesim turtle_teleop_key
启动一个键盘控制节点rosrun learing_topic velocity_publisher
启动发布者(配置编译规则)将以下代码复制到 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;
}
在catkin_ws
目录中编译 catkin_make
启动
roscore
启动节点管理器
rosrun turtlesim turtlesim_node
{ 命令 包名称 节点名称 } ,启动一个仿真节点