$ sudosh -c 'echo "deb http;/packages.ros.org/ros/ubuntu $(sb_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-melodic-desktop-full
$ sudo rosdep init$ rosdep update
$ echo "source /opt/ros/melodic/setup.bash" >>~/.bashrc
$ source ~/.bashrc
$ sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
$ roscore
这个是用来启动ROS Master ,ROS Master是ros里面所有节点的管理器,也是运行之后系统当中必须要首先运行的一个指令。
启动小海龟仿真器
$ rosrun turtlesim turtlesim_node
启动海龟控制节点
$ rosrun turtlesim turtle_teleop_key
(1)qt_graph:是一个用来显示系统计算图的工具。有两个椭圆形的节点,一个turtlesim是仿真器节点,teleop_turtle是键盘控制节点,两个节点之间必然会存在一定的数据通讯,turtle1/cmd_vel这个话题里面的具体数据内容就是我们这个速度指令的内容,海龟是由两个节点和节点之间的话题组成。
(2)rosnode是用来显示系统当中所有节点相关信息的一个指令。
$ rosnode list:用来把所有系统当中的节点都列出来。
rosout在服务器里面没有体现,是在ros环境里面默认只要启动ros go就会启动这个话题,这个话题主要采集我们ros里面得所有节点的日志信息,然后用来提交给上面的界面做显示的,这是ros默认的话题。
$ rosnode info:查看某一结点具体信息是什么
(3) rostopic:这是跟话题相关的一个命令行工具
$ rostopic pub:发布话题消息,摁Tab键自动补全
前面一段是话题名,后面那段twist是发布指令的一个数据的内容/消息结构,双引号里的内容是消息数据里面的结构数据(线速度,角速度)。-r:频率,就是以多少的频率去发布这个话题的消息数据内容。z轴:是垂直仿真器,向屏幕向外的,海龟的旋转都是围绕z轴的。
(4) rosmsg show:显示哪一个消息
(5) rosservice:服务相关的命令行
发布服务请求:
$ rosservice call /spawn "x: 5.0
y: 5.0
theta: 0.0
name: 'turtle2"
name: 'turtle2" //反馈信息,turtle2已经生成成功
(6)rosbag record -a-O cmd_record:话题记录,记录现在所有的数据,-a就是把所有的数据都保存下来,-O把所有数据保存在压缩包,cmd_record是压缩包的名字
$ rosbag play cmd_record.bag:话题复现
src:代码空间(Source Space)
build: 编译空间 (Build Space)
devel: 开发空间 (Development Space)
install: 安装空间 (Install Space)
1.创建工作空间
$ mkdir-p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace //把当前文件夹初始化,变成ros_workpase
2.编译工作空间
$ cd ~/catkin_ws/
$ catkin_make //编译src下面所有功能包的源码
$ catkin_make install //会产生install这个安装空间
一个工作空间里面会有四个文件夹。src放后面功能包的源码,install是安装空间,里面会放置我们最终编译生成的可执行文件,devel是放置在开发过程中的一些可执行文件,和install类似,install是开发后分享或者发布给客户使用的一个结构文件,build是在编译过程中的一些中间文件,基本上用不到
3.设置环境变量
$ source devel/setup.bash
4.检查环境变量
$ echo $ ROS_PACKAGE_PATH //通过ROS_PACKAGE_PATH这个环境变量来查找所有ros功能包的路径
5.创建功能包:$ catkin_create_pkg
功能包是放置ros源码的一个最小单元,所有源码必须全部放在功能包里面,不能直接放在src下面编译。
创建功能包
$ cd ~/catkin_ws/src
$ catkin_create_pkg test_pkg std_msgs rospy roscpp
编译功能包
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash //只有设置了功能空间的这个setup.bash之后,ROS_PACKAGE_PATH这个里面才会包含工作空间的路径,才能找到写的功能包
只要把功能包放在src里面,就可以通过环境变量找到这个功能包。$ source ~/catkin_ws/devel/setup.bash 这个环境变量的设置是非常重要的。
注意:同一个工作空间下,不允许存在同名功能包。不同工作空间下,允许存在同名功能包。
任何一个功能包都必须存在下面两种文件。package.xml文件是通过xml这种语言去描述的一些跟功能包相关的信息(功能包的名字、版本号、描述等)。还有我们编译运行这个功能包时所依赖的一些其他第三方的功能包,这些信息如果在$ catkin_create_pkg这时没有全部添加好的话,在这里还可以进行扩展,手动添加。CMakeLists.txt这个文件是用来描述功能包里面的编译规则。