文章目录
一ROS的介绍
1ros的介绍
1ROS(机器人操作系统,Robot Operating System),是专门为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。
(更多内容请参考百度百科)
二ROS的安装及小海龟的的运动
1安装
1添加ros软件源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
(来源于中科大)
2添加相应密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
(可以沿用网上其他博客的,也可以自己去申请一个)
3安装ros
sudo apt update
sudo apt-get install ros-melodic-desktop-full
(注意不同版本的ubuntu安装的ros的版本也不同)
4初始化rosdep
sudo rosdep init
rosdep update
(如果出现找不到命令的错误输入sudo apt install python-rosdep)
5设置环境变量
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
(这个步骤是让 bash终端 以后可以识别 roscore,rosrun等命令)
6安装rosinstall
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
(这些组件可以构建和管理开发者自己的ROS工作空间。)
2小海龟
(下面三个步骤分别需要打开不同的终端)
1启动ROS Master
roscore
2启动小海龟仿真器
rosrun turtlesim turtlesim_node
3启动海龟控制节点
rosrun turtlesim turtle_teleop_key
3查看node之间的话题
1查看节点信息
rosnode list
rosnode info /turtlesim
2查看话题
rostopic list
3监听话题内容
rostopic echo /turtle1/cmd_vel
三用C++写一个程序,控制小海龟走一个标准的圆形
1创建工作空间
1创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
2编译工作空间
cd ~/catkin_ws
catkin_make
3编译工作空间
source devel/setup.bash
4检查环境变量
echo $ROS_PACKAGE_PATH
2创建ROS功能包
1创建功能包
cd ~/catkin_ws/src
catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs
2编译功能包
cd ~/catkin_ws
catkin_make
source devel/setup.bash
3代码
在位置~/catkin_ws/src/learning_topic/src/下创建publisher.cpp文件
#include <sstream>
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "geometry_msgs/Twist.h"
int main(int argc, char **argv)
{
//初始化节点
ros::init(argc, argv, "publisher");
//创建节点句柄
ros::NodeHandle n;
//创建publisher,发布话题[/turtle1/cmd_vel],消息类型[geometry_msgs::Twist]
ros::Publisher chatter_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);
//设置循环频率
ros::Rate loop_rate(100);
while (ros::ok())
{
//定义发布的数据
geometry_msgs::Twist msg;
//定义linear数据
geometry_msgs::Vector3 linear;
linear.x=1;
linear.y=0;
linear.z=0;
//定义angular数据
geometry_msgs::Vector3 angular;
angular.x=0;
angular.y=0;
angular.z=1;
msg.linear=linear;
msg.angular=angular;
//发布msg数据
chatter_pub.publish(msg);
//循环等待回调函数
ros::spinOnce();
//按照循环频率延时
loop_rate.sleep();
}
return 0;
}
4添加编译选项
Python在ubuntu是可以直接执行的脚本语言,而C++是编译语言,在执行之前需要经过编译过程,因此在编译工作空间之前需要配置文件。
cd ~/catkin_ws/src/learning_topic
gedit CMakeLists.txt
在打开的文件末尾加上以下代码
add_executable(publisher src/publisher.cpp)
target_link_libraries(publisher ${catkin_LIBRARIES})
保存并推出,在输入以下命令
cd ~/catkin_ws
catkin_make
5启动小海龟并实现控制
1打开新终端
roscore
2再打开一个新终端
rosrun turtlesim turtlesim_node
3下面这一步是为了保证rosrun命令能够找到相应的功能包
source ~/catkin_ws/devel/setup.bash
rosrun learning_topic publisher
tkin_make
##### 5启动小海龟并实现控制
1打开新终端
~~~c
roscore
2再打开一个新终端
rosrun turtlesim turtlesim_node
3下面这一步是为了保证rosrun命令能够找到相应的功能包
source ~/catkin_ws/devel/setup.bash
rosrun learning_topic publisher