用如下地图复习一下,ROS1主要内容。
分为如下:
- 基础部分
- 命令部分
- 图形化工具部分
- 功能包使用部分
- 功能包编译部分
- 导航部分
- 区域覆盖部分
1. 基础部分
参考一键配置:
ROS1云课→30导航仿真演示_zhangrelay的博客-CSDN博客
ROS1云课→31欢乐卷假期_zhangrelay的博客-CSDN博客
代码语言:javascript复制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等命令:
代码语言:javascript复制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
官方功能包参考路径:
代码语言:javascript复制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。
代码语言:javascript复制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. 区域覆盖部分
参考:
ROS1云课→32愉快大扫除_zhangrelay的博客-CSDN博客
溯螺旋算法(BSA)是一种基于使用螺旋填充路径的移动机器人覆盖策略;为了保证完整性,未访问区域被标记并被回溯机制覆盖。BSA基本算法被设计成在由粗粒度网格模拟的环境中工作。BSA已经扩展到不仅包括自由栅格,而且包括部分被占据的栅格。本文介绍了扩展BSA的概念和算法。用于扩展BSA的思想是通用的,因此类似的方法可以用于扩展大多数基于网格的覆盖算法。最后,给出了一些仿真结果,表明BSA能够实现完全覆盖。
BSA算法不仅考虑了完备性概念,而且评估了有效覆盖率,能够实现可达表面的完全覆盖。即使扩展的BSA更复杂,它仍然易于实现,只需添加一些反应性规则来调用和实现沿墙过程。