通信架构
一、master
每个node启动时都要向master注册,管理node之间通信。
通过roscore启动,同时会启动rosout(日志输出)和parameter server(参数服务器)
二、node
ROS的进程;一个node(静态)就是一个进程。
pkg里的可执行文件(动态)运行的实例。
通过rosrun启动,$ rosrun [pkg_name] [node_name]
-list 列出当前运动的node信息;
-info [node_name]:显示某个node的详细信息;
-kill rosnode kill [node_name]
roslaunch:启动master和多个node
$ roslaunch [pkg_name] [file_name.launch] ; 可以自动master ; [file_name.launch]定义了启动规则,放在/pkg/launch/~launch*中
三、rosrun运行模型并操纵
ERROR:通过roslaunch运行Gazebo时只有地板:
git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git
之后默认是在master分支上,要手动调整分支到melodic下。具体操作方法我看老师提到但是没有具体指引,下面附上解决方式供参考。
$ git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git
$ cd ~/path/catkin_ws/src/ROS-Academy-for-Beginners
$ git branch -r
$ git checkout origin/melodic
$ git checkout -b origin/melodic
$ cd ~/path/catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro=melodic -y
$ source ~/2020.4.4/ros3/catkin_ws/devel/setup.bash
$ roslaunch robot_sim_demo robot_spawn.launch//启动gazebo
这样成功解决!
NODES
/
cmd_vel_mux (nodelet/nodelet)//速度选择
gazebo (gazebo_ros/gzserver)//后端
gazebo_gui (gazebo_ros/gzclient)//前端展示
mobile_base_nodelet_manager (nodelet/nodelet)//控制底盘运动
urdf_spawner (gazebo_ros/spawn_model)//机器人自身结构
/xbot/
robot_state_publisher (robot_state_publisher/robot_state_publisher)//获取机器人状态信息
spawner (controller_manager/spawner)//启动模型
(2)rosrun robot_sim_demo robot_keyboard_teleop.py
唤出操纵键盘,注意置顶是在此命令的终端上。
(3)唤出摄像头 rosrun image_view
ERROR
Usage: rosrun [--prefix cmd] [--debug] PACKAGE EXECUTABLE [ARGS]
rosrun will locate PACKAGE and try to find
an executable named EXECUTABLE in the PACKAGE tree.
If it finds it, it will run it with ARGS.
通过此命令解决
sudo apt-get install ros-melodic-image-view
再
rosrun image_view image_view image:=/camera/rgb/image_raw
即成功
四、通信方式
1、Topic
特点:
(1)异步通信方式
(2)node间通过publish-subscribe机制通信
nodeA --(publish)–> /Topic (是一个string也就是一个频道) --(publish)–> nodeB
2、Message(类,结构体;发布的内容就是对象)
(1)topic内容的数据类型
(2)定义在*.msg文件中(pkg/msg/*.msg)常用命令
①查看topic中详细信息:$ rostopic echo /cmd_vel
②查看msg的内容:$ rosmsg show +数据类型
③-pub 用法:不用改源程序,通过在话题的发布中改变一些参数的值,然后用subscriber接收
rostopic pub +话题名+话题类型+需要改的参数以及值
注意:topic地址要加斜杠