第九课,ROS仿真1

网友投稿 613 2022-11-29

第九课,ROS仿真1

第九课,ROS仿真1

---恢复内容开始---

1、stage simulator

它是一个轻量级的仿真软件,它的包名称是stage_ros,可以进入看看,其包含地图在子目录world下,

启动之:

rosrun stage_ros stageros 'rospack find stage_ros'/world/willow-four-erratics-...world

可以查看它发布的主题有哪些,通过rostopic list;

下面查看一下地图的格式:cat willow.erratic.world

其实在world文件中包含下面几个模块

下面是每一个模型详细的说明:

下面通过订阅和发布的主题来了解一下该如何使用这款仿真软件

控制机器人的运动

首先要安装sudo apt-get install ros-indigo-teleop-twist-keyboard

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

简单的保存gmapping以及保存map

下面运行gmapping包下面的slam_gmapping,然后scan订阅的主题是base_scan。

rosrun gmapping slam_gmapping scan:=base_scan

下面语句为保存地图

rosrun map_server map_saver

下面来看一下激光雷达的应用:障碍物的检测

假设激光雷达的测量范围是270度,上面的橘黄线表示x轴,绿线表示的是y轴,以-135度即range[0]作为起始,把它作为储存距离信息的第一个数,range[1080]作为最后一个。

下面是它的sensor_msgs/LaserScan.msg里面的相关信息,

std_msgs/Header header

float32 angle_min->-135度

float32 angle_max->+135度

float32 angle_increment->指的角度的分辨率,指扫一次角度的变换,为0.25度;

float32 time_increment可以理解为扫一步所花费的时间

float32 scan_time扫面的时间

float32 range_min扫描的最小距离

float32 range_max扫描的最长距离

float32[] ranges储存的是距离的信息

float32[] intensities如果前面有一块玻璃那么强度为1,如果完全为吸收掉则强度为0.

下面用stage_ros来做避障

在讲避障之前,看一下它的tf变换

运行该节点,且在rviz当中来看其变换

rosrun stage_ros stageros 'rospack find stage_ros'/world/willow-four-erratics-...world

rosrun rviz rviz

将fixed frame选择为odom

然后添加一个地图

以及

下面写一个避障的程序,碰到障碍物停下来,订阅主题为/turtlesim/cmd_vel

1、创建一个包

catkin_create_pkg my_stage roscpp std_msgs

2、编译catkin_make

3、源文件名:my_stage.cpp

下面进入CMakeLists.txt文件里面去修改add_executable(my_stage src/my_stage.cpp)

target_Link_libraries(my_stage ${catkin_LIBRARIES})

下面去编译

catkin_make;

下面去启动stage仿真器

rosrun stage_ros stageros `rospack find stage_ros`/world/willow-erratic.world

运行之:

rosrun my_stage my_stage

它是一直往前走直到遇到障碍物之后就停止下来。

---恢复内容结束---

1、stage simulator

它是一个轻量级的仿真软件,它的包名称是stage_ros,可以进入看看,其包含地图在子目录world下,

启动之:

rosrun stage_ros stageros 'rospack find stage_ros'/world/willow-four-erratics-...world

可以查看它发布的主题有哪些,通过rostopic list;

下面查看一下地图的格式:cat willow.erratic.world

其实在world文件中包含下面几个模块

下面是每一个模型详细的说明:

下面通过订阅和发布的主题来了解一下该如何使用这款仿真软件

控制机器人的运动

首先要安装sudo apt-get install ros-indigo-teleop-twist-keyboard

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

简单的保存gmapping以及保存map

下面运行gmapping包下面的slam_gmapping,然后scan订阅的主题是base_scan。

rosrun gmapping slam_gmapping scan:=base_scan

下面语句为保存地图

rosrun map_server map_saver

下面来看一下激光雷达的应用:障碍物的检测

假设激光雷达的测量范围是270度,上面的橘黄线表示x轴,绿线表示的是y轴,以-135度即range[0]作为起始,把它作为储存距离信息的第一个数,range[1080]作为最后一个。

下面是它的sensor_msgs/LaserScan.msg里面的相关信息,

std_msgs/Header header

float32 angle_min->-135度

float32 angle_max->+135度

float32 angle_increment->指的角度的分辨率,指扫一次角度的变换,为0.25度;

float32 time_increment可以理解为扫一步所花费的时间

float32 scan_time扫面的时间

float32 range_min扫描的最小距离

float32 range_max扫描的最长距离

float32[] ranges储存的是距离的信息

float32[] intensities如果前面有一块玻璃那么强度为1,如果完全为吸收掉则强度为0.

下面用stage_ros来做避障

在讲避障之前,看一下它的tf变换

运行该节点,且在rviz当中来看其变换

rosrun stage_ros stageros 'rospack find stage_ros'/world/willow-four-erratics-...world

rosrun rviz rviz

将fixed frame选择为odom

然后添加一个地图

以及

下面写一个避障的程序,碰到障碍物停下来,订阅主题为/turtlesim/cmd_vel

1、创建一个包

catkin_create_pkg my_stage roscpp std_msgs

2、编译catkin_make

3、源文件名:my_stage.cpp

下面进入CMakeLists.txt文件里面去修改add_executable(my_stage src/my_stage.cpp)

target_Link_libraries(my_stage ${catkin_LIBRARIES})

下面去编译

catkin_make;

下面去启动stage仿真器

rosrun stage_ros stageros `rospack find stage_ros`/world/willow-erratic.world

运行之:

rosrun my_stage my_stage

它是一直往前走直到遇到障碍物之后就停止下来。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:2.2开源的魅力:编译opencv源代码
下一篇:第十九课 pluginlib&Nodelet
相关文章

 发表评论

暂时没有评论,来抢沙发吧~