用如下地图复习一下,ROS1主要内容。
分为如下:
- 基础部分
- 命令部分
- 图形化工具部分
- 功能包使用部分
- 功能包编译部分
- 导航部分
- 区域覆盖部分
1. 基础部分
参考一键配置:
ROS1云课→30导航仿真演示_zhangrelay的博客-CSDN博客
ROS1云课→31欢乐卷假期_zhangrelay的博客-CSDN博客
echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
WE+F5FaIKwb72PL4rLi4
=i0tj
-----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc
sudo apt-key add ros.asc
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt update
git clone https://gitcode.net/ZhangRelay/ros_book.git
sudo apt install ros-kinetic-turtlebot-simulator -y
roslaunch turtlebot_stdr turtlebot_in_stdr.launch
新建oztf.sh,然后将上述内容复制到其中。
执行./oztf.sh,完成基础配置。
更换地图并测试:
全部配置好后,效果如下:
STDR
rviz:
2. 命令部分
复习rostopic,rosnode等命令:
shiyanlou:oztf_ws/ $ rostopic list [10:29:13]
/amcl/parameter_descriptions
/amcl/parameter_updates
/amcl_pose
/cmd_vel_mux/active
/cmd_vel_mux/input/navi
/cmd_vel_mux/input/safety_controller
/cmd_vel_mux/input/switch
/cmd_vel_mux/input/teleop
/cmd_vel_mux/parameter_descriptions
/cmd_vel_mux/parameter_updates
/diagnostics
/diagnostics_agg
/diagnostics_toplevel_state
/initialpose
/joint_states
/kobuki_safety_controller/disable
/kobuki_safety_controller/enable
/kobuki_safety_controller/reset
/map
/map_metadata
/map_updates
/mobile_base/commands/velocity
/mobile_base/events/bumper
/mobile_base/events/cliff
/mobile_base/events/wheel_drop
/mobile_base/sensors/bumper_pointcloud
/mobile_base_nodelet_manager/bond
/move_base/DWAPlannerROS/cost_cloud
/move_base/DWAPlannerROS/global_plan
/move_base/DWAPlannerROS/local_plan
/move_base/DWAPlannerROS/parameter_descriptions
/move_base/DWAPlannerROS/parameter_updates
/move_base/DWAPlannerROS/trajectory_cloud
/move_base/NavfnROS/plan
/move_base/cancel
/move_base/current_goal
/move_base/feedback
/move_base/global_costmap/costmap
/move_base/global_costmap/costmap_updates
/move_base/global_costmap/footprint
/move_base/global_costmap/inflation_layer/parameter_descriptions
/move_base/global_costmap/inflation_layer/parameter_updates
/move_base/global_costmap/obstacle_layer/clearing_endpoints
/move_base/global_costmap/obstacle_layer/parameter_descriptions
/move_base/global_costmap/obstacle_layer/parameter_updates
/move_base/global_costmap/parameter_descriptions
/move_base/global_costmap/parameter_updates
/move_base/global_costmap/static_layer/parameter_descriptions
/move_base/global_costmap/static_layer/parameter_updates
/move_base/goal
/move_base/local_costmap/costmap
/move_base/local_costmap/costmap_updates
/move_base/local_costmap/footprint
/move_base/local_costmap/inflation_layer/parameter_descriptions
/move_base/local_costmap/inflation_layer/parameter_updates
/move_base/local_costmap/obstacle_layer/clearing_endpoints
/move_base/local_costmap/obstacle_layer/parameter_descriptions
/move_base/local_costmap/obstacle_layer/parameter_updates
/move_base/local_costmap/parameter_descriptions
/move_base/local_costmap/parameter_updates
/move_base/parameter_descriptions
/move_base/parameter_updates
/move_base/recovery_status
/move_base/result
/move_base/status
/move_base_simple/goal
/navigation_velocity_smoother/parameter_descriptions
/navigation_velocity_smoother/parameter_updates
/navigation_velocity_smoother/raw_cmd_vel
/odom
/particlecloud
/robot0/cmd_vel
/robot0/laser_0
/robot0/odom
/rosout
/rosout_agg
/stdr_server/active_robots
/stdr_server/co2_sources_list
/stdr_server/delete_robot/cancel
/stdr_server/delete_robot/feedback
/stdr_server/delete_robot/goal
/stdr_server/delete_robot/result
/stdr_server/delete_robot/status
/stdr_server/register_robot/cancel
/stdr_server/register_robot/feedback
/stdr_server/register_robot/goal
/stdr_server/register_robot/result
/stdr_server/register_robot/status
/stdr_server/rfid_list
/stdr_server/sound_sources_list
/stdr_server/sources_visualization_markers
/stdr_server/spawn_robot/cancel
/stdr_server/spawn_robot/feedback
/stdr_server/spawn_robot/goal
/stdr_server/spawn_robot/result
/stdr_server/spawn_robot/status
/stdr_server/thermal_sources_list
/tf
/tf_static
shiyanlou:oztf_ws/ $
3.图形化工具部分
使用rqt工具让机器人原地旋转:
<arg name="initial_pose_x" default="1.0"/>
<arg name="initial_pose_y" default="1.0"/>
可以使用图形化工具遥控机器人到任意位置。
位置:
使用rostopic echo 查看:
pose:
pose:
position:
x: 0.72986361147
y: 2.60749052303
z: 0.0
orientation:
x: 0.0
y: -0.0
z: -0.76345417549
w: -0.645861999135
数据保持一致。
4.功能包使用部分
安装官方功能包使用:
sudo apt install ros-xxx-xxx-xxx
官方功能包参考路径:
shiyanlou:oztf_ws/ $ roscd turtlebot_stdr/ [10:51:18]
shiyanlou:turtlebot_stdr/ $ pwd [10:51:26]
/opt/ros/kinetic/share/turtlebot_stdr
shiyanlou:turtlebot_stdr/ $ [10:51:28]
5.功能包编译部分
使用源码可以自定义功能包,完成后,需要使用catkin_make编译。
使用自定义功能包,需要source。
source /home/shiyanlou/Code/oztf_ws/devel/setup.zsh
export TURTLEBOT_STDR_MAP_FILE=/home/shiyanlou/Code/oztf_ws/src/turtlebot_stdr/maps/oztf.yaml
roslaunch turtlebot_stdr turtlebot_in_stdr.launch
默认通常为官方路径功能包。
6. 导航
ROS1云课-导航实践测评_zhangrelay的博客-CSDN博客
手工换自动,指哪里,机器人自动运行到哪里。
使用rqt查看:
进一步可以扩展巡逻,定点巡航等。
案例参考:
为了更好地保障仓库货物的安全,降低企业的运行成本,提高企业生产效率及产品质量,项目小组设计了一款基于ROS系统的仓库巡逻机器人,并对该仓库巡逻机器人进行了实验测试。实验测试结果表明:该机器人可以通过激光雷达进行地图构建和自主巡逻;通过报警系统与自身定位完成对仓库内的异常情况进行反馈和报警等相关任务;实现了自主导航、自主定位、报警和巡逻功能,具有可二次开发、成本低等优点。
针对室内大型场所的三防自动化困难问题,设计了一款室内安防巡逻与灭火多功能机器人,具有电子地图构建、定位、导航、事故处理与远程监控等功能。给出了该机器人总体组成与控制系统软硬件架构,并对机器人核心的电子地图自主构建功能做了实验测试。试验结果表明,该机器人可以自主构建出现实环境的电子地图,保证定位与导航功能的实现基础。
7. 区域覆盖部分
溯螺旋算法(BSA)是一种基于使用螺旋填充路径的移动机器人覆盖策略;为了保证完整性,未访问区域被标记并被回溯机制覆盖。BSA基本算法被设计成在由粗粒度网格模拟的环境中工作。BSA已经扩展到不仅包括自由栅格,而且包括部分被占据的栅格。本文介绍了扩展BSA的概念和算法。用于扩展BSA的思想是通用的,因此类似的方法可以用于扩展大多数基于网格的覆盖算法。最后,给出了一些仿真结果,表明BSA能够实现完全覆盖。
BSA算法不仅考虑了完备性概念,而且评估了有效覆盖率,能够实现可达表面的完全覆盖。即使扩展的BSA更复杂,它仍然易于实现,只需添加一些反应性规则来调用和实现沿墙过程。