1.构建工作空间
1.初始空间
mkdir -p catkin_ws(自定义)/src(必须的)
cd catkin_ws# (进入工作空间)
catkin_make(编译工作空间)#必须在catkin_ws下才可以编译其他会失败
source ~/catkin_ws/devel/setup.bash #告诉系统编译文件的位置才可以继续
echo source ~/catkin_ws/devel/setup.bash >> ~/.bashrc #让每个终端都可以使用,可以vim /.bashrc文件查看
2.创建包
zocean@zocean-System-Product-Name:~/catkin_ws/src$ catkin_create_pkg test1 (创建新的package)
zocean@zocean-System-Product-Name:~/catkin_ws/src$ catkin_create_pkg test2 roscpp rospy std_msgs nav_msgs #上面一行其实不标准,要加上相应的依赖包
3.下载别人的包
git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git #路径实在src下
zocean@zocean-System-Product-Name:~/catkin_ws$ rosdep install --from-paths src --ignore-src --rosdistro=melodic -y (下载包需要的依赖项)
source ~/catkin_ws/devel/setup.bash #告诉系统编译文件的位置才可以继续
echo source ~/catkin_ws/devel/setup.bash >> ~/.bashrc #让每个终端都可以使用,可以vim /.bashrc文件查看
roslaunch robot_sim_demo robot_spawn.launch #启动下载的仿真
rostopic list #查看当前有多少topic /换成node一样可以用
rostopic info /camera/rgb/image_raw #上一步后查看该topic信息
#上一步可以查看信息,相同类型可以用同一node接收
zocean@zocean-System-Product-Name:~$ rostopic info /camera/rgb/image_raw
rosrun image_view #启动该节点后按tab,而不是enter
rosrun image_view image_view image:=/camera/rgb/image_raw #用image_view 来接收该topic
Package构成
1.组织形式
前两个是package文件的自我描述,中间三个是源代码所在的位置,后面两个是通信方式。
2.常用的指令
roscore
rosnode list
rosnode info /cmd_vel_mux
rosrun robot_sim_demo robot_keyboard_teleop.py
rosrun image_view image_view image:=/camera/depth/image_raw __ns:=depth #解决ros重名问题 __ns:=name
rosrun image_view image_view image:=/camera/rgb/image_raw __ns:=rgb #不解决会报错
2.service
- 功能:实现异步通信,请求响应模式
值得注意的是,若长时间得不到应答就会产生阻塞 - 数据结构-srv
上面是请求的布尔类型,下面是返回的数组,其中嵌套了msg的结构体
注:srv只能使用msg类型进行嵌套,此外一旦自定义了msg或者srv就要修改如下文件中的内容,其中内容固定
- 命令
- paramater service
注:其中dump 和 load命令指定的文件格式必须是左边这样
除此之外还可以通过launch文件修改字典
注: 1:使用py脚本执行后面的robot.xacro文件得到的结果赋值给前面的键值
2:相当于 rosparam load +yaml文件
- 操作
rosservice list
rosservice info /gazebo/delete_light #可以查看到类型也就是srv
rossrv info gazebo_msgs/DeleteLight #查看该srv定义的格式
rosservice call /gazebo/delete_light "light_name: 'sun'" #
success: True
status_message: "DeleteLight: sun successfully deleted"
rosparam list
rosparam dump test1.yaml #将所有参数加载到一个文件中,这个用法比较常见可以把常用的算法参数写到一个文件中方便修改
3.Action
- 功能
解决了service模型中长时间得不到反馈的问题 - 格式-.action文件
3部分组成
4.rosbag
-
功能:实现数据的记录和回放
-
命令
-
代码实现
1.关闭robot_sim_demo
2.启动roscore
3.rosbag paly /camera/rgb/image_raw
4.rosrun image_view image_view image:=/camera/rgb/image_raw
5.ros library
这里面最重要的就是ros::NodeHandle
注:1.NodeHandle 是一个类
2.发布消息时需要以上3步完成
1. topic_demo
文件书写步骤-实例演示核心步骤
1.头文件固定
2.创建句柄NH,实例化对象pub,发布消息msg
- service_demo
最后要修改xml,cmakelist文件
随用随查
2.rospy
随用随查
过程大同小异
- topic_demo
- service_demo