Ros学习

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

  1. 功能:实现异步通信,请求响应模式
    在这里插入图片描述
    值得注意的是,若长时间得不到应答就会产生阻塞
  2. 数据结构-srv
    在这里插入图片描述上面是请求的布尔类型,下面是返回的数组,其中嵌套了msg的结构体
    注:srv只能使用msg类型进行嵌套,此外一旦自定义了msg或者srv就要修改如下文件中的内容,其中内容固定
    在这里插入图片描述
  3. 命令
  4. paramater service
    字典

    注:其中dump 和 load命令指定的文件格式必须是左边这样

除此之外还可以通过launch文件修改字典
在这里插入图片描述注: 1:使用py脚本执行后面的robot.xacro文件得到的结果赋值给前面的键值
2:相当于 rosparam load +yaml文件

  1. 操作
 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

  1. 功能
    解决了service模型中长时间得不到反馈的问题解决了service模型中长时间得不到反馈的问题
  2. 格式-.action文件
    3部分组成在这里插入图片描述

4.rosbag

  1. 功能:实现数据的记录和回放

  2. 命令在这里插入图片描述

  3. 代码实现

 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

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  1. service_demo
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述最后要修改xml,cmakelist文件

在这里插入图片描述随用随查

2.rospy

随用随查
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述过程大同小异

  1. topic_demo

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. service_demo
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值